diff options
Diffstat (limited to 'ld')
-rw-r--r-- | ld/ChangeLog | 13 | ||||
-rw-r--r-- | ld/Makefile.am | 4 | ||||
-rw-r--r-- | ld/Makefile.in | 4 | ||||
-rw-r--r-- | ld/configure.tgt | 6 | ||||
-rw-r--r-- | ld/emulparams/elf32ppc.sh | 2 | ||||
-rw-r--r-- | ld/emulparams/elf32ppcvxworks.sh | 4 | ||||
-rw-r--r-- | ld/emultempl/ppc32elf.em | 19 |
7 files changed, 43 insertions, 9 deletions
diff --git a/ld/ChangeLog b/ld/ChangeLog index 107d068..dda3696 100644 --- a/ld/ChangeLog +++ b/ld/ChangeLog @@ -1,3 +1,16 @@ +2005-05-07 Paul Brook <paul@codesourcery.com> + + * Makefile.am (ALL_EMULATIONS): Add eelf32ppcvxworks.o. + (eelf32ppcvxworks.o): Add dependencies. + * Makefile.in: Regenerate. + * configure.tgt: Add entry for powerpc-vxworks. + * emulparams/elf32-ppc.c: Mention elf32ppcvxworks.sh in comment. + * emulparams/elf32ppcvxworks.sh: New file. + * emultempl/ppc32elf.em (bfd_elf32_powerpc_vxworks_vec): Declare. + (is_ppc_elf32_vec): New function. + (ppc_after_open, ppc_before_allocation, + gld${EMULATION_NAME}_after_allocation): Use it. + 2005-07-05 Peter S. Mazinger" <ps.m@gmx.net> * emulparams/elf32bmip.sh (GENERATE_PIE_SCRIPT): Define as "yes". diff --git a/ld/Makefile.am b/ld/Makefile.am index cb63fd9..c5da37e 100644 --- a/ld/Makefile.am +++ b/ld/Makefile.am @@ -181,6 +181,7 @@ ALL_EMULATIONS = \ eelf32ppcnto.o \ eelf32ppcsim.o \ eelf32ppcwindiss.o \ + eelf32ppcvxworks.o \ eelf32vax.o \ eelf32xstormy16.o \ eelf32xtensa.o \ @@ -745,6 +746,9 @@ eelf32ppcnto.c: $(srcdir)/emulparams/elf32ppcnto.sh \ eelf32ppcwindiss.c: $(srcdir)/emulparams/elf32ppcwindiss.sh \ $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} ${GENSCRIPTS} elf32ppcwindiss "$(tdir_elf32ppcwindiss)" +eelf32ppcvxworks.c: $(srcdir)/emulparams/elf32ppcvxworks.sh \ + $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} + ${GENSCRIPTS} elf32ppcvxworks "$(tdir_elf32ppcvxworks)" eelf32lsmip.c: $(srcdir)/emulparams/elf32lsmip.sh \ $(srcdir)/emulparams/elf32lmip.sh $(srcdir)/emulparams/elf32bmip.sh \ $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} diff --git a/ld/Makefile.in b/ld/Makefile.in index 8e8e599..564f81c 100644 --- a/ld/Makefile.in +++ b/ld/Makefile.in @@ -404,6 +404,7 @@ ALL_EMULATIONS = \ eelf32ppcnto.o \ eelf32ppcsim.o \ eelf32ppcwindiss.o \ + eelf32ppcvxworks.o \ eelf32vax.o \ eelf32xstormy16.o \ eelf32xtensa.o \ @@ -1549,6 +1550,9 @@ eelf32ppcnto.c: $(srcdir)/emulparams/elf32ppcnto.sh \ eelf32ppcwindiss.c: $(srcdir)/emulparams/elf32ppcwindiss.sh \ $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} ${GENSCRIPTS} elf32ppcwindiss "$(tdir_elf32ppcwindiss)" +eelf32ppcvxworks.c: $(srcdir)/emulparams/elf32ppcvxworks.sh \ + $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} + ${GENSCRIPTS} elf32ppcvxworks "$(tdir_elf32ppcvxworks)" eelf32lsmip.c: $(srcdir)/emulparams/elf32lsmip.sh \ $(srcdir)/emulparams/elf32lmip.sh $(srcdir)/emulparams/elf32bmip.sh \ $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} diff --git a/ld/configure.tgt b/ld/configure.tgt index f057a78..1ce9dfc 100644 --- a/ld/configure.tgt +++ b/ld/configure.tgt @@ -524,7 +524,7 @@ powerpc*le-*-elf* | powerpc*le-*-eabi* | powerpc*le-*-solaris* \ targ_extra_emuls="elf32ppcsim" ;; esac ;; powerpc*-*-elf* | powerpc*-*-eabi* | powerpc*-*-sysv* \ - | powerpc*-*-netbsd* | powerpc-*-openbsd* | powerpc*-*-vxworks* | powerpc*-*-kaos*) + | powerpc*-*-netbsd* | powerpc-*-openbsd* | powerpc*-*-kaos*) case "${targ}" in *64*) targ_emul=elf64ppc targ_extra_emuls="elf32ppc elf32ppclinux elf32ppcsim" @@ -534,6 +534,10 @@ powerpc*-*-elf* | powerpc*-*-eabi* | powerpc*-*-sysv* \ *) targ_emul=elf32ppc targ_extra_emuls="elf32ppclinux elf32ppcsim" ;; esac ;; +powerpc-*-vxworks*) + targ_emul=elf32ppcvxworks + targ_extra_emuls="elf32ppc elf32ppclinux elf32ppcsim" + ;; powerpc-*-nto*) targ_emul=elf32ppcnto ;; powerpcle-*-nto*) targ_emul=elf32lppcnto ;; powerpcle-*-rtems*) targ_emul=elf32leppc ;; diff --git a/ld/emulparams/elf32ppc.sh b/ld/emulparams/elf32ppc.sh index 5a38aed..b5abcbf 100644 --- a/ld/emulparams/elf32ppc.sh +++ b/ld/emulparams/elf32ppc.sh @@ -1,5 +1,5 @@ # If you change this file, please also look at files which source this one: -# elf32lppc.sh elf32ppclinux.sh elf32ppcsim.sh +# elf32lppc.sh elf32ppclinux.sh elf32ppcsim.sh elf32ppcvxworks.sh TEMPLATE_NAME=elf32 EXTRA_EM_FILE=ppc32elf diff --git a/ld/emulparams/elf32ppcvxworks.sh b/ld/emulparams/elf32ppcvxworks.sh new file mode 100644 index 0000000..b45a238 --- /dev/null +++ b/ld/emulparams/elf32ppcvxworks.sh @@ -0,0 +1,4 @@ +. ${srcdir}/emulparams/elf32ppc.sh +OUTPUT_FORMAT="elf32-powerpc-vxworks" +unset BSS_PLT +. ${srcdir}/emulparams/vxworks.sh diff --git a/ld/emultempl/ppc32elf.em b/ld/emultempl/ppc32elf.em index 7b180bb..9a64da2 100644 --- a/ld/emultempl/ppc32elf.em +++ b/ld/emultempl/ppc32elf.em @@ -28,6 +28,15 @@ cat >>e${EMULATION_NAME}.c <<EOF extern const bfd_target bfd_elf32_powerpc_vec; extern const bfd_target bfd_elf32_powerpcle_vec; +extern const bfd_target bfd_elf32_powerpc_vxworks_vec; + +static inline int +is_ppc_elf32_vec(const bfd_target * vec) +{ + return (vec == &bfd_elf32_powerpc_vec + || vec == &bfd_elf32_powerpc_vxworks_vec + || vec == &bfd_elf32_powerpcle_vec); +} /* Whether to run tls optimization. */ static int notlsopt = 0; @@ -39,8 +48,7 @@ static int old_got = 0; static void ppc_after_open (void) { - if (link_info.hash->creator == &bfd_elf32_powerpc_vec - || link_info.hash->creator == &bfd_elf32_powerpcle_vec) + if (is_ppc_elf32_vec (link_info.hash->creator)) { int new_plt; int keep_new; @@ -95,8 +103,7 @@ ppc_after_open (void) static void ppc_before_allocation (void) { - if (link_info.hash->creator == &bfd_elf32_powerpc_vec - || link_info.hash->creator == &bfd_elf32_powerpcle_vec) + if (is_ppc_elf32_vec (link_info.hash->creator)) { if (ppc_elf_tls_setup (output_bfd, &link_info) && !notlsopt) { @@ -113,9 +120,7 @@ ppc_before_allocation (void) static void gld${EMULATION_NAME}_after_allocation (void) { - if ((link_info.hash->creator == &bfd_elf32_powerpc_vec - || link_info.hash->creator == &bfd_elf32_powerpcle_vec) - && !link_info.relocatable) + if (is_ppc_elf32_vec (link_info.hash->creator)) { if (!ppc_elf_set_sdata_syms (output_bfd, &link_info)) einfo ("%X%P: cannot set sdata syms %E\n"); |