diff options
Diffstat (limited to 'contrib/binutils/ld')
27 files changed, 742 insertions, 425 deletions
diff --git a/contrib/binutils/ld/ChangeLog b/contrib/binutils/ld/ChangeLog index 7b79459..428de76 100644 --- a/contrib/binutils/ld/ChangeLog +++ b/contrib/binutils/ld/ChangeLog @@ -1,3 +1,111 @@ +2002-11-27 David O'Brien <obrien@FreeBSD.org> + + * configure.host: Fix generic FreeBSD configuration entry. + +2002-11-20 Alan Modra <amodra@bigpond.net.au> + + * emulparams/elf64ppc.sh (DATA_ADDR): Don't define. + +2002-10-30 Daniel Jacobowitz <drow@mvista.com> + + * ld.1: Regenerated. + * ldgram.c: Regenerated. + * po/ld.pot: Regenerated. + +2002-10-29 Daniel Jacobowitz <drow@mvista.com> + + * emultempl/aix.em: Use include <> for generated headers. + * emultempl/beos.em: Likewise. + * emultempl/elf32.em: Likewise. + * emultempl/pe.em: Likewise. + * ldctor.c: Likewise. + * ldexp.c: Likewise. + * ldfile.c: Likewise. + * ldlang.c: Likewise. + * ldlex.c: Likewise. + * ldlex.l: Likewise. + * ldmain.c: Likewise. + * ldmisc.c: Likewise. + * ldwrite.c: Likewise. + * lexsup.c: Likewise. + * mri.c: Likewise. + * pe-dll.c: Likewise. + +2002-10-28 Daniel Jacobowitz <drow@mvista.com> + + Merge from mainline: + 2002-10-23 Jakub Jelinek <jakub@redhat.com> + * emultempl/elf32.em (place_orphan): Don't put non-allocated .rel* + sections into .rel{,a}.dyn. + + 2002-10-21 Danny Smith <dannysmith@users.sourceforeg.net> + * scripttempl/pe.sc (__RUNTIME_PSEUDO_RELOC_LIST__, + __RUNTIME_PSEUDO_RELOC_LIST_END__): Add only when relocating. + + 2002-10-16 Jakub Jelinek <jakub@redhat.com> + * configure.tgt (s390x-*-linux*): Add elf_s390 emulation. + (s390-*-linux*): Add elf64_s390 emulation if want64. + * emulparams/elf64_sparc.sh (LIB_PATH): Update to match 2002-05-22 + genscript.sh changes. + * emulparams/elf_x86_64.sh (LIB_PATH): Likewise. + * emulparams/elf64_s390.sh (LIB_PATH): Set up native 64 bit dirs. + + 2002-10-10 Jakub Jelinek <jakub@redhat.com> + * ldfile.c (ldfile_try_open_bfd): When searching skip linker scripts if + they have OUTPUT_FORMAT not matching actual output format. + * ldlang.c (lang_get_output_target): New function. + (open_output): Use it. + * ldlang.h (lang_get_output_target): New prototype. + + 2002-10-07 Ralf Habacker <Ralf.Habacker@freenet.de> + * pe-dll.cc (autofilter_symbolprefixlist): Don't re-export + auto-import symbols. + (make_one): Create _nm_<symbol> for data only. + + 2002-10-10 Alan Modra <amodra@bigpond.net.au> + * emultempl/elf32.em (output_rel_find): Prefer .rel script sections + when orphan is .rel, .rela when orphan is .rela. + (gld${EMULATION_NAME}_place_orphan): Handle combreloc .rel* case + first. Remove outsecname var. + + 2002-09-30 Alan Modra <amodra@bigpond.net.au> + * scripttempl/elfd30v.sc: Order reloc sections placing .plt last. + * scripttempl/elfm68hc11.sc: Likewise. + * scripttempl/elfm68hc12.sc: Likewise. + + * emultempl/elf32.em (output_rel_find): Always place orphan loadable + reloc sections just before .rel.plt/.rela.plt. + (gld${EMULATION_NAME}_place_orphan <.rel>): Remove combreloc code. + Only put loadable reloc sections in hold_rel. + + 2002-09-29 H.J. Lu <hjl@gnu.org> + * emulparams/elf32ppc.sh (OTHER_GOT_RELOC_SECTIONS): New. + + 2002-08-27 Egor Duda <deo@logos-m.ru> + * scripttempl/pe.sc: Handle .rdata_runtime_pseudo_reloc sections. + Add symbols for application to access them. + +2002-10-15 Alan Modra <amodra@bigpond.net.au> + + * ldlang.c (load_symbols): Revert last change. + +2002-10-14 Alan Modra <amodra@bigpond.net.au> + + * ldlang.c (load_symbols): Don't call bfd_link_add_symbols when + just_syms_flag. + (lang_reasonable_defaults): Don't compare against false. + (size_input_section): Likewise. + (lang_size_sections_1): Likewise. + (lang_do_assignments): Likewise. + (lang_add_output): Likewise. + +2002-10-11 Alan Modra <amodra@bigpond.net.au> + + * pe-dll.c (make_import_fixup_mark): Avoid type-punned pointer. + + * ldgram.y (memory_spec): Provide empty action. + (section <NAME>): Likewise. + 2002-10-02 Alan Modra <amodra@bigpond.net.au> * emulparams/elf64ppc.sh (MAXPAGESIZE): Set to 0x10000. diff --git a/contrib/binutils/ld/configure.host b/contrib/binutils/ld/configure.host index 56ed187..436a912 100644 --- a/contrib/binutils/ld/configure.host +++ b/contrib/binutils/ld/configure.host @@ -25,7 +25,7 @@ case "${host}" in # Older versions of gcc do not use a specs file. In those cases, # gcc -print-file-name=specs will simply print specs. We create a # dummy specs files to handle this. - echo "-dynamic-linker `${CC} --print-file-name=ld-elf.so.1`" > specs + echo "-dynamic-linker `${CC} --print-prog-name=ld-elf.so.1`" > specs HOSTING_CRT0='-dynamic-linker `${CC} --print-file-name=ld-elf.so.1` `${CC} --print-file-name=crt1.o` `${CC} --print-file-name=crti.o` `${CC} --print-file-name=crtbegin.o`' HOSTING_LIBS='-L`dirname \`${CC} --print-file-name=libc.so\`` '"$HOSTING_LIBS"' `if [ -f ../gcc/crtend.o ]; then echo ../gcc/crtend.o; else ${CC} --print-file-name=crtend.o; fi` `${CC} --print-file-name=crtn.o`' ;; diff --git a/contrib/binutils/ld/configure.tgt b/contrib/binutils/ld/configure.tgt index c1d7620..bcdbb04 100644 --- a/contrib/binutils/ld/configure.tgt +++ b/contrib/binutils/ld/configure.tgt @@ -491,8 +491,16 @@ fr30-*-*) targ_emul=elf32fr30 ;; mcore-*-pe) targ_emul=mcorepe ; targ_extra_ofiles="deffilep.o pe-dll.o" ;; mcore-*-elf) targ_emul=elf32mcore ;; -s390x-*-linux*) targ_emul=elf64_s390 ;; -s390-*-linux*) targ_emul=elf_s390 ;; +s390x-*-linux*) targ_emul=elf64_s390 + targ_extra_emuls=elf_s390 + targ_extra_libpath=$targ_extra_emuls + tdir_elf_s390=`echo ${targ_alias} | sed -e 's/s390x/s390/'` ;; +s390-*-linux*) targ_emul=elf_s390 + if test "${want64}" = "true"; then + targ_extra_emuls=elf64_s390 + targ_extra_libpath=$targ_extra_emuls + tdir_elf64_s390=`echo ${targ_alias} | sed -e 's/s390/s390x/'` + fi ;; *-*-ieee*) targ_emul=vanilla ;; *) diff --git a/contrib/binutils/ld/emulparams/elf32ppc.sh b/contrib/binutils/ld/emulparams/elf32ppc.sh index f88198f..778260b 100644 --- a/contrib/binutils/ld/emulparams/elf32ppc.sh +++ b/contrib/binutils/ld/emulparams/elf32ppc.sh @@ -17,6 +17,10 @@ OTHER_READWRITE_SECTIONS=" .got1 ${RELOCATING-0} : { *(.got1) } .got2 ${RELOCATING-0} : { *(.got2) } " +OTHER_GOT_RELOC_SECTIONS=" + .rela.got1 ${RELOCATING-0} : { *(.rela.got1) } + .rela.got2 ${RELOCATING-0} : { *(.rela.got2) } +" # Treat a host that matches the target with the possible exception of "64" # in the name as if it were native. diff --git a/contrib/binutils/ld/emulparams/elf64_s390.sh b/contrib/binutils/ld/emulparams/elf64_s390.sh index 8416c89..236fd17 100644 --- a/contrib/binutils/ld/emulparams/elf64_s390.sh +++ b/contrib/binutils/ld/emulparams/elf64_s390.sh @@ -9,3 +9,33 @@ MACHINE= NOP=0x07070707 TEMPLATE_NAME=elf32 GENERATE_SHLIB_SCRIPT=yes + +# Treat a host that matches the target with the possible exception of "x" +# in the name as if it were native. +if test `echo "$host" | sed -e s/390x/390/` \ + = `echo "$target" | sed -e s/390x/390/`; then + case " $EMULATION_LIBPATH " in + *" ${EMULATION_NAME} "*) + LIB_PATH=${libdir} + for lib in ${NATIVE_LIB_DIRS}; do + case :${LIB_PATH}: in + *:${lib}:*) ;; + *) LIB_PATH=${LIB_PATH}:${lib} ;; + esac + done + + case "$target" in + s390*-linux*) + suffix=64 ;; + esac + + # Look for 64 bit target libraries in /lib64, /usr/lib64 etc., first + # on Linux. + if [ -n "$suffix" ]; then + case "$EMULATION_NAME" in + *64*) + LIB_PATH=`echo ${LIB_PATH}: | sed -e s,:,$suffix:,g`$LIB_PATH ;; + esac + fi ;; + esac +fi diff --git a/contrib/binutils/ld/emulparams/elf64_sparc.sh b/contrib/binutils/ld/emulparams/elf64_sparc.sh index a4706b5..7a4d2dc 100644 --- a/contrib/binutils/ld/emulparams/elf64_sparc.sh +++ b/contrib/binutils/ld/emulparams/elf64_sparc.sh @@ -22,36 +22,37 @@ case "$target" in ;; esac -if [ "x${host}" = "x${target}" ]; then +# Treat a host that matches the target with the possible exception of "64" +# and "v7", "v8", "v9" in the name as if it were native. +if test `echo "$host" | sed -e 's/64//;s/v[789]//'` \ + = `echo "$target" | sed -e 's/64//;s/v[789]//'`; then case " $EMULATION_LIBPATH " in *" ${EMULATION_NAME} "*) - # Native, and default or emulation requesting LIB_PATH. + LIB_PATH=${libdir} + for lib in ${NATIVE_LIB_DIRS}; do + case :${LIB_PATH}: in + *:${lib}:*) ;; + *) LIB_PATH=${LIB_PATH}:${lib} ;; + esac + done # Linux and Solaris modify the default library search path # to first include a 64-bit specific directory. It's put # in slightly different places on the two systems. case "$target" in - sparc*-linux*) - suffix=64 ;; - sparc*-solaris*) - suffix=/sparcv9 ;; + sparc*-linux*) + suffix=64 ;; + sparc*-solaris*) + suffix=/sparcv9 ;; esac - if [ -n "${suffix}" ]; then - - LIB_PATH=/lib${suffix}:/lib - LIB_PATH=${LIB_PATH}:/usr/lib${suffix}:/usr/lib - if [ -n "${NATIVE_LIB_DIRS}" ]; then - LIB_PATH=${LIB_PATH}:`echo ${NATIVE_LIB_DIRS} | sed s_:_${suffix}:_g`${suffix}:${NATIVE_LIB_DIRS} - fi - if [ "${libdir}" != /usr/lib ]; then - LIB_PATH=${LIB_PATH}:${libdir}${suffix}:${libdir} - fi - if [ "${libdir}" != /usr/local/lib ]; then - LIB_PATH=${LIB_PATH}:/usr/local/lib${suffix}:/usr/local/lib - fi - - fi - ;; + # Look for 64 bit target libraries in /lib64, /usr/lib64 etc., first + # on Linux and /lib/sparcv9, /usr/lib/sparcv9 etc. on Solaris. + if [ -n "$suffix" ]; then + case "$EMULATION_NAME" in + *64*) + LIB_PATH=`echo ${LIB_PATH}: | sed -e s,:,$suffix:,g`$LIB_PATH ;; + esac + fi ;; esac fi diff --git a/contrib/binutils/ld/emulparams/elf64ppc.sh b/contrib/binutils/ld/emulparams/elf64ppc.sh index e3a8177..add6c54 100644 --- a/contrib/binutils/ld/emulparams/elf64ppc.sh +++ b/contrib/binutils/ld/emulparams/elf64ppc.sh @@ -5,7 +5,7 @@ GENERATE_SHLIB_SCRIPT=yes SCRIPT_NAME=elf OUTPUT_FORMAT="elf64-powerpc" TEXT_START_ADDR=0x10000000 -DATA_ADDR="ALIGN (0x10000000) + (. & (${MAXPAGESIZE} - 1))" +#DATA_ADDR="ALIGN (0x10000000) + (. & (${MAXPAGESIZE} - 1))" MAXPAGESIZE=0x10000 COMMONPAGESIZE=0x1000 ARCH=powerpc:common64 diff --git a/contrib/binutils/ld/emulparams/elf_x86_64.sh b/contrib/binutils/ld/emulparams/elf_x86_64.sh index 1786e33..a428bfc 100644 --- a/contrib/binutils/ld/emulparams/elf_x86_64.sh +++ b/contrib/binutils/ld/emulparams/elf_x86_64.sh @@ -15,30 +15,27 @@ NO_SMALL_DATA=yes if [ "x${host}" = "x${target}" ]; then case " $EMULATION_LIBPATH " in *" ${EMULATION_NAME} "*) - # Native, and default or emulation requesting LIB_PATH. + LIB_PATH=${libdir} + for lib in ${NATIVE_LIB_DIRS}; do + case :${LIB_PATH}: in + *:${lib}:*) ;; + *) LIB_PATH=${LIB_PATH}:${lib} ;; + esac + done # Linux modify the default library search path to first include # a 64-bit specific directory. case "$target" in - x86_64*-linux*) - suffix=64 ;; + x86_64*-linux*) + suffix=64 ;; esac - if [ -n "${suffix}" ]; then - - LIB_PATH=/lib${suffix}:/lib - LIB_PATH=${LIB_PATH}:/usr/lib${suffix}:/usr/lib - if [ -n "${NATIVE_LIB_DIRS}" ]; then - LIB_PATH=${LIB_PATH}:`echo ${NATIVE_LIB_DIRS} | sed s_:_${suffix}:_g`${suffix}:${NATIVE_LIB_DIRS} - fi - if [ "${libdir}" != /usr/lib ]; then - LIB_PATH=${LIB_PATH}:${libdir}${suffix}:${libdir} - fi - if [ "${libdir}" != /usr/local/lib ]; then - LIB_PATH=${LIB_PATH}:/usr/local/lib${suffix}:/usr/local/lib - fi - - fi - ;; + # Look for 64 bit target libraries in /lib64, /usr/lib64 etc., first. + if [ -n "$suffix" ]; then + case "$EMULATION_NAME" in + *64*) + LIB_PATH=`echo ${LIB_PATH}: | sed -e s,:,$suffix:,g`$LIB_PATH ;; + esac + fi ;; esac fi diff --git a/contrib/binutils/ld/emulparams/shelf.sh b/contrib/binutils/ld/emulparams/shelf.sh index 27b73b6..5c0c9d6 100755 --- a/contrib/binutils/ld/emulparams/shelf.sh +++ b/contrib/binutils/ld/emulparams/shelf.sh @@ -17,4 +17,16 @@ CTOR_START='___ctors = .;' CTOR_END='___ctors_end = .;' DTOR_START='___dtors = .;' DTOR_END='___dtors_end = .;' -STACK_ADDR=0x30000 +# This is like setting STACK_ADDR to 0x30000, except that the setting can +# be overridden, e.g. --defsym _stack=0x0f00, and that we put an extra +# sentinal value at the bottom. +# N.B. We can't use PROVIDE to set the default value in a symbol because +# the address is needed to place the .stack section, which in turn is needed +# to hold the sentinel value(s). +OTHER_SECTIONS=" .stack ${RELOCATING-0}${RELOCATING+(DEFINED(_stack) ? _stack : 0x30000)} : + { + ${RELOCATING+_stack = .;} + *(.stack) + LONG(0xdeaddead) + }" + diff --git a/contrib/binutils/ld/emultempl/elf32.em b/contrib/binutils/ld/emultempl/elf32.em index 26e4c46..9bfed6e 100644 --- a/contrib/binutils/ld/emultempl/elf32.em +++ b/contrib/binutils/ld/emultempl/elf32.em @@ -49,7 +49,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include "ldlang.h" #include "ldfile.h" #include "ldemul.h" -#include "ldgram.h" +#include <ldgram.h> #include "elf/common.h" static void gld${EMULATION_NAME}_before_parse @@ -75,7 +75,7 @@ static void gld${EMULATION_NAME}_before_allocation static boolean gld${EMULATION_NAME}_open_dynamic_archive PARAMS ((const char *, search_dirs_type *, lang_input_statement_type *)); static lang_output_section_statement_type *output_rel_find - PARAMS ((void)); + PARAMS ((asection *)); static asection *output_prev_sec_find PARAMS ((lang_output_section_statement_type *)); static boolean gld${EMULATION_NAME}_place_orphan @@ -996,24 +996,46 @@ cat >>e${EMULATION_NAME}.c <<EOF /* A variant of lang_output_section_find. Used by place_orphan. */ static lang_output_section_statement_type * -output_rel_find () +output_rel_find (sec) + asection *sec; { lang_statement_union_type *u; lang_output_section_statement_type *lookup; + lang_output_section_statement_type *last = NULL; + lang_output_section_statement_type *last_rel = NULL; + lang_output_section_statement_type *last_rel_alloc = NULL; + int rela = sec->name[4] == 'a'; - for (u = lang_output_section_statement.head; - u != (lang_statement_union_type *) NULL; - u = lookup->next) + for (u = lang_output_section_statement.head; u; u = lookup->next) { lookup = &u->output_section_statement; - if (strncmp (".rel", lookup->name, 4) == 0 - && lookup->bfd_section != NULL - && (lookup->bfd_section->flags & SEC_ALLOC) != 0) + if (strncmp (".rel", lookup->name, 4) == 0) { - return lookup; + /* Don't place after .rel.plt as doing so results in wrong + dynamic tags. Also, place allocated reloc sections before + non-allocated. */ + int lookrela = lookup->name[4] == 'a'; + + if (strcmp (".plt", lookup->name + 4 + lookrela) == 0 + || (lookup->bfd_section != NULL + && (lookup->bfd_section->flags & SEC_ALLOC) == 0)) + break; + last = lookup; + if (rela == lookrela) + last_rel = lookup; + if (lookup->bfd_section != NULL + && (lookup->bfd_section->flags & SEC_ALLOC) != 0) + last_rel_alloc = lookup; } } - return (lang_output_section_statement_type *) NULL; + + if (last_rel_alloc) + return last_rel_alloc; + + if (last_rel) + return last_rel; + + return last; } /* Find the last output section before given output statement. @@ -1069,13 +1091,24 @@ gld${EMULATION_NAME}_place_orphan (file, s) lang_statement_list_type add; etree_type *address; const char *secname; - const char *outsecname; const char *ps = NULL; lang_output_section_statement_type *os; + int isdyn = 0; secname = bfd_get_section_name (s->owner, s); + if (! link_info.relocateable + && link_info.combreloc + && (s->flags & SEC_ALLOC) + && strncmp (secname, ".rel", 4) == 0) + { + if (secname[4] == 'a') + secname = ".rela.dyn"; + else + secname = ".rel.dyn"; + isdyn = 1; + } - if (! config.unique_orphan_sections && ! unique_section_p (secname)) + if (isdyn || (!config.unique_orphan_sections && !unique_section_p (secname))) { /* Look through the script to see where to place this section. */ os = lang_output_section_find (secname); @@ -1138,27 +1171,10 @@ gld${EMULATION_NAME}_place_orphan (file, s) && HAVE_SECTION (hold_data, ".data")) place = &hold_data; else if (strncmp (secname, ".rel", 4) == 0 + && (s->flags & SEC_LOAD) != 0 && (hold_rel.os != NULL - || (hold_rel.os = output_rel_find ()) != NULL)) - { - if (! link_info.relocateable && link_info.combreloc) - { - if (strncmp (secname, ".rela", 5) == 0) - os = lang_output_section_find (".rela.dyn"); - else - os = lang_output_section_find (".rel.dyn"); - - if (os != NULL - && os->bfd_section != NULL - && ((s->flags ^ os->bfd_section->flags) - & (SEC_LOAD | SEC_ALLOC)) == 0) - { - lang_add_section (&os->children, s, os, file); - return true; - } - } - place = &hold_rel; - } + || (hold_rel.os = output_rel_find (s)) != NULL)) + place = &hold_rel; else if ((s->flags & (SEC_CODE | SEC_READONLY)) == SEC_READONLY && HAVE_SECTION (hold_rodata, ".rodata")) place = &hold_rodata; @@ -1171,13 +1187,10 @@ gld${EMULATION_NAME}_place_orphan (file, s) /* Choose a unique name for the section. This will be needed if the same section name appears in the input file with different loadable or allocatable characteristics. */ - outsecname = secname; - if (bfd_get_section_by_name (output_bfd, outsecname) != NULL) + if (bfd_get_section_by_name (output_bfd, secname) != NULL) { - outsecname = bfd_get_unique_section_name (output_bfd, - outsecname, - &count); - if (outsecname == NULL) + secname = bfd_get_unique_section_name (output_bfd, secname, &count); + if (secname == NULL) einfo ("%F%P: place_orphan failed: %E\n"); } @@ -1198,7 +1211,7 @@ gld${EMULATION_NAME}_place_orphan (file, s) { /* If the name of the section is representable in C, then create symbols to mark the start and the end of the section. */ - for (ps = outsecname; *ps != '\0'; ps++) + for (ps = secname; *ps != '\0'; ps++) if (! ISALNUM (*ps) && *ps != '_') break; if (*ps == '\0') @@ -1206,8 +1219,8 @@ gld${EMULATION_NAME}_place_orphan (file, s) char *symname; etree_type *e_align; - symname = (char *) xmalloc (ps - outsecname + sizeof "__start_"); - sprintf (symname, "__start_%s", outsecname); + symname = (char *) xmalloc (ps - secname + sizeof "__start_"); + sprintf (symname, "__start_%s", secname); e_align = exp_unop (ALIGN_K, exp_intop ((bfd_vma) 1 << s->alignment_power)); lang_add_assignment (exp_assop ('=', symname, e_align)); @@ -1219,7 +1232,7 @@ gld${EMULATION_NAME}_place_orphan (file, s) else address = NULL; - os = lang_enter_output_section_statement (outsecname, address, 0, + os = lang_enter_output_section_statement (secname, address, 0, (bfd_vma) 0, (etree_type *) NULL, (etree_type *) NULL, @@ -1240,8 +1253,8 @@ gld${EMULATION_NAME}_place_orphan (file, s) if (place != NULL) stat_ptr = &add; - symname = (char *) xmalloc (ps - outsecname + sizeof "__stop_"); - sprintf (symname, "__stop_%s", outsecname); + symname = (char *) xmalloc (ps - secname + sizeof "__stop_"); + sprintf (symname, "__stop_%s", secname); lang_add_assignment (exp_assop ('=', symname, exp_nameop (NAME, "."))); } diff --git a/contrib/binutils/ld/emultempl/pe.em b/contrib/binutils/ld/emultempl/pe.em index 37146ab..474b984 100644 --- a/contrib/binutils/ld/emultempl/pe.em +++ b/contrib/binutils/ld/emultempl/pe.em @@ -56,7 +56,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include "ldlang.h" #include "ldfile.h" #include "ldemul.h" -#include "ldgram.h" +#include <ldgram.h> #include "ldlex.h" #include "ldmisc.h" #include "ldctor.h" diff --git a/contrib/binutils/ld/ld.1 b/contrib/binutils/ld/ld.1 index 79d5d65..9d7a53e 100644 --- a/contrib/binutils/ld/ld.1 +++ b/contrib/binutils/ld/ld.1 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man v1.3, Pod::Parser v1.13 +.\" Automatically generated by Pod::Man v1.34, Pod::Parser v1.13 .\" .\" Standard preamble: .\" ======================================================================== @@ -21,7 +21,6 @@ .. .de Ve \" End verbatim text .ft R - .fi .. .\" Set up some character translations and predefined strings. \*(-- will @@ -129,10 +128,9 @@ .\" ======================================================================== .\" .IX Title "LD 1" -.TH LD 1 "2002-08-05" "binutils-2.12.91" "GNU Development Tools" -.UC +.TH LD 1 "2002-10-30" "binutils-2.13" "GNU Development Tools" .SH "NAME" -ld \- Using \s-1LD\s0, the \s-1GNU\s0 linker +ld \- Using LD, the GNU linker .SH "SYNOPSIS" .IX Header "SYNOPSIS" ld [\fBoptions\fR] \fIobjfile\fR ... @@ -177,6 +175,7 @@ link a file \f(CW\*(C`hello.o\*(C'\fR: .Vb 1 \& ld -o <output> /lib/crt0.o hello.o -lc .Ve +.PP This tells \fBld\fR to produce a file called \fIoutput\fR as the result of linking the file \f(CW\*(C`/lib/crt0.o\*(C'\fR with \f(CW\*(C`hello.o\*(C'\fR and the library \f(CW\*(C`libc.a\*(C'\fR, which will come from the standard search @@ -242,6 +241,7 @@ compiler driver) like this: .Vb 1 \& gcc -Wl,--startgroup foo.o bar.o -Wl,--endgroup .Ve +.PP This is important, because otherwise the compiler driver program may silently drop the linker options, resulting in a bad link. .PP @@ -958,6 +958,11 @@ shared libraries is normal since the kernel patches them at load time to select which function is most appropriate for the current architecture. I.E. dynamically select an appropriate memset function. Apparently it is also normal for \s-1HPPA\s0 shared libraries to have undefined symbols. +.IP "\fB\-\-no\-undefined\-version\fR" 4 +.IX Item "--no-undefined-version" +Normally when a symbol has an undefined version, the linker will ignore +it. This option disallows symbols with undefined version and a fatal error +will be issued instead. .IP "\fB\-\-no\-warn\-mismatch\fR" 4 .IX Item "--no-warn-mismatch" Normally \fBld\fR will give an error if you try to link together input @@ -1350,6 +1355,7 @@ Here is a trivial example: \& return __real_malloc (c); \& } .Ve +.Sp If you link other code with this file using \fB\-\-wrap malloc\fR, then all calls to \f(CW\*(C`malloc\*(C'\fR will call the function \f(CW\*(C`_\|_wrap_malloc\*(C'\fR instead. The call to \f(CW\*(C`_\|_real_malloc\*(C'\fR in \f(CW\*(C`_\|_wrap_malloc\*(C'\fR will @@ -1566,6 +1572,7 @@ a variable, or b) make the 'constant' index a variable. Thus: \& extern_array[1] --> \& { volatile type *t=extern_array; t[1] } .Ve +.Sp or .Sp .Vb 3 @@ -1573,6 +1580,7 @@ or \& extern_array[1] --> \& { volatile int t=1; extern_array[t] } .Ve +.Sp For structs (and most other multiword data types) the only option is to make the struct itself (or the long long, or the ...) variable: .Sp @@ -1581,6 +1589,7 @@ is to make the struct itself (or the long long, or the ...) variable: \& extern_struct.field --> \& { volatile struct s *t=&extern_struct; t->field } .Ve +.Sp or .Sp .Vb 3 @@ -1588,6 +1597,7 @@ or \& extern_ll --> \& { volatile long long * local_ll=&extern_ll; *local_ll } .Ve +.Sp A second method of dealing with this difficulty is to abandon \&'auto\-import' for the offending symbol and mark it with \&\f(CW\*(C`_\|_declspec(dllimport)\*(C'\fR. However, in practice that @@ -1608,6 +1618,7 @@ Original: \& printf("%d\en",arr[1]); \& } .Ve +.Sp Solution 1: .Sp .Vb 9 @@ -1621,6 +1632,7 @@ Solution 1: \& printf("%d\en",parr[1]); \& } .Ve +.Sp Solution 2: .Sp .Vb 14 @@ -1639,6 +1651,7 @@ Solution 2: \& printf("%d\en",arr[1]); \& } .Ve +.Sp A third way to avoid this problem is to re-code your library to use a functional interface rather than a data interface for the offending variables (e.g. \fIset_foo()\fR and \fIget_foo()\fR accessor diff --git a/contrib/binutils/ld/ldctor.c b/contrib/binutils/ld/ldctor.c index 9e79921..aa6a05b 100644 --- a/contrib/binutils/ld/ldctor.c +++ b/contrib/binutils/ld/ldctor.c @@ -29,7 +29,7 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA #include "ldexp.h" #include "ldlang.h" #include "ldmisc.h" -#include "ldgram.h" +#include <ldgram.h> #include "ldmain.h" #include "ldctor.h" diff --git a/contrib/binutils/ld/ldexp.c b/contrib/binutils/ld/ldexp.c index e45c470..e88e322 100644 --- a/contrib/binutils/ld/ldexp.c +++ b/contrib/binutils/ld/ldexp.c @@ -36,7 +36,7 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA #include "ldmain.h" #include "ldmisc.h" #include "ldexp.h" -#include "ldgram.h" +#include <ldgram.h> #include "ldlang.h" #include "libiberty.h" #include "safe-ctype.h" diff --git a/contrib/binutils/ld/ldfile.c b/contrib/binutils/ld/ldfile.c index 9fb2b2d..d706eec 100644 --- a/contrib/binutils/ld/ldfile.c +++ b/contrib/binutils/ld/ldfile.c @@ -31,7 +31,7 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA #include "ldlang.h" #include "ldfile.h" #include "ldmain.h" -#include "ldgram.h" +#include <ldgram.h> #include "ldlex.h" #include "ldemul.h" #include "libiberty.h" @@ -131,7 +131,99 @@ ldfile_try_open_bfd (attempt, entry) if (check != NULL) { if (! bfd_check_format (check, bfd_object)) - return true; + { + if (check == entry->the_bfd + && bfd_get_error () == bfd_error_file_not_recognized + && ! ldemul_unrecognized_file (entry)) + { + int token, skip = 0; + char *arg, *arg1, *arg2, *arg3; + extern FILE *yyin; + + /* Try to interpret the file as a linker script. */ + ldfile_open_command_file (attempt); + + ldfile_assumed_script = true; + parser_input = input_selected; + ldlex_both (); + token = INPUT_SCRIPT; + while (token != 0) + { + switch (token) + { + case OUTPUT_FORMAT: + if ((token = yylex ()) != '(') + continue; + if ((token = yylex ()) != NAME) + continue; + arg1 = yylval.name; + arg2 = NULL; + arg3 = NULL; + token = yylex (); + if (token == ',') + { + if ((token = yylex ()) != NAME) + { + free (arg1); + continue; + } + arg2 = yylval.name; + if ((token = yylex ()) != ',' + || (token = yylex ()) != NAME) + { + free (arg1); + free (arg2); + continue; + } + arg3 = yylval.name; + token = yylex (); + } + if (token == ')') + { + switch (command_line.endian) + { + default: + case ENDIAN_UNSET: + arg = arg1; break; + case ENDIAN_BIG: + arg = arg2 ? arg2 : arg1; break; + case ENDIAN_LITTLE: + arg = arg3 ? arg3 : arg1; break; + } + if (strcmp (arg, lang_get_output_target ()) != 0) + skip = 1; + } + free (arg1); + if (arg2) free (arg2); + if (arg3) free (arg3); + break; + case NAME: + case LNAME: + case VERS_IDENTIFIER: + case VERS_TAG: + free (yylval.name); + break; + case INT: + if (yylval.bigint.str) + free (yylval.bigint.str); + break; + } + token = yylex (); + } + ldfile_assumed_script = false; + fclose (yyin); + yyin = NULL; + if (skip) + { + einfo (_("%P: skipping incompatible %s when searching for %s\n"), + attempt, entry->local_sym_name); + bfd_close (entry->the_bfd); + entry->the_bfd = NULL; + return false; + } + } + return true; + } if ((bfd_arch_get_compatible (check, output_bfd) == NULL) /* XCOFF archives can have 32 and 64 bit objects */ diff --git a/contrib/binutils/ld/ldgram.y b/contrib/binutils/ld/ldgram.y index 3de9326..d2533c2 100644 --- a/contrib/binutils/ld/ldgram.y +++ b/contrib/binutils/ld/ldgram.y @@ -626,11 +626,11 @@ memory_spec_list: ; -memory_spec: NAME - { region = lang_memory_region_lookup($1); } +memory_spec: NAME + { region = lang_memory_region_lookup($1); } attributes_opt ':' origin_spec opt_comma length_spec - + {} ; origin_spec: @@ -845,6 +845,7 @@ section: NAME { ldlex_expression(); } lang_leave_output_section_statement ($14, $11, $13, $12); } opt_comma + {} | OVERLAY { ldlex_expression (); } opt_exp_without_type opt_nocrossrefs opt_at diff --git a/contrib/binutils/ld/ldlang.c b/contrib/binutils/ld/ldlang.c index 79de098..0eb06b2 100644 --- a/contrib/binutils/ld/ldlang.c +++ b/contrib/binutils/ld/ldlang.c @@ -31,7 +31,7 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA #include "ldmain.h" #include "ldexp.h" #include "ldlang.h" -#include "ldgram.h" +#include <ldgram.h> #include "ldlex.h" #include "ldmisc.h" #include "ldctor.h" @@ -1783,6 +1783,29 @@ get_first_input_target () return target; } +const char * +lang_get_output_target () +{ + const char *target; + + /* Has the user told us which output format to use? */ + if (output_target != (char *) NULL) + return output_target; + + /* No - has the current target been set to something other than + the default? */ + if (current_target != default_target) + return current_target; + + /* No - can we determine the format of the first input file? */ + target = get_first_input_target (); + if (target != NULL) + return target; + + /* Failed - use the default output target. */ + return default_target; +} + /* Open the output file. */ static bfd * @@ -1791,24 +1814,7 @@ open_output (name) { bfd *output; - /* Has the user told us which output format to use? */ - if (output_target == (char *) NULL) - { - /* No - has the current target been set to something other than - the default? */ - if (current_target != default_target) - output_target = current_target; - - /* No - can we determine the format of the first input file? */ - else - { - output_target = get_first_input_target (); - - /* Failed - use the default output target. */ - if (output_target == NULL) - output_target = default_target; - } - } + output_target = lang_get_output_target (); /* Has the user requested a particular endianness on the command line? */ @@ -2012,7 +2018,7 @@ lang_reasonable_defaults () default_common_section = lang_output_section_statement_lookup (".bss"); - if (placed_commons == false) + if (!placed_commons) { lang_wild_statement_type *new = new_stat (lang_wild_statement, @@ -2768,7 +2774,7 @@ size_input_section (this_ptr, output_section_statement, fill, dot) lang_input_section_type *is = &((*this_ptr)->input_section); asection *i = is->section; - if (is->ifile->just_syms_flag == false) + if (!is->ifile->just_syms_flag) { unsigned opb = bfd_arch_mach_octets_per_byte (ldfile_output_architecture, ldfile_output_machine); @@ -3023,11 +3029,10 @@ lang_size_sections_1 (s, output_section_statement, prev, fill, dot, relax) abs_output_section, lang_allocating_phase_enum, dot, &dot); - if (r.valid_p == false) - { - einfo (_("%F%S: non constant address expression for section %s\n"), - os->name); - } + if (!r.valid_p) + einfo (_("%F%S: non constant address expression for section %s\n"), + os->name); + dot = r.value + r.section->bfd_section->vma; } @@ -3394,7 +3399,7 @@ lang_do_assignments (s, output_section_statement, fill, dot) abs_output_section, lang_final_phase_enum, dot, &dot); s->data_statement.value = value.value; - if (value.valid_p == false) + if (!value.valid_p) einfo (_("%F%P: invalid data statement\n")); } { @@ -3431,7 +3436,7 @@ lang_do_assignments (s, output_section_statement, fill, dot) abs_output_section, lang_final_phase_enum, dot, &dot); s->reloc_statement.addend_value = value.value; - if (value.valid_p == false) + if (!value.valid_p) einfo (_("%F%P: invalid reloc statement\n")); } dot += bfd_get_reloc_size (s->reloc_statement.howto) / opb; @@ -4014,7 +4019,7 @@ lang_add_output (name, from_script) int from_script; { /* Make -o on command line override OUTPUT in script. */ - if (had_output_filename == false || !from_script) + if (!had_output_filename || !from_script) { output_filename = name; had_output_filename = true; diff --git a/contrib/binutils/ld/ldlang.h b/contrib/binutils/ld/ldlang.h index cb4b6d3..57c8c51 100644 --- a/contrib/binutils/ld/ldlang.h +++ b/contrib/binutils/ld/ldlang.h @@ -483,5 +483,6 @@ extern void lang_register_vers_node struct bfd_elf_version_deps *)); boolean unique_section_p PARAMS ((const char *)); extern void lang_add_unique PARAMS ((const char *)); +extern const char *lang_get_output_target PARAMS ((void)); #endif diff --git a/contrib/binutils/ld/ldlex.l b/contrib/binutils/ld/ldlex.l index 68ed7fc..5b799c4 100644 --- a/contrib/binutils/ld/ldlex.l +++ b/contrib/binutils/ld/ldlex.l @@ -42,7 +42,7 @@ This was written by steve chamberlain #include "ldmisc.h" #include "ldexp.h" #include "ldlang.h" -#include "ldgram.h" +#include <ldgram.h> #include "ldfile.h" #include "ldlex.h" #include "ldmain.h" diff --git a/contrib/binutils/ld/ldmain.c b/contrib/binutils/ld/ldmain.c index 3a0828f..41d778f 100644 --- a/contrib/binutils/ld/ldmain.c +++ b/contrib/binutils/ld/ldmain.c @@ -36,7 +36,7 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA #include "ldwrite.h" #include "ldexp.h" #include "ldlang.h" -#include "ldgram.h" +#include <ldgram.h> #include "ldlex.h" #include "ldfile.h" #include "ldemul.h" diff --git a/contrib/binutils/ld/ldmisc.c b/contrib/binutils/ld/ldmisc.c index 2869ba9..7f9746a 100644 --- a/contrib/binutils/ld/ldmisc.c +++ b/contrib/binutils/ld/ldmisc.c @@ -36,7 +36,7 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA #include "ldmisc.h" #include "ldexp.h" #include "ldlang.h" -#include "ldgram.h" +#include <ldgram.h> #include "ldlex.h" #include "ldmain.h" #include "ldfile.h" diff --git a/contrib/binutils/ld/ldwrite.c b/contrib/binutils/ld/ldwrite.c index e5949c1..eb31171 100644 --- a/contrib/binutils/ld/ldwrite.c +++ b/contrib/binutils/ld/ldwrite.c @@ -29,7 +29,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include "ldlang.h" #include "ldwrite.h" #include "ldmisc.h" -#include "ldgram.h" +#include <ldgram.h> #include "ldmain.h" static void build_link_order PARAMS ((lang_statement_union_type *)); diff --git a/contrib/binutils/ld/lexsup.c b/contrib/binutils/ld/lexsup.c index 4acb4fd..f0d4c50 100644 --- a/contrib/binutils/ld/lexsup.c +++ b/contrib/binutils/ld/lexsup.c @@ -33,7 +33,7 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA #include "ldmisc.h" #include "ldexp.h" #include "ldlang.h" -#include "ldgram.h" +#include <ldgram.h> #include "ldlex.h" #include "ldfile.h" #include "ldver.h" diff --git a/contrib/binutils/ld/mri.c b/contrib/binutils/ld/mri.c index 89514e9..62a7f08 100644 --- a/contrib/binutils/ld/mri.c +++ b/contrib/binutils/ld/mri.c @@ -31,7 +31,7 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA #include "ldlang.h" #include "ldmisc.h" #include "mri.h" -#include "ldgram.h" +#include <ldgram.h> #include "libiberty.h" struct section_name_struct { diff --git a/contrib/binutils/ld/pe-dll.c b/contrib/binutils/ld/pe-dll.c index fd70c78..e59c32d 100644 --- a/contrib/binutils/ld/pe-dll.c +++ b/contrib/binutils/ld/pe-dll.c @@ -32,7 +32,7 @@ #include "ldlang.h" #include "ldwrite.h" #include "ldmisc.h" -#include "ldgram.h" +#include <ldgram.h> #include "ldmain.h" #include "ldfile.h" #include "ldemul.h" @@ -257,6 +257,8 @@ static autofilter_entry_type autofilter_symbolprefixlist[] = /* { "__imp_", 6 }, */ /* Do __imp_ explicitly to save time. */ { "__rtti_", 7 }, + /* Don't re-export auto-imported symbols. */ + { "_nm_", 4 }, { "__builtin_", 10 }, /* Don't export symbols specifying internal DLL layout. */ { "_head_", 6 }, @@ -1814,8 +1816,10 @@ make_one (exp, parent) quick_symbol (abfd, U ("_head_"), dll_symname, "", UNDSEC, BSF_GLOBAL, 0); quick_symbol (abfd, U ("_imp__"), exp->internal_name, "", id5, BSF_GLOBAL, 0); /* Symbol to reference ord/name of imported - symbol, used to implement auto-import. */ - quick_symbol (abfd, U("_nm__"), exp->internal_name, "", id6, BSF_GLOBAL, 0); + data symbol, used to implement auto-import. */ + if (exp->flag_data) + quick_symbol (abfd, U("_nm__"), exp->internal_name, "", id6, + BSF_GLOBAL,0); if (pe_dll_compat_implib) quick_symbol (abfd, U ("__imp_"), exp->internal_name, "", id5, BSF_GLOBAL, 0); @@ -1974,7 +1978,7 @@ make_import_fixup_mark (rel) struct symbol_cache_entry *sym = *rel->sym_ptr_ptr; bfd *abfd = bfd_asymbol_bfd (sym); - struct coff_link_hash_entry *myh = NULL; + struct bfd_link_hash_entry *bh; if (!fixup_name) { @@ -1996,15 +2000,20 @@ make_import_fixup_mark (rel) sprintf (fixup_name, "__fu%d_%s", counter++, sym->name); + bh = NULL; bfd_coff_link_add_one_symbol (&link_info, abfd, fixup_name, BSF_GLOBAL, current_sec, /* sym->section, */ - rel->address, NULL, true, false, - (struct bfd_link_hash_entry **) &myh); + rel->address, NULL, true, false, &bh); + + if (0) + { + struct coff_link_hash_entry *myh; + + myh = (struct coff_link_hash_entry *) bh; + printf ("type:%d\n", myh->type); + printf ("%s\n", myh->root.u.def.section->name); + } -#if 0 - printf ("type:%d\n", myh->type); - printf ("%s\n", myh->root.u.def.section->name); -#endif return fixup_name; } diff --git a/contrib/binutils/ld/po/ld.pot b/contrib/binutils/ld/po/ld.pot index 131bef0..87119b5 100644 --- a/contrib/binutils/ld/po/ld.pot +++ b/contrib/binutils/ld/po/ld.pot @@ -1,12 +1,13 @@ # SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR Free Software Foundation, Inc. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" -"POT-Creation-Date: 2002-07-23 15:58-0400\n" +"POT-Creation-Date: 2002-10-30 10:08-0500\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language-Team: LANGUAGE <LL@li.org>\n" @@ -249,6 +250,7 @@ msgid "Use --disable-stdcall-fixup to disable these fixups\n" msgstr "" #: emultempl/pe.em:879 +#, c-format msgid "%C: Cannot get section contents - auto-import exception\n" msgstr "" @@ -277,8 +279,8 @@ msgstr "" msgid "Errors encountered processing file %s for interworking" msgstr "" -#: emultempl/pe.em:1305 ldlang.c:2065 ldlang.c:4608 ldlang.c:4641 -#: ldmain.c:1061 +#: emultempl/pe.em:1305 ldlang.c:2071 ldlang.c:4613 ldlang.c:4646 +#: ldmain.c:1062 msgid "%P%F: bfd_link_hash_lookup failed: %E\n" msgstr "" @@ -317,11 +319,11 @@ msgstr "" msgid "%B%F: could not read symbols; %E\n" msgstr "" -#: ldcref.c:469 ldmain.c:1127 ldmain.c:1131 +#: ldcref.c:469 ldmain.c:1128 ldmain.c:1132 msgid "%B%F: could not read symbols: %E\n" msgstr "" -#: ldcref.c:537 ldcref.c:544 ldmain.c:1177 ldmain.c:1184 +#: ldcref.c:537 ldcref.c:544 ldmain.c:1178 ldmain.c:1185 msgid "%B%F: could not read relocs: %E\n" msgstr "" @@ -357,10 +359,12 @@ msgid "" msgstr "" #: ldemul.c:225 +#, c-format msgid "%S SYSLIB ignored\n" msgstr "" #: ldemul.c:232 +#, c-format msgid "%S HLL ignored\n" msgstr "" @@ -376,55 +380,64 @@ msgstr "" msgid " no emulation specific options.\n" msgstr "" -#: ldexp.c:174 +#: ldexp.c:184 msgid "%F%P: %s uses undefined section %s\n" msgstr "" -#: ldexp.c:176 +#: ldexp.c:186 msgid "%F%P: %s forward reference of section %s\n" msgstr "" -#: ldexp.c:304 +#: ldexp.c:400 +#, c-format msgid "%F%S %% by zero\n" msgstr "" -#: ldexp.c:311 +#: ldexp.c:407 +#, c-format msgid "%F%S / by zero\n" msgstr "" -#: ldexp.c:463 +#: ldexp.c:581 +#, c-format msgid "%X%S: unresolvable symbol `%s' referenced in expression\n" msgstr "" -#: ldexp.c:483 +#: ldexp.c:601 +#, c-format msgid "%F%S: undefined symbol `%s' referenced in expression\n" msgstr "" -#: ldexp.c:685 +#: ldexp.c:726 +#, c-format msgid "%F%S can not PROVIDE assignment to location counter\n" msgstr "" -#: ldexp.c:695 +#: ldexp.c:736 +#, c-format msgid "%F%S invalid assignment to location counter\n" msgstr "" -#: ldexp.c:699 +#: ldexp.c:740 +#, c-format msgid "%F%S assignment to location counter invalid outside of SECTION\n" msgstr "" -#: ldexp.c:708 +#: ldexp.c:749 msgid "%F%S cannot move location counter backwards (from %V to %V)\n" msgstr "" -#: ldexp.c:735 +#: ldexp.c:776 msgid "%P%F:%s: hash creation failed\n" msgstr "" -#: ldexp.c:1037 ldexp.c:1071 +#: ldexp.c:1078 ldexp.c:1112 +#, c-format msgid "%F%S nonconstant expression for %s\n" msgstr "" -#: ldexp.c:1126 +#: ldexp.c:1167 +#, c-format msgid "%F%S non constant expression for %s\n" msgstr "" @@ -442,45 +455,45 @@ msgstr "" msgid "%F%P: invalid BFD target `%s'\n" msgstr "" -#: ldfile.c:142 +#: ldfile.c:218 ldfile.c:234 msgid "%P: skipping incompatible %s when searching for %s\n" msgstr "" -#: ldfile.c:234 +#: ldfile.c:326 msgid "%F%P: cannot open %s for %s: %E\n" msgstr "" -#: ldfile.c:237 +#: ldfile.c:329 msgid "%F%P: cannot open %s: %E\n" msgstr "" -#: ldfile.c:267 +#: ldfile.c:359 msgid "%F%P: cannot find %s\n" msgstr "" -#: ldfile.c:286 ldfile.c:302 +#: ldfile.c:378 ldfile.c:394 #, c-format msgid "cannot find script file %s\n" msgstr "" -#: ldfile.c:288 ldfile.c:304 +#: ldfile.c:380 ldfile.c:396 #, c-format msgid "opened script file %s\n" msgstr "" -#: ldfile.c:353 +#: ldfile.c:445 msgid "%P%F: cannot open linker script file %s: %E\n" msgstr "" -#: ldfile.c:391 +#: ldfile.c:483 msgid "%P%F: unknown architecture: %s\n" msgstr "" -#: ldfile.c:407 +#: ldfile.c:499 msgid "%P%F: target architecture respecified\n" msgstr "" -#: ldfile.c:461 +#: ldfile.c:553 msgid "%P%F: cannot represent machine `%s'\n" msgstr "" @@ -558,128 +571,129 @@ msgstr "" msgid "%F%B: could not read symbols: %E\n" msgstr "" -#: ldlang.c:1853 +#: ldlang.c:1859 msgid "" "%P: warning: could not find any targets that match endianness requirement\n" msgstr "" -#: ldlang.c:1866 +#: ldlang.c:1872 msgid "%P%F: target %s not found\n" msgstr "" -#: ldlang.c:1868 +#: ldlang.c:1874 msgid "%P%F: cannot open output file %s: %E\n" msgstr "" -#: ldlang.c:1878 +#: ldlang.c:1884 msgid "%P%F:%s: can not make object file: %E\n" msgstr "" -#: ldlang.c:1882 +#: ldlang.c:1888 msgid "%P%F:%s: can not set architecture: %E\n" msgstr "" -#: ldlang.c:1886 +#: ldlang.c:1892 msgid "%P%F: can not create link hash table: %E\n" msgstr "" -#: ldlang.c:2235 +#: ldlang.c:2241 msgid " load address 0x%V" msgstr "" -#: ldlang.c:2375 +#: ldlang.c:2381 msgid "%W (size before relaxing)\n" msgstr "" -#: ldlang.c:2462 +#: ldlang.c:2468 #, c-format msgid "Address of section %s set to " msgstr "" -#: ldlang.c:2623 +#: ldlang.c:2629 #, c-format msgid "Fail with %d\n" msgstr "" -#: ldlang.c:2868 +#: ldlang.c:2874 msgid "%X%P: section %s [%V -> %V] overlaps section %s [%V -> %V]\n" msgstr "" -#: ldlang.c:2897 +#: ldlang.c:2903 msgid "%X%P: address 0x%v of %B section %s is not within region %s\n" msgstr "" -#: ldlang.c:2905 +#: ldlang.c:2911 msgid "%X%P: region %s is full (%B section %s)\n" msgstr "" -#: ldlang.c:2955 +#: ldlang.c:2961 msgid "%P%X: Internal error on COFF shared library section %s\n" msgstr "" -#: ldlang.c:2999 +#: ldlang.c:3005 msgid "%P: warning: no memory region specified for section `%s'\n" msgstr "" -#: ldlang.c:3014 +#: ldlang.c:3020 msgid "%P: warning: changing start of section %s by %u bytes\n" msgstr "" -#: ldlang.c:3028 +#: ldlang.c:3033 +#, c-format msgid "%F%S: non constant address expression for section %s\n" msgstr "" -#: ldlang.c:3203 +#: ldlang.c:3208 msgid "%P%F: can't relax section: %E\n" msgstr "" -#: ldlang.c:3398 +#: ldlang.c:3403 msgid "%F%P: invalid data statement\n" msgstr "" -#: ldlang.c:3435 +#: ldlang.c:3440 msgid "%F%P: invalid reloc statement\n" msgstr "" -#: ldlang.c:3574 +#: ldlang.c:3579 msgid "%P%F:%s: can't set start address\n" msgstr "" -#: ldlang.c:3587 ldlang.c:3605 +#: ldlang.c:3592 ldlang.c:3610 msgid "%P%F: can't set start address\n" msgstr "" -#: ldlang.c:3599 +#: ldlang.c:3604 msgid "%P: warning: cannot find entry symbol %s; defaulting to %V\n" msgstr "" -#: ldlang.c:3610 +#: ldlang.c:3615 msgid "%P: warning: cannot find entry symbol %s; not setting start address\n" msgstr "" -#: ldlang.c:3660 +#: ldlang.c:3665 msgid "" "%P%F: Relocatable linking with relocations from format %s (%B) to format %s " "(%B) is not supported\n" msgstr "" -#: ldlang.c:3669 +#: ldlang.c:3674 msgid "" "%P: warning: %s architecture of input file `%B' is incompatible with %s " "output\n" msgstr "" -#: ldlang.c:3690 +#: ldlang.c:3695 msgid "%E%X: failed to merge target specific data of file %B\n" msgstr "" -#: ldlang.c:3779 +#: ldlang.c:3784 msgid "" "\n" "Allocating common symbols\n" msgstr "" -#: ldlang.c:3780 +#: ldlang.c:3785 msgid "" "Common symbol size file\n" "\n" @@ -688,52 +702,52 @@ msgstr "" #. This message happens when using the #. svr3.ifile linker script, so I have #. disabled it. -#: ldlang.c:3858 +#: ldlang.c:3863 msgid "%P: no [COMMON] command, defaulting to .bss\n" msgstr "" -#: ldlang.c:3917 +#: ldlang.c:3922 msgid "%P%F: invalid syntax in flags\n" msgstr "" -#: ldlang.c:4532 +#: ldlang.c:4537 msgid "%P%Fmultiple STARTUP files\n" msgstr "" -#: ldlang.c:4575 +#: ldlang.c:4580 msgid "%X%P:%S: section has both a load address and a load region\n" msgstr "" -#: ldlang.c:4825 +#: ldlang.c:4830 msgid "%F%P: bfd_record_phdr failed: %E\n" msgstr "" -#: ldlang.c:4844 +#: ldlang.c:4849 msgid "%X%P: section `%s' assigned to non-existent phdr `%s'\n" msgstr "" -#: ldlang.c:5143 +#: ldlang.c:5150 msgid "%X%P: unknown language `%s' in version information\n" msgstr "" -#: ldlang.c:5195 +#: ldlang.c:5202 msgid "" "%X%P: anonymous version tag cannot be combined with other version tags\n" msgstr "" -#: ldlang.c:5202 +#: ldlang.c:5209 msgid "%X%P: duplicate version tag `%s'\n" msgstr "" -#: ldlang.c:5215 ldlang.c:5228 +#: ldlang.c:5222 ldlang.c:5235 msgid "%X%P: duplicate expression `%s' in version information\n" msgstr "" -#: ldlang.c:5270 +#: ldlang.c:5277 msgid "%X%P: unable to find version dependency `%s'\n" msgstr "" -#: ldlang.c:5292 +#: ldlang.c:5299 msgid "%X%P: unable to read .exports section contents\n" msgstr "" @@ -741,209 +755,209 @@ msgstr "" msgid "%X%P: can't set BFD default target to `%s': %E\n" msgstr "" -#: ldmain.c:290 +#: ldmain.c:291 msgid "%P%F: -r and --mpc860c0 may not be used together\n" msgstr "" -#: ldmain.c:292 +#: ldmain.c:293 msgid "%P%F: --relax and -r may not be used together\n" msgstr "" -#: ldmain.c:294 +#: ldmain.c:295 msgid "%P%F: -r and -shared may not be used together\n" msgstr "" -#: ldmain.c:300 +#: ldmain.c:301 msgid "%P%F: -F may not be used without -shared\n" msgstr "" -#: ldmain.c:302 +#: ldmain.c:303 msgid "%P%F: -f may not be used without -shared\n" msgstr "" -#: ldmain.c:341 +#: ldmain.c:342 msgid "using external linker script:" msgstr "" -#: ldmain.c:343 +#: ldmain.c:344 msgid "using internal linker script:" msgstr "" -#: ldmain.c:377 +#: ldmain.c:378 msgid "%P%F: no input files\n" msgstr "" -#: ldmain.c:382 +#: ldmain.c:383 msgid "%P: mode %s\n" msgstr "" -#: ldmain.c:399 +#: ldmain.c:400 msgid "%P%F: cannot open map file %s: %E\n" msgstr "" -#: ldmain.c:432 +#: ldmain.c:433 msgid "%P: link errors found, deleting executable `%s'\n" msgstr "" -#: ldmain.c:443 +#: ldmain.c:444 msgid "%F%B: final close failed: %E\n" msgstr "" -#: ldmain.c:467 +#: ldmain.c:468 msgid "%X%P: unable to open for source of copy `%s'\n" msgstr "" -#: ldmain.c:469 +#: ldmain.c:470 msgid "%X%P: unable to open for destination of copy `%s'\n" msgstr "" -#: ldmain.c:475 +#: ldmain.c:476 msgid "%P: Error writing file `%s'\n" msgstr "" -#: ldmain.c:481 pe-dll.c:1463 +#: ldmain.c:482 pe-dll.c:1465 #, c-format msgid "%P: Error closing file `%s'\n" msgstr "" -#: ldmain.c:498 +#: ldmain.c:499 #, c-format msgid "%s: total time in link: %ld.%06ld\n" msgstr "" -#: ldmain.c:501 +#: ldmain.c:502 #, c-format msgid "%s: data size %ld\n" msgstr "" -#: ldmain.c:542 +#: ldmain.c:543 msgid "%P%F: missing argument to -m\n" msgstr "" -#: ldmain.c:670 ldmain.c:691 ldmain.c:722 +#: ldmain.c:671 ldmain.c:692 ldmain.c:723 msgid "%P%F: bfd_hash_table_init failed: %E\n" msgstr "" -#: ldmain.c:675 ldmain.c:694 +#: ldmain.c:676 ldmain.c:695 msgid "%P%F: bfd_hash_lookup failed: %E\n" msgstr "" -#: ldmain.c:709 +#: ldmain.c:710 msgid "%X%P: error: duplicate retain-symbols-file\n" msgstr "" -#: ldmain.c:753 +#: ldmain.c:754 msgid "%P%F: bfd_hash_lookup for insertion failed: %E\n" msgstr "" -#: ldmain.c:758 +#: ldmain.c:759 msgid "%P: `-retain-symbols-file' overrides `-s' and `-S'\n" msgstr "" -#: ldmain.c:834 +#: ldmain.c:835 msgid "" "Archive member included because of file (symbol)\n" "\n" msgstr "" -#: ldmain.c:905 +#: ldmain.c:906 msgid "%X%C: multiple definition of `%T'\n" msgstr "" -#: ldmain.c:908 +#: ldmain.c:909 msgid "%D: first defined here\n" msgstr "" -#: ldmain.c:912 +#: ldmain.c:913 msgid "%P: Disabling relaxation: it will not work with multiple definitions\n" msgstr "" -#: ldmain.c:943 +#: ldmain.c:944 msgid "%B: warning: definition of `%T' overriding common\n" msgstr "" -#: ldmain.c:946 +#: ldmain.c:947 msgid "%B: warning: common is here\n" msgstr "" -#: ldmain.c:953 +#: ldmain.c:954 msgid "%B: warning: common of `%T' overridden by definition\n" msgstr "" -#: ldmain.c:956 +#: ldmain.c:957 msgid "%B: warning: defined here\n" msgstr "" -#: ldmain.c:963 +#: ldmain.c:964 msgid "%B: warning: common of `%T' overridden by larger common\n" msgstr "" -#: ldmain.c:966 +#: ldmain.c:967 msgid "%B: warning: larger common is here\n" msgstr "" -#: ldmain.c:970 +#: ldmain.c:971 msgid "%B: warning: common of `%T' overriding smaller common\n" msgstr "" -#: ldmain.c:973 +#: ldmain.c:974 msgid "%B: warning: smaller common is here\n" msgstr "" -#: ldmain.c:977 +#: ldmain.c:978 msgid "%B: warning: multiple common of `%T'\n" msgstr "" -#: ldmain.c:979 +#: ldmain.c:980 msgid "%B: warning: previous common is here\n" msgstr "" -#: ldmain.c:1000 ldmain.c:1039 +#: ldmain.c:1001 ldmain.c:1040 msgid "%P: warning: global constructor %s used\n" msgstr "" -#: ldmain.c:1049 +#: ldmain.c:1050 msgid "%P%F: BFD backend error: BFD_RELOC_CTOR unsupported\n" msgstr "" -#: ldmain.c:1233 +#: ldmain.c:1234 msgid "%F%P: bfd_hash_table_init failed: %E\n" msgstr "" -#: ldmain.c:1240 +#: ldmain.c:1241 msgid "%F%P: bfd_hash_lookup failed: %E\n" msgstr "" -#: ldmain.c:1260 +#: ldmain.c:1261 msgid "%C: undefined reference to `%T'\n" msgstr "" -#: ldmain.c:1266 +#: ldmain.c:1267 msgid "%D: more undefined references to `%T' follow\n" msgstr "" -#: ldmain.c:1273 +#: ldmain.c:1274 msgid "%B: undefined reference to `%T'\n" msgstr "" -#: ldmain.c:1279 +#: ldmain.c:1280 msgid "%B: more undefined references to `%T' follow\n" msgstr "" -#: ldmain.c:1299 ldmain.c:1320 ldmain.c:1339 +#: ldmain.c:1300 ldmain.c:1321 ldmain.c:1340 msgid "%P%X: generated" msgstr "" -#: ldmain.c:1302 +#: ldmain.c:1303 msgid " relocation truncated to fit: %s %T" msgstr "" -#: ldmain.c:1323 +#: ldmain.c:1324 #, c-format msgid "dangerous relocation: %s\n" msgstr "" -#: ldmain.c:1342 +#: ldmain.c:1343 msgid " reloc refers to symbol `%T' which is not being output\n" msgstr "" @@ -1020,523 +1034,527 @@ msgstr "" msgid "%F%P: final link failed: %E\n" msgstr "" -#: lexsup.c:172 lexsup.c:267 +#: lexsup.c:173 lexsup.c:268 msgid "KEYWORD" msgstr "" -#: lexsup.c:172 +#: lexsup.c:173 msgid "Shared library control for HP/UX compatibility" msgstr "" -#: lexsup.c:175 +#: lexsup.c:176 msgid "ARCH" msgstr "" -#: lexsup.c:175 +#: lexsup.c:176 msgid "Set architecture" msgstr "" -#: lexsup.c:177 lexsup.c:336 +#: lexsup.c:178 lexsup.c:339 msgid "TARGET" msgstr "" -#: lexsup.c:177 +#: lexsup.c:178 msgid "Specify target for following input files" msgstr "" -#: lexsup.c:179 lexsup.c:220 lexsup.c:232 lexsup.c:241 lexsup.c:312 -#: lexsup.c:343 lexsup.c:383 +#: lexsup.c:180 lexsup.c:221 lexsup.c:233 lexsup.c:242 lexsup.c:313 +#: lexsup.c:346 lexsup.c:386 msgid "FILE" msgstr "" -#: lexsup.c:179 +#: lexsup.c:180 msgid "Read MRI format linker script" msgstr "" -#: lexsup.c:181 +#: lexsup.c:182 msgid "Force common symbols to be defined" msgstr "" -#: lexsup.c:185 lexsup.c:373 lexsup.c:375 lexsup.c:377 +#: lexsup.c:186 lexsup.c:376 lexsup.c:378 lexsup.c:380 msgid "ADDRESS" msgstr "" -#: lexsup.c:185 +#: lexsup.c:186 msgid "Set start address" msgstr "" -#: lexsup.c:187 +#: lexsup.c:188 msgid "Export all dynamic symbols" msgstr "" -#: lexsup.c:189 +#: lexsup.c:190 msgid "Link big-endian objects" msgstr "" -#: lexsup.c:191 +#: lexsup.c:192 msgid "Link little-endian objects" msgstr "" -#: lexsup.c:193 lexsup.c:196 +#: lexsup.c:194 lexsup.c:197 msgid "SHLIB" msgstr "" -#: lexsup.c:193 +#: lexsup.c:194 msgid "Auxiliary filter for shared object symbol table" msgstr "" -#: lexsup.c:196 +#: lexsup.c:197 msgid "Filter for shared object symbol table" msgstr "" -#: lexsup.c:198 +#: lexsup.c:199 msgid "Ignored" msgstr "" -#: lexsup.c:200 +#: lexsup.c:201 msgid "SIZE" msgstr "" -#: lexsup.c:200 +#: lexsup.c:201 msgid "Small data size (if no size, same as --shared)" msgstr "" -#: lexsup.c:203 +#: lexsup.c:204 msgid "FILENAME" msgstr "" -#: lexsup.c:203 +#: lexsup.c:204 msgid "Set internal name of shared library" msgstr "" -#: lexsup.c:205 +#: lexsup.c:206 msgid "PROGRAM" msgstr "" -#: lexsup.c:205 +#: lexsup.c:206 msgid "Set PROGRAM as the dynamic linker to use" msgstr "" -#: lexsup.c:207 +#: lexsup.c:208 msgid "LIBNAME" msgstr "" -#: lexsup.c:207 +#: lexsup.c:208 msgid "Search for library LIBNAME" msgstr "" -#: lexsup.c:209 +#: lexsup.c:210 msgid "DIRECTORY" msgstr "" -#: lexsup.c:209 +#: lexsup.c:210 msgid "Add DIRECTORY to library search path" msgstr "" -#: lexsup.c:211 +#: lexsup.c:212 msgid "EMULATION" msgstr "" -#: lexsup.c:211 +#: lexsup.c:212 msgid "Set emulation" msgstr "" -#: lexsup.c:213 +#: lexsup.c:214 msgid "Print map file on standard output" msgstr "" -#: lexsup.c:215 +#: lexsup.c:216 msgid "Do not page align data" msgstr "" -#: lexsup.c:217 +#: lexsup.c:218 msgid "Do not page align data, do not make text readonly" msgstr "" -#: lexsup.c:220 +#: lexsup.c:221 msgid "Set output file name" msgstr "" -#: lexsup.c:222 +#: lexsup.c:223 msgid "Optimize output file" msgstr "" -#: lexsup.c:224 +#: lexsup.c:225 msgid "Ignored for SVR4 compatibility" msgstr "" -#: lexsup.c:228 +#: lexsup.c:229 msgid "Generate relocateable output" msgstr "" -#: lexsup.c:232 +#: lexsup.c:233 msgid "Just link symbols (if directory, same as --rpath)" msgstr "" -#: lexsup.c:235 +#: lexsup.c:236 msgid "Strip all symbols" msgstr "" -#: lexsup.c:237 +#: lexsup.c:238 msgid "Strip debugging symbols" msgstr "" -#: lexsup.c:239 +#: lexsup.c:240 msgid "Trace file opens" msgstr "" -#: lexsup.c:241 +#: lexsup.c:242 msgid "Read linker script" msgstr "" -#: lexsup.c:243 lexsup.c:259 lexsup.c:298 lexsup.c:310 lexsup.c:367 -#: lexsup.c:386 lexsup.c:406 +#: lexsup.c:244 lexsup.c:260 lexsup.c:299 lexsup.c:311 lexsup.c:370 +#: lexsup.c:389 lexsup.c:409 msgid "SYMBOL" msgstr "" -#: lexsup.c:243 +#: lexsup.c:244 msgid "Start with undefined reference to SYMBOL" msgstr "" -#: lexsup.c:245 +#: lexsup.c:246 msgid "[=SECTION]" msgstr "" -#: lexsup.c:245 +#: lexsup.c:246 msgid "Don't merge input [SECTION | orphan] sections" msgstr "" -#: lexsup.c:247 +#: lexsup.c:248 msgid "Build global constructor/destructor tables" msgstr "" -#: lexsup.c:249 +#: lexsup.c:250 msgid "Print version information" msgstr "" -#: lexsup.c:251 +#: lexsup.c:252 msgid "Print version and emulation information" msgstr "" -#: lexsup.c:253 +#: lexsup.c:254 msgid "Discard all local symbols" msgstr "" -#: lexsup.c:255 +#: lexsup.c:256 msgid "Discard temporary local symbols (default)" msgstr "" -#: lexsup.c:257 +#: lexsup.c:258 msgid "Don't discard any local symbols" msgstr "" -#: lexsup.c:259 +#: lexsup.c:260 msgid "Trace mentions of SYMBOL" msgstr "" -#: lexsup.c:261 lexsup.c:345 lexsup.c:347 +#: lexsup.c:262 lexsup.c:348 lexsup.c:350 msgid "PATH" msgstr "" -#: lexsup.c:261 +#: lexsup.c:262 msgid "Default search path for Solaris compatibility" msgstr "" -#: lexsup.c:263 +#: lexsup.c:264 msgid "Start a group" msgstr "" -#: lexsup.c:265 +#: lexsup.c:266 msgid "End a group" msgstr "" -#: lexsup.c:267 +#: lexsup.c:268 msgid "Ignored for SunOS compatibility" msgstr "" -#: lexsup.c:269 +#: lexsup.c:270 msgid "Link against shared libraries" msgstr "" -#: lexsup.c:275 +#: lexsup.c:276 msgid "Do not link against shared libraries" msgstr "" -#: lexsup.c:283 +#: lexsup.c:284 msgid "Bind global references locally" msgstr "" -#: lexsup.c:285 +#: lexsup.c:286 msgid "Check section addresses for overlaps (default)" msgstr "" -#: lexsup.c:287 +#: lexsup.c:288 msgid "Do not check section addresses for overlaps" msgstr "" -#: lexsup.c:290 +#: lexsup.c:291 msgid "Output cross reference table" msgstr "" -#: lexsup.c:292 +#: lexsup.c:293 msgid "SYMBOL=EXPRESSION" msgstr "" -#: lexsup.c:292 +#: lexsup.c:293 msgid "Define a symbol" msgstr "" -#: lexsup.c:294 +#: lexsup.c:295 msgid "[=STYLE]" msgstr "" -#: lexsup.c:294 +#: lexsup.c:295 msgid "Demangle symbol names [using STYLE]" msgstr "" -#: lexsup.c:296 +#: lexsup.c:297 msgid "Generate embedded relocs" msgstr "" -#: lexsup.c:298 +#: lexsup.c:299 msgid "Call SYMBOL at unload-time" msgstr "" -#: lexsup.c:300 +#: lexsup.c:301 msgid "Force generation of file with .exe suffix" msgstr "" -#: lexsup.c:302 +#: lexsup.c:303 msgid "Remove unused sections (on some targets)" msgstr "" -#: lexsup.c:305 +#: lexsup.c:306 msgid "Don't remove unused sections (default)" msgstr "" -#: lexsup.c:308 +#: lexsup.c:309 msgid "Print option help" msgstr "" -#: lexsup.c:310 +#: lexsup.c:311 msgid "Call SYMBOL at load-time" msgstr "" -#: lexsup.c:312 +#: lexsup.c:313 msgid "Write a map file" msgstr "" -#: lexsup.c:314 +#: lexsup.c:315 msgid "Do not define Common storage" msgstr "" -#: lexsup.c:316 +#: lexsup.c:317 msgid "Do not demangle symbol names" msgstr "" -#: lexsup.c:318 +#: lexsup.c:319 msgid "Use less memory and more disk I/O" msgstr "" -#: lexsup.c:320 +#: lexsup.c:321 msgid "Allow no undefined symbols" msgstr "" -#: lexsup.c:322 +#: lexsup.c:323 msgid "Allow undefined symbols in shared objects" msgstr "" -#: lexsup.c:324 +#: lexsup.c:325 msgid "Allow multiple definitions" msgstr "" -#: lexsup.c:326 +#: lexsup.c:327 +msgid "Disallow undefined version" +msgstr "" + +#: lexsup.c:329 msgid "Don't warn about mismatched input files" msgstr "" -#: lexsup.c:328 +#: lexsup.c:331 msgid "Turn off --whole-archive" msgstr "" -#: lexsup.c:330 +#: lexsup.c:333 msgid "Create an output file even if errors occur" msgstr "" -#: lexsup.c:334 +#: lexsup.c:337 msgid "" "Only use library directories specified on\n" "\t\t\t\tthe command line" msgstr "" -#: lexsup.c:336 +#: lexsup.c:339 msgid "Specify target of output file" msgstr "" -#: lexsup.c:338 +#: lexsup.c:341 msgid "Ignored for Linux compatibility" msgstr "" -#: lexsup.c:340 +#: lexsup.c:343 msgid "Relax branches on certain targets" msgstr "" -#: lexsup.c:343 +#: lexsup.c:346 msgid "Keep only symbols listed in FILE" msgstr "" -#: lexsup.c:345 +#: lexsup.c:348 msgid "Set runtime shared library search path" msgstr "" -#: lexsup.c:347 +#: lexsup.c:350 msgid "Set link time shared library search path" msgstr "" -#: lexsup.c:349 +#: lexsup.c:352 msgid "Create a shared library" msgstr "" -#: lexsup.c:353 +#: lexsup.c:356 msgid "Sort common symbols by size" msgstr "" -#: lexsup.c:357 +#: lexsup.c:360 msgid "COUNT" msgstr "" -#: lexsup.c:357 +#: lexsup.c:360 msgid "How many tags to reserve in .dynamic section" msgstr "" -#: lexsup.c:359 +#: lexsup.c:362 msgid "[=SIZE]" msgstr "" -#: lexsup.c:359 +#: lexsup.c:362 msgid "Split output sections every SIZE octets" msgstr "" -#: lexsup.c:361 +#: lexsup.c:364 msgid "[=COUNT]" msgstr "" -#: lexsup.c:361 +#: lexsup.c:364 msgid "Split output sections every COUNT relocs" msgstr "" -#: lexsup.c:363 +#: lexsup.c:366 msgid "Print memory usage statistics" msgstr "" -#: lexsup.c:365 +#: lexsup.c:368 msgid "Display target specific options" msgstr "" -#: lexsup.c:367 +#: lexsup.c:370 msgid "Do task level linking" msgstr "" -#: lexsup.c:369 +#: lexsup.c:372 msgid "Use same format as native linker" msgstr "" -#: lexsup.c:371 +#: lexsup.c:374 msgid "SECTION=ADDRESS" msgstr "" -#: lexsup.c:371 +#: lexsup.c:374 msgid "Set address of named section" msgstr "" -#: lexsup.c:373 +#: lexsup.c:376 msgid "Set address of .bss section" msgstr "" -#: lexsup.c:375 +#: lexsup.c:378 msgid "Set address of .data section" msgstr "" -#: lexsup.c:377 +#: lexsup.c:380 msgid "Set address of .text section" msgstr "" -#: lexsup.c:379 +#: lexsup.c:382 msgid "Output lots of information during link" msgstr "" -#: lexsup.c:383 +#: lexsup.c:386 msgid "Read version information script" msgstr "" -#: lexsup.c:386 +#: lexsup.c:389 msgid "" "Take export symbols list from .exports, using\n" "\t\t\t\tSYMBOL as the version." msgstr "" -#: lexsup.c:389 +#: lexsup.c:392 msgid "Warn about duplicate common symbols" msgstr "" -#: lexsup.c:391 +#: lexsup.c:394 msgid "Warn if global constructors/destructors are seen" msgstr "" -#: lexsup.c:394 +#: lexsup.c:397 msgid "Warn if the multiple GP values are used" msgstr "" -#: lexsup.c:396 +#: lexsup.c:399 msgid "Warn only once per undefined symbol" msgstr "" -#: lexsup.c:398 +#: lexsup.c:401 msgid "Warn if start of section changes due to alignment" msgstr "" -#: lexsup.c:401 +#: lexsup.c:404 msgid "Treat warnings as errors" msgstr "" -#: lexsup.c:404 +#: lexsup.c:407 msgid "Include all objects from following archives" msgstr "" -#: lexsup.c:406 +#: lexsup.c:409 msgid "Use wrapper functions for SYMBOL" msgstr "" -#: lexsup.c:408 +#: lexsup.c:411 msgid "[=WORDS]" msgstr "" -#: lexsup.c:408 +#: lexsup.c:411 msgid "" "Modify problematic branches in last WORDS (1-10,\n" "\t\t\t\tdefault 5) words of a page" msgstr "" -#: lexsup.c:574 +#: lexsup.c:577 msgid "%P: unrecognized option '%s'\n" msgstr "" -#: lexsup.c:576 +#: lexsup.c:579 msgid "%P%F: use the --help option for usage information\n" msgstr "" -#: lexsup.c:595 +#: lexsup.c:598 msgid "%P%F: unrecognized -a option `%s'\n" msgstr "" -#: lexsup.c:608 +#: lexsup.c:611 msgid "%P%F: unrecognized -assert option `%s'\n" msgstr "" -#: lexsup.c:651 +#: lexsup.c:654 msgid "%F%P: unknown demangling style `%s'" msgstr "" -#: lexsup.c:711 +#: lexsup.c:714 msgid "%P%F: invalid number `%s'\n" msgstr "" @@ -1548,65 +1566,65 @@ msgstr "" #. an error message here. We cannot just make this a warning, #. increment optind, and continue because getopt is too confused #. and will seg-fault the next time around. -#: lexsup.c:812 +#: lexsup.c:818 msgid "%P%F: bad -rpath option\n" msgstr "" -#: lexsup.c:910 +#: lexsup.c:916 msgid "%P%F: -shared not supported\n" msgstr "" -#: lexsup.c:942 +#: lexsup.c:948 msgid "%P%F: invalid argument to option \"--section-start\"\n" msgstr "" -#: lexsup.c:948 +#: lexsup.c:954 msgid "%P%F: missing argument(s) to option \"--section-start\"\n" msgstr "" -#: lexsup.c:1097 +#: lexsup.c:1103 msgid "%P%F: may not nest groups (--help for usage)\n" msgstr "" -#: lexsup.c:1104 +#: lexsup.c:1110 msgid "%P%F: group ended before it began (--help for usage)\n" msgstr "" -#: lexsup.c:1118 +#: lexsup.c:1124 msgid "%P%F: invalid argument to option \"mpc860c0\"\n" msgstr "" -#: lexsup.c:1173 +#: lexsup.c:1179 msgid "%P%F: invalid hex number `%s'\n" msgstr "" -#: lexsup.c:1185 +#: lexsup.c:1191 #, c-format msgid "Usage: %s [options] file...\n" msgstr "" -#: lexsup.c:1187 +#: lexsup.c:1193 msgid "Options:\n" msgstr "" #. Note: Various tools (such as libtool) depend upon the #. format of the listings below - do not change them. -#: lexsup.c:1270 +#: lexsup.c:1276 #, c-format msgid "%s: supported targets:" msgstr "" -#: lexsup.c:1278 +#: lexsup.c:1284 #, c-format msgid "%s: supported emulations: " msgstr "" -#: lexsup.c:1283 +#: lexsup.c:1289 #, c-format msgid "%s: emulation specific options:\n" msgstr "" -#: lexsup.c:1287 +#: lexsup.c:1293 #, c-format msgid "Report bugs to %s\n" msgstr "" @@ -1615,61 +1633,61 @@ msgstr "" msgid "%P%F: unknown format type %s\n" msgstr "" -#: pe-dll.c:321 +#: pe-dll.c:323 #, c-format msgid "%XUnsupported PEI architecture: %s\n" msgstr "" -#: pe-dll.c:671 +#: pe-dll.c:673 #, c-format msgid "%XError, duplicate EXPORT with ordinals: %s (%d vs %d)\n" msgstr "" -#: pe-dll.c:678 +#: pe-dll.c:680 #, c-format msgid "Warning, duplicate EXPORT: %s\n" msgstr "" -#: pe-dll.c:742 +#: pe-dll.c:744 #, c-format msgid "%XCannot export %s: symbol not defined\n" msgstr "" -#: pe-dll.c:748 +#: pe-dll.c:750 #, c-format msgid "%XCannot export %s: symbol wrong type (%d vs %d)\n" msgstr "" -#: pe-dll.c:755 +#: pe-dll.c:757 #, c-format msgid "%XCannot export %s: symbol not found\n" msgstr "" -#: pe-dll.c:870 +#: pe-dll.c:872 #, c-format msgid "%XError, ordinal used twice: %d (%s vs %s)\n" msgstr "" -#: pe-dll.c:1181 +#: pe-dll.c:1183 #, c-format msgid "%XError: %d-bit reloc in dll\n" msgstr "" -#: pe-dll.c:1316 +#: pe-dll.c:1318 #, c-format msgid "%s: Can't open output def file %s\n" msgstr "" -#: pe-dll.c:1459 +#: pe-dll.c:1461 msgid "; no contents available\n" msgstr "" -#: pe-dll.c:2128 +#: pe-dll.c:2137 #, c-format msgid "%XCan't open .lib file: %s\n" msgstr "" -#: pe-dll.c:2133 +#: pe-dll.c:2142 #, c-format msgid "Creating library file: %s\n" msgstr "" diff --git a/contrib/binutils/ld/scripttempl/pe.sc b/contrib/binutils/ld/scripttempl/pe.sc index 2f24757..a22611c 100644 --- a/contrib/binutils/ld/scripttempl/pe.sc +++ b/contrib/binutils/ld/scripttempl/pe.sc @@ -85,6 +85,11 @@ SECTIONS *(.rdata) ${R_RDATA} *(.eh_frame) + ${RELOCATING+___RUNTIME_PSEUDO_RELOC_LIST__ = .;} + ${RELOCATING+__RUNTIME_PSEUDO_RELOC_LIST__ = .;} + *(.rdata_runtime_pseudo_reloc) + ${RELOCATING+___RUNTIME_PSEUDO_RELOC_LIST_END__ = .;} + ${RELOCATING+__RUNTIME_PSEUDO_RELOC_LIST_END__ = .;} } .pdata ${RELOCATING+BLOCK(__section_alignment__)} : |