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