PATCH: sh-nto qnx support
Graeme Peterson
gp@qnx.com
Mon Aug 12 12:42:00 GMT 2002
Hi, all.
Here is a patch for sh-nto qnx support. I also fixed a typo
in bfd/elf32-qnx.h. Ooops. :-)
Thanks.
GP
ChangeLogs
==========
bfd
2002-08-12 Graeme Peterson <gp@qnx.com>
* Makefile.am: Add entries for elf32-shqnx.c
* Makefile.in: Regenerate.
* config.bfd: Add support sh-*-nto* target.
* configure.in: Add support for bfd_elf32_sh{l}qnx_vec.
* configure: Regenerate.
* elf32-qnx.h: Changed typo "elf_i386qnx_*" to "elf_qnx_*" .
* elf32-sh.c: Do not include elf32-target.h if
ELF32_SH_C_INCLUDED is defined.
* elf32-shqnx.c: New file: Support for QNX.
* targets.c: Add bfd_elf32_sh{l}qnx_vec.
gas
2002-08-12 Graeme Peterson <gp@qnx.com>
* configure.in: Add support for sh-**-nto* target.
* configure: Regenerate.
ld
2002-08-12 Graeme Peterson <gp@qnx.com>
* Makefile.am: Add esh{l}elf_nto.o files.
* Makefile.in: Regenerate.
* configure.tgt: Add support for sh-**-nto* targets.
* emulparams/shelf_nto.sh: New file.
* emulparams/shlelf_nto.sh: New file.
================================================================
-------------- next part --------------
diff -rc3p -N src/bfd/Makefile.am src.qnx/bfd/Makefile.am
*** src/bfd/Makefile.am Fri Aug 9 11:38:21 2002
--- src.qnx/bfd/Makefile.am Fri Aug 9 15:00:54 2002
*************** BFD32_BACKENDS = \
*** 240,245 ****
--- 240,246 ----
elf32-sh64-com.lo \
elf32-sh-nbsd.lo \
elf32-sh64-nbsd.lo \
+ elf32-shqnx.lo \
elf32-sparc.lo \
elf32-v850.lo \
elf32-vax.lo \
*************** BFD32_BACKENDS_CFILES = \
*** 399,404 ****
--- 400,406 ----
elf32-sh-lin.c \
elf32-sh-nbsd.c \
elf32-sh64-nbsd.c \
+ elf32-shqnx.c \
elf32-sparc.c \
elf32-v850.c \
elf32-vax.c \
*************** elf32-sh64-nbsd.lo: elf32-sh64-nbsd.c el
*** 1260,1265 ****
--- 1262,1271 ----
$(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h \
$(srcdir)/../opcodes/sh64-opc.h elf32-sh.c $(INCDIR)/elf/sh.h \
$(INCDIR)/elf/reloc-macros.h elf32-target.h
+ elf32-shqnx.lo: elf32-shqnx.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
+ elf-bfd.h elf32-qnx.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
+ $(INCDIR)/elf/external.h $(INCDIR)/elf/sh.h $(INCDIR)/elf/reloc-macros.h \
+ elf32-target.h
elf32-sparc.lo: elf32-sparc.c $(INCDIR)/filenames.h \
$(INCDIR)/bfdlink.h elf-bfd.h $(INCDIR)/elf/common.h \
$(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h $(INCDIR)/elf/sparc.h \
diff -rc3p -N src/bfd/config.bfd src.qnx/bfd/config.bfd
*** src/bfd/config.bfd Fri Aug 9 11:38:21 2002
--- src.qnx/bfd/config.bfd Fri Aug 9 15:06:39 2002
*************** case "${targ}" in
*** 994,999 ****
--- 994,1004 ----
#endif
targ_underscore=yes
;;
+ sh-*-nto*)
+ targ_defvec=bfd_elf32_shqnx_vec
+ targ_selvecs="bfd_elf32_shlqnx_vec shcoff_vec shlcoff_vec shcoff_small_vec shlcoff_small_vec"
+ targ_underscore=yes
+ ;;
sh-*-pe)
targ_defvec=shlpe_vec
targ_selvecs="shlpe_vec shlpei_vec"
diff -rc3p -N src/bfd/configure.in src.qnx/bfd/configure.in
*** src/bfd/configure.in Fri Aug 9 11:38:22 2002
--- src.qnx/bfd/configure.in Fri Aug 9 15:10:45 2002
*************** do
*** 624,630 ****
--- 624,632 ----
bfd_elf32_shl_vec) tb="$tb elf32-sh.lo elf32.lo $elf coff-sh.lo" ;;
bfd_elf32_shlin_vec) tb="$tb elf32-sh-lin.lo elf32.lo $elf coff-sh.lo cofflink.lo" ;;
bfd_elf32_shlnbsd_vec) tb="$tb elf32-sh-nbsd.lo elf32.lo $elf coff-sh.lo cofflink.lo" ;;
+ bfd_elf32_shlqnx_vec) tb="$tb elf32-shqnx.lo elf32-sh.lo elf32.lo $elf coff-sh.lo" ;;
bfd_elf32_shnbsd_vec) tb="$tb elf32-sh-nbsd.lo elf32.lo $elf coff-sh.lo cofflink.lo" ;;
+ bfd_elf32_shqnx_vec) tb="$tb elf32-shqnx.lo elf32-sh.lo elf32.lo $elf coff-sh.lo" ;;
bfd_elf32_sparc_vec) tb="$tb elf32-sparc.lo elf32.lo $elf" ;;
bfd_elf32_tradbigmips_vec) tb="$tb elf32-mips.lo elfxx-mips.lo elf32.lo $elf ecofflink.lo" ;;
bfd_elf32_tradlittlemips_vec) tb="$tb elf32-mips.lo elfxx-mips.lo elf32.lo $elf ecofflink.lo" ;;
diff -rc3p -N src/bfd/elf32-qnx.h src.qnx/bfd/elf32-qnx.h
*** src/bfd/elf32-qnx.h Fri Aug 9 11:38:22 2002
--- src.qnx/bfd/elf32-qnx.h Mon Aug 12 14:47:19 2002
***************
*** 22,32 ****
(start + (segment->p_memsz > segment->p_filesz \
? segment->p_memsz : segment->p_filesz))
! static boolean elf_i386qnx_copy_private_bfd_data_p
PARAMS ((bfd *, asection *, bfd *, asection *));
! static boolean elf_i386qnx_is_contained_by_filepos
PARAMS ((asection *, Elf_Internal_Phdr *));
! static void elf_i386qnx_set_nonloadable_filepos
PARAMS ((bfd *, Elf_Internal_Phdr *));
static boolean
--- 22,32 ----
(start + (segment->p_memsz > segment->p_filesz \
? segment->p_memsz : segment->p_filesz))
! static boolean elf_qnx_copy_private_bfd_data_p
PARAMS ((bfd *, asection *, bfd *, asection *));
! static boolean elf_qnx_is_contained_by_filepos
PARAMS ((asection *, Elf_Internal_Phdr *));
! static void elf_qnx_set_nonloadable_filepos
PARAMS ((bfd *, Elf_Internal_Phdr *));
static boolean
diff -rc3p -N src/bfd/elf32-sh.c src.qnx/bfd/elf32-sh.c
*** src/bfd/elf32-sh.c Sun Jul 7 05:10:39 2002
--- src.qnx/bfd/elf32-sh.c Mon Aug 12 14:26:28 2002
*************** sh_elf_reloc_type_class (rela)
*** 5877,5880 ****
--- 5877,5884 ----
#define elf_backend_want_plt_sym 0
#define elf_backend_got_header_size 12
#define elf_backend_plt_header_size PLT_ENTRY_SIZE
+
+ #ifndef ELF32_SH_C_INCLUDED
#include "elf32-target.h"
+ #endif
+
diff -rc3p -N src/bfd/elf32-shqnx.c src.qnx/bfd/elf32-shqnx.c
*** src/bfd/elf32-shqnx.c Wed Dec 31 19:00:00 1969
--- src.qnx/bfd/elf32-shqnx.c Mon Aug 12 14:51:50 2002
***************
*** 0 ****
--- 1,31 ----
+ /* Hitachi SH QNX specific support for 32-bit ELF
+ 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 ELF32_SH_C_INCLUDED
+ #include "elf32-sh.c"
+
+ #include "elf32-qnx.h"
+
+ #undef TARGET_LITTLE_SYM
+ #define TARGET_LITTLE_SYM bfd_elf32_shlqnx_vec
+ #undef TARGET_BIG_SYM
+ #define TARGET_BIG_SYM bfd_elf32_shqnx_vec
+
+ #include "elf32-target.h"
+
diff -rc3p -N src/bfd/targets.c src.qnx/bfd/targets.c
*** src/bfd/targets.c Fri Aug 9 16:27:15 2002
--- src.qnx/bfd/targets.c Fri Aug 9 16:17:32 2002
*************** extern const bfd_target bfd_elf32_shblin
*** 565,571 ****
--- 565,573 ----
extern const bfd_target bfd_elf32_shl_vec;
extern const bfd_target bfd_elf32_shlin_vec;
extern const bfd_target bfd_elf32_shlnbsd_vec;
+ extern const bfd_target bfd_elf32_shlqnx_vec;
extern const bfd_target bfd_elf32_shnbsd_vec;
+ extern const bfd_target bfd_elf32_shqnx_vec;
extern const bfd_target bfd_elf32_sparc_vec;
extern const bfd_target bfd_elf32_tradbigmips_vec;
extern const bfd_target bfd_elf32_tradlittlemips_vec;
diff -rc3p -N src/gas/configure.in src.qnx/gas/configure.in
*** src/gas/configure.in Fri Aug 9 16:27:17 2002
--- src.qnx/gas/configure.in Fri Aug 9 16:19:25 2002
*************** changequote([,])dnl
*** 425,432 ****
--- 425,433 ----
sh*-*-netbsdelf*) fmt=elf em=nbsd ;;
sh-*-elf*) fmt=elf ;;
sh-*-coff*) fmt=coff ;;
+ sh-**-nto*) fmt=elf ;;
sh-*-pe*) fmt=coff em=pe bfd_gas=yes
endian=little ;;
sh-*-rtemself*) fmt=elf ;;
sh-*-rtems*) fmt=coff ;;
sh64-*-elf*) fmt=elf ;;
diff -rc3p -N src/ld/Makefile.am src.qnx/ld/Makefile.am
*** src/ld/Makefile.am Fri Aug 9 11:38:24 2002
--- src.qnx/ld/Makefile.am Fri Aug 9 16:38:42 2002
*************** ALL_EMULATIONS = \
*** 267,272 ****
--- 267,274 ----
eshlelf_linux.o \
eshelf_nbsd.o \
eshlelf_nbsd.o \
+ eshelf_nto.o \
+ eshlelf_nto.o \
eshl.o \
eshlelf.o \
eshpe.o \
*************** eshelf_nbsd.c: $(srcdir)/emulparams/shel
*** 1006,1016 ****
--- 1008,1024 ----
$(srcdir)/emulparams/shelf.sh \
$(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
${GENSCRIPTS} shelf_nbsd "$(tdir_shelf_nbsd)"
+ eshelf_nto.c: $(srcdir)/emulparams/shelf_nto.sh \
+ $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
+ ${GENSCRIPTS} shelf_nto "$(tdir_shelf_nto)"
eshlelf_nbsd.c: $(srcdir)/emulparams/shlelf_nbsd.sh \
$(srcdir)/emulparams/shelf_nbsd.sh \
$(srcdir)/emulparams/shelf.sh \
$(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
${GENSCRIPTS} shlelf_nbsd "$(tdir_shlelf_nbsd)"
+ eshlelf_nto.c: $(srcdir)/emulparams/shlelf_nto.sh \
+ $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
+ ${GENSCRIPTS} shlelf_nto "$(tdir_shlelf_nto)"
eshlelf.c: $(srcdir)/emulparams/shlelf.sh \
$(srcdir)/emulparams/shelf.sh \
$(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
diff -rc3p -N src/ld/configure.tgt src.qnx/ld/configure.tgt
*** src/ld/configure.tgt Fri Aug 9 11:38:24 2002
--- src.qnx/ld/configure.tgt Mon Aug 12 14:26:55 2002
*************** sh-*-elf* | sh[1234]*-*-elf | sh-*-rtems
*** 307,312 ****
--- 307,315 ----
targ_emul=shelf
targ_extra_emuls="shlelf sh shl"
;;
+ sh-**-nto*) targ_emul=shelf_nto
+ targ_extra_emuls=shlelf_nto
+ ;;
sh-*-pe) targ_emul=shpe ;
targ_extra_ofiles="deffilep.o pe-dll.o" ;;
sh-*-*|sh-*-rtems*) targ_emul=sh; targ_extra_emuls=shl ;;
diff -rc3p -N src/ld/emulparams/shelf_nto.sh src.qnx/ld/emulparams/shelf_nto.sh
*** src/ld/emulparams/shelf_nto.sh Wed Dec 31 19:00:00 1969
--- src.qnx/ld/emulparams/shelf_nto.sh Mon Aug 12 13:45:31 2002
***************
*** 0 ****
--- 1,12 ----
+ SCRIPT_NAME=elf
+ OUTPUT_FORMAT="elf32-sh"
+ TEXT_START_ADDR=0x08040000
+ MAXPAGESIZE=0x1000
+ ARCH=sh
+ MACHINE=
+ TEMPLATE_NAME=elf32
+ GENERATE_SHLIB_SCRIPT=yes
+ TEXT_START_SYMBOLS='_btext = .;'
+ ENTRY=_start
diff -rc3p -N src/ld/emulparams/shlelf_nto.sh src.qnx/ld/emulparams/shlelf_nto.sh
*** src/ld/emulparams/shlelf_nto.sh Wed Dec 31 19:00:00 1969
--- src.qnx/ld/emulparams/shlelf_nto.sh Mon Aug 12 13:45:14 2002
***************
*** 0 ****
--- 1,12 ----
+ SCRIPT_NAME=elf
+ OUTPUT_FORMAT="elf32-shl"
+ TEXT_START_ADDR=0x08040000
+ MAXPAGESIZE=0x1000
+ ARCH=sh
+ MACHINE=
+ TEMPLATE_NAME=elf32
+ GENERATE_SHLIB_SCRIPT=yes
+ TEXT_START_SYMBOLS='_btext = .;'
+ ENTRY=_start
More information about the Binutils
mailing list