arm-qnx-nto patch
Graeme Peterson
gp@qnx.com
Thu Jul 25 16:44:00 GMT 2002
Hi, all.
Here is a first run at a patch to support arm-qnx-nto.
- I edited the Makefile.in's and configure.in's as opposed
to running 'make dep-am'
- No Changelog yet
I am looking for feedback on my changes first, thanks.
Cheers.
GP
-------------- next part --------------
diff -rc3p -N src.orig/bfd/Makefile.am src/bfd/Makefile.am
*** src.orig/bfd/Makefile.am Wed Jul 17 13:53:28 2002
--- src/bfd/Makefile.am Thu Jul 25 16:32:32 2002
*************** BFD32_BACKENDS = \
*** 200,205 ****
--- 200,206 ----
elf32-arc.lo \
elfarm-oabi.lo \
elfarm-nabi.lo \
+ elfarmqnx-nabi.lo \
elf32-avr.lo \
elf32-cris.lo \
elf32-d10v.lo \
*************** BFD32_BACKENDS_CFILES = \
*** 358,363 ****
--- 359,365 ----
elf32-arc.c \
elfarm-oabi.c \
elfarm-nabi.c \
+ elfarmqnx-nabi.c \
elf32-avr.c \
elf32-cris.c \
elf32-d10v.c \
*************** elfarm-oabi.lo: elfarm-oabi.c $(INCDIR)/
*** 1093,1098 ****
--- 1095,1104 ----
$(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h \
elf32-arm.h elf32-target.h
elfarm-nabi.lo: elfarm-nabi.c $(INCDIR)/elf/arm.h $(INCDIR)/elf/reloc-macros.h \
+ $(INCDIR)/filenames.h elf-bfd.h $(INCDIR)/elf/common.h \
+ $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h \
+ elf32-arm.h elf32-target.h
+ elfarmqnx-nabi.lo: elfarmqnx-nabi.c $(INCDIR)/elf/arm.h $(INCDIR)/elf/reloc-macros.h \
$(INCDIR)/filenames.h elf-bfd.h $(INCDIR)/elf/common.h \
$(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h \
elf32-arm.h elf32-target.h
diff -rc3p -N src.orig/bfd/Makefile.in src/bfd/Makefile.in
*** src.orig/bfd/Makefile.in Wed Jul 17 13:53:28 2002
--- src/bfd/Makefile.in Thu Jul 25 16:36:55 2002
*************** BFD32_BACKENDS = \
*** 328,333 ****
--- 328,334 ----
elf32-arc.lo \
elfarm-oabi.lo \
elfarm-nabi.lo \
+ elfarmqnx-nabi.lo \
elf32-avr.lo \
elf32-cris.lo \
elf32-d10v.lo \
*************** BFD32_BACKENDS_CFILES = \
*** 487,492 ****
--- 488,494 ----
elf32-arc.c \
elfarm-oabi.c \
elfarm-nabi.c \
+ elfarmqnx-nabi.c \
elf32-avr.c \
elf32-cris.c \
elf32-d10v.c \
*************** elfarm-oabi.lo: elfarm-oabi.c $(INCDIR)/
*** 1623,1628 ****
--- 1625,1634 ----
$(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h \
elf32-arm.h elf32-target.h
elfarm-nabi.lo: elfarm-nabi.c $(INCDIR)/elf/arm.h $(INCDIR)/elf/reloc-macros.h \
+ $(INCDIR)/filenames.h elf-bfd.h $(INCDIR)/elf/common.h \
+ $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h \
+ elf32-arm.h elf32-target.h
+ elfarmqnx-nabi.lo: elfarmqnx-nabi.c $(INCDIR)/elf/arm.h $(INCDIR)/elf/reloc-macros.h \
$(INCDIR)/filenames.h elf-bfd.h $(INCDIR)/elf/common.h \
$(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h \
elf32-arm.h elf32-target.h
diff -rc3p -N src.orig/bfd/config.bfd src/bfd/config.bfd
*** src.orig/bfd/config.bfd Wed Jul 17 10:15:49 2002
--- src/bfd/config.bfd Thu Jul 25 17:03:45 2002
*************** case "${targ}" in
*** 128,133 ****
--- 128,137 ----
targ_selvecs="bfd_elf32_littlearm_vec bfd_elf32_bigarm_vec"
targ_underscore=yes
;;
+ arm-*-nto* | nto*arm*)
+ targ_defvec=bfd_elf32_littlearmqnx_vec
+ targ_selvecs=bfd_elf32_bigarmqnx_vec
+ ;;
arm-*-riscix*)
targ_defvec=riscix_vec
;;
diff -rc3p -N src.orig/bfd/configure src/bfd/configure
*** src.orig/bfd/configure Wed Jul 17 10:15:49 2002
--- src/bfd/configure Thu Jul 25 17:05:09 2002
*************** do
*** 6063,6068 ****
--- 6063,6069 ----
bfd_elf32_bigarc_vec) tb="$tb elf32-arc.lo elf32.lo $elf" ;;
bfd_elf32_bigarm_oabi_vec) tb="$tb elfarm-oabi.lo elf32.lo $elf" ;;
bfd_elf32_bigarm_vec) tb="$tb elfarm-nabi.lo elf32.lo $elf" ;;
+ bfd_elf32_bigarmqnx_vec) tb="$tb elfarmqnx-nabi.lo elf32.lo $elf" ;;
bfd_elf32_bigmips_vec) tb="$tb elf32-mips.lo elfxx-mips.lo elf32.lo $elf ecofflink.lo" ;;
bfd_elf32_cris_vec) tb="$tb elf32-cris.lo elf32.lo $elf" ;;
bfd_elf32_d10v_vec) tb="$tb elf32-d10v.lo elf32.lo $elf" ;;
*************** do
*** 6086,6091 ****
--- 6087,6093 ----
bfd_elf32_littlearc_vec) tb="$tb elf32-arc.lo elf32.lo $elf" ;;
bfd_elf32_littlearm_oabi_vec) tb="$tb elfarm-oabi.lo elf32.lo $elf" ;;
bfd_elf32_littlearm_vec) tb="$tb elfarm-nabi.lo elf32.lo $elf" ;;
+ bfd_elf32_littlearmqnx_vec) tb="$tb elfarmqnx-nabi.lo elf32.lo $elf" ;;
bfd_elf32_littlemips_vec) tb="$tb elf32-mips.lo elfxx-mips.lo elf32.lo $elf ecofflink.lo" ;;
bfd_elf32_m32r_vec) tb="$tb elf32-m32r.lo elf32.lo $elf" ;;
bfd_elf32_m68hc11_vec) tb="$tb elf32-m68hc11.lo elf32.lo $elf" ;;
diff -rc3p -N src.orig/bfd/configure.in src/bfd/configure.in
*** src.orig/bfd/configure.in Wed Jul 17 10:15:49 2002
--- src/bfd/configure.in Thu Jul 25 17:11:14 2002
*************** do
*** 564,569 ****
--- 564,570 ----
bfd_elf32_bigarc_vec) tb="$tb elf32-arc.lo elf32.lo $elf" ;;
bfd_elf32_bigarm_oabi_vec) tb="$tb elfarm-oabi.lo elf32.lo $elf" ;;
bfd_elf32_bigarm_vec) tb="$tb elfarm-nabi.lo elf32.lo $elf" ;;
+ bfd_elf32_bigarmqnx_vec) tb="$tb elfarmqnx-nabi.lo elf32.lo $elf" ;;
bfd_elf32_bigmips_vec) tb="$tb elf32-mips.lo elfxx-mips.lo elf32.lo $elf ecofflink.lo" ;;
bfd_elf32_cris_vec) tb="$tb elf32-cris.lo elf32.lo $elf" ;;
bfd_elf32_d10v_vec) tb="$tb elf32-d10v.lo elf32.lo $elf" ;;
*************** do
*** 587,592 ****
--- 588,594 ----
bfd_elf32_littlearc_vec) tb="$tb elf32-arc.lo elf32.lo $elf" ;;
bfd_elf32_littlearm_oabi_vec) tb="$tb elfarm-oabi.lo elf32.lo $elf" ;;
bfd_elf32_littlearm_vec) tb="$tb elfarm-nabi.lo elf32.lo $elf" ;;
+ bfd_elf32_littlearmqnx_vec) tb="$tb elfarmqnx-nabi.lo elf32.lo $elf" ;;
bfd_elf32_littlemips_vec) tb="$tb elf32-mips.lo elfxx-mips.lo elf32.lo $elf ecofflink.lo" ;;
bfd_elf32_m32r_vec) tb="$tb elf32-m32r.lo elf32.lo $elf" ;;
bfd_elf32_m68hc11_vec) tb="$tb elf32-m68hc11.lo elf32.lo $elf" ;;
diff -rc3p -N src.orig/bfd/elf32-arm.h src/bfd/elf32-arm.h
*** src.orig/bfd/elf32-arm.h Sun Jul 7 05:10:40 2002
--- src/bfd/elf32-arm.h Thu Jul 25 18:02:26 2002
*************** elf32_arm_reloc_type_class (rela)
*** 3609,3615 ****
#define ELF_ARCH bfd_arch_arm
#define ELF_MACHINE_CODE EM_ARM
! #define ELF_MAXPAGESIZE 0x8000
#define bfd_elf32_bfd_copy_private_bfd_data elf32_arm_copy_private_bfd_data
#define bfd_elf32_bfd_merge_private_bfd_data elf32_arm_merge_private_bfd_data
--- 3609,3617 ----
#define ELF_ARCH bfd_arch_arm
#define ELF_MACHINE_CODE EM_ARM
! #ifndef ELF_MAXPAGESIZE
! #define ELF_MAXPAGESIZE 0x8000
! #endif
#define bfd_elf32_bfd_copy_private_bfd_data elf32_arm_copy_private_bfd_data
#define bfd_elf32_bfd_merge_private_bfd_data elf32_arm_merge_private_bfd_data
diff -rc3p -N src.orig/bfd/elfarm-nabi.c src/bfd/elfarm-nabi.c
*** src.orig/bfd/elfarm-nabi.c Wed Apr 10 12:45:31 2002
--- src/bfd/elfarm-nabi.c Thu Jul 25 17:08:49 2002
*************** elf32_arm_nabi_grok_psinfo (abfd, note)
*** 749,752 ****
--- 749,754 ----
#define elf_backend_grok_prstatus elf32_arm_nabi_grok_prstatus
#define elf_backend_grok_psinfo elf32_arm_nabi_grok_psinfo
+ #ifndef ELFARM_NABI_C_INCLUDED
#include "elf32-arm.h"
+ #endif
diff -rc3p -N src.orig/bfd/elfarmqnx-nabi.c src/bfd/elfarmqnx-nabi.c
*** src.orig/bfd/elfarmqnx-nabi.c Wed Dec 31 19:00:00 1969
--- src/bfd/elfarmqnx-nabi.c Thu Jul 25 17:51:27 2002
***************
*** 0 ****
--- 1,33 ----
+ /* 32-bit ELF support for ARM new abi option, for QNX.
+ Copyright 2002 Free Software Foundation, Inc.
+
+ This file is part of BFD, the Binary File Descriptor library.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
+
+ #define ELFARM_NABI_C_INCLUDED
+ #include "elfarm-nabi.c"
+
+ #undef TARGET_LITTLE_SYM
+ #undef TARGET_BIG_SYM
+
+ #define TARGET_LITTLE_SYM bfd_elf32_littlearmqnx_vec
+ #define TARGET_BIG_SYM bfd_elf32_bigarmqnx_vec
+
+ /* QNX Neutrino for ARM has a max pagesize of 0x1000. */
+ #define ELF_MAXPAGESIZE 0x1000
+
+ #include "elf32-arm.h"
+
diff -rc3p -N src.orig/bfd/targets.c src/bfd/targets.c
*** src.orig/bfd/targets.c Wed Jul 17 10:15:49 2002
--- src/bfd/targets.c Thu Jul 25 17:20:44 2002
*************** extern const bfd_target bfd_elf32_big_ge
*** 508,513 ****
--- 508,514 ----
extern const bfd_target bfd_elf32_bigarc_vec;
extern const bfd_target bfd_elf32_bigarm_oabi_vec;
extern const bfd_target bfd_elf32_bigarm_vec;
+ extern const bfd_target bfd_elf32_bigarmqnx_vec;
extern const bfd_target bfd_elf32_bigmips_vec;
extern const bfd_target bfd_elf32_cris_vec;
extern const bfd_target bfd_elf32_d10v_vec;
*************** extern const bfd_target bfd_elf32_little
*** 531,536 ****
--- 532,538 ----
extern const bfd_target bfd_elf32_littlearc_vec;
extern const bfd_target bfd_elf32_littlearm_oabi_vec;
extern const bfd_target bfd_elf32_littlearm_vec;
+ extern const bfd_target bfd_elf32_littlearmqnx_vec;
extern const bfd_target bfd_elf32_littlemips_vec;
extern const bfd_target bfd_elf32_m32r_vec;
extern const bfd_target bfd_elf32_m68hc11_vec;
diff -rc3p -N src.orig/gas/configure src/gas/configure
*** src.orig/gas/configure Thu Jul 25 05:48:04 2002
--- src/gas/configure Thu Jul 25 15:47:32 2002
*************** for this_target in $target $canon_target
*** 2351,2356 ****
--- 2351,2357 ----
fmt=elf em=linux ;;
arm-*-netbsdelf*) fmt=elf em=nbsd ;;
arm-*-netbsd* | arm-*-openbsd*) fmt=aout em=nbsd ;;
+ arm-*-nto*) fmt=elf ;;
arm-*-oabi | thumb-*-oabi) fmt=elf ;;
arm-epoc-pe | thumb-epoc-pe) fmt=coff em=epoc-pe ;;
arm-*-wince) fmt=coff em=wince-pe ;;
diff -rc3p -N src.orig/gas/configure.in src/gas/configure.in
*** src.orig/gas/configure.in Thu Jul 25 05:48:04 2002
--- src/gas/configure.in Thu Jul 25 15:47:44 2002
*************** changequote([,])dnl
*** 201,206 ****
--- 201,207 ----
fmt=elf em=linux ;;
arm-*-netbsdelf*) fmt=elf em=nbsd ;;
arm-*-netbsd* | arm-*-openbsd*) fmt=aout em=nbsd ;;
+ arm-*-nto*) fmt=elf ;;
arm-*-oabi | thumb-*-oabi) fmt=elf ;;
arm-epoc-pe | thumb-epoc-pe) fmt=coff em=epoc-pe ;;
arm-*-wince) fmt=coff em=wince-pe ;;
diff -rc3p -N src.orig/ld/Makefile.am src/ld/Makefile.am
*** src.orig/ld/Makefile.am Wed Jul 17 10:15:51 2002
--- src/ld/Makefile.am Thu Jul 25 15:48:51 2002
*************** ALL_EMULATIONS = \
*** 123,128 ****
--- 123,129 ----
earmelfb_nbsd.o \
earmelf_oabi.o \
earmnbsd.o \
+ earmnto.o \
earmpe.o \
eavr1200.o \
eavr23xx.o \
*************** earmcoff.c: $(srcdir)/emulparams/armcoff
*** 428,433 ****
--- 429,438 ----
earmnbsd.c: $(srcdir)/emulparams/armnbsd.sh \
$(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/aout.sc ${GEN_DEPENDS}
${GENSCRIPTS} armnbsd "$(tdir_armnbsd)"
+ earmnto.c: $(srcdir)/emulparams/armnto.sh \
+ $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/armelf.em \
+ $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
+ ${GENSCRIPTS} armnto "$(tdir_armnto)"
earm_epoc_pe.c: $(srcdir)/emulparams/arm_epoc_pe.sh \
$(srcdir)/emultempl/pe.em $(srcdir)/scripttempl/epocpe.sc ${GEN_DEPENDS}
${GENSCRIPTS} arm_epoc_pe "$(tdir_armpe)"
diff -rc3p -N src.orig/ld/Makefile.in src/ld/Makefile.in
*** src.orig/ld/Makefile.in Wed Jul 17 10:15:51 2002
--- src/ld/Makefile.in Thu Jul 25 15:49:14 2002
*************** ALL_EMULATIONS = \
*** 234,239 ****
--- 234,240 ----
earmelfb_nbsd.o \
earmelf_oabi.o \
earmnbsd.o \
+ earmnto.o \
earmpe.o \
eavr1200.o \
eavr23xx.o \
*************** earmcoff.c: $(srcdir)/emulparams/armcoff
*** 1151,1156 ****
--- 1152,1161 ----
earmnbsd.c: $(srcdir)/emulparams/armnbsd.sh \
$(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/aout.sc ${GEN_DEPENDS}
${GENSCRIPTS} armnbsd "$(tdir_armnbsd)"
+ earmnto.c: $(srcdir)/emulparams/armnto.sh \
+ $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/armelf.em \
+ $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
+ ${GENSCRIPTS} armnto "$(tdir_armnto)"
earm_epoc_pe.c: $(srcdir)/emulparams/arm_epoc_pe.sh \
$(srcdir)/emultempl/pe.em $(srcdir)/scripttempl/epocpe.sc ${GEN_DEPENDS}
${GENSCRIPTS} arm_epoc_pe "$(tdir_armpe)"
diff -rc3p -N src.orig/ld/configure.tgt src/ld/configure.tgt
*** src.orig/ld/configure.tgt Wed Jul 17 10:15:51 2002
--- src/ld/configure.tgt Thu Jul 25 15:50:02 2002
*************** arm-*-netbsdelf*) targ_emul=armelf_nbsd;
*** 229,234 ****
--- 229,235 ----
targ_extra_emuls="armelfb_nbsd armelf armnbsd" ;;
arm-*-netbsd*) targ_emul=armnbsd;
targ_extra_emuls="armelf armelf_nbsd armelfb_nbsd" ;;
+ arm-*-nto*) targ_emul=armnto ;;
arm-*-openbsd*) targ_emul=armnbsd ;;
arm-*-rtems*) targ_emul=armelf ;;
arm-*-elf) targ_emul=armelf ;;
diff -rc3p -N src.orig/ld/emulparams/armnto.sh src/ld/emulparams/armnto.sh
*** src.orig/ld/emulparams/armnto.sh Wed Dec 31 19:00:00 1969
--- src/ld/emulparams/armnto.sh Thu Jul 25 14:27:35 2002
***************
*** 0 ****
--- 1,25 ----
+ MACHINE=
+ SCRIPT_NAME=elf
+ OUTPUT_FORMAT="elf32-littlearm"
+ BIG_OUTPUT_FORMAT="elf32-bigarm"
+ LITTLE_OUTPUT_FORMAT="elf32-littlearm"
+ TEXT_START_ADDR=0x00100000
+ TEMPLATE_NAME=elf32
+ EXTRA_EM_FILE=armelf
+ OTHER_TEXT_SECTIONS='*(.glue_7t) *(.glue_7)'
+ OTHER_BSS_SYMBOLS='__bss_start__ = .;'
+ OTHER_BSS_END_SYMBOLS='_bss_end__ = . ; __bss_end__ = . ; __end__ = . ;'
+
+ DATA_START_SYMBOLS='__data_start = . ;';
+
+ GENERATE_SHLIB_SCRIPT=yes
+
+ ARCH=arm
+ MACHINE=
+ MAXPAGESIZE=0x1000
+
+ ENTRY=_start
+
+ # This sets the stack to the top of the simulator memory (2^19 bytes).
+ STACK_ADDR=0x80000
+
More information about the Binutils
mailing list