Add link option to allow undefiedn symbols in shared libraries
authorNick Clifton <nickc@redhat.com>
Tue, 12 Dec 2000 20:53:02 +0000 (20:53 +0000)
committerNick Clifton <nickc@redhat.com>
Tue, 12 Dec 2000 20:53:02 +0000 (20:53 +0000)
bfd/ChangeLog
bfd/elflink.h
bfd/po/bfd.pot
include/ChangeLog
include/bfdlink.h
ld/ChangeLog
ld/ld.texinfo
ld/ldmain.c
ld/lexsup.c
ld/po/ld.pot

index 6c8ce49829354f4081fbad3b7c16e92da12333b1..bec4d5076101d3a5240144f245aae6e381e3d99e 100644 (file)
@@ -1,3 +1,8 @@
+2000-12-10  Fred Fish  <fnf@be.com>
+
+      * elflink.h (elf_link_output_extsym): Don't complain about undefined
+      symbols in shared objects if allow_shlib_undefined is true.
+
 2000-12-12  Nick Clifton  <nickc@redhat.com>
 
        * cpu-sh.c: Fix formattng.
index 4d3eb644b3a14ddb3e5db8f794089359e8a9aa49..b3e1bbc6fc1e9969fb52878ec038e9af26966e00 100644 (file)
@@ -5095,6 +5095,7 @@ elf_link_output_extsym (h, data)
      referenced by regular files, because we will already have issued
      warnings for them.  */
   if (! finfo->info->relocateable
+      && ! finfo->info->allow_shlib_undefined
       && ! (finfo->info->shared
            && !finfo->info->no_undefined)
       && h->root.type == bfd_link_hash_undefined
index 2de1a0efd11fb77b779311047efc5fd518b0a037..a2dc237b705613dbc68180214fd9749b556ee178 100644 (file)
@@ -6,7 +6,7 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
-"POT-Creation-Date: 2000-12-08 14:45-0800\n"
+"POT-Creation-Date: 2000-12-12 12:37-0800\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"
@@ -399,7 +399,7 @@ msgstr ""
 msgid "unsupported reloc type"
 msgstr ""
 
-#: coff-mips.c:875 elf32-mips.c:1405
+#: coff-mips.c:875 elf32-mips.c:1417
 msgid "GP relative relocation when _gp not defined"
 msgstr ""
 
@@ -550,7 +550,7 @@ msgid "%s: Warning: Thumb BLX instruction targets thumb function '%s'."
 msgstr ""
 
 #: elf-hppa.h:1369 elf-hppa.h:1402 elf32-arm.h:1853 elf32-i386.c:1428
-#: elf32-ppc.c:3096 elf32-sh.c:2985 elf64-x86-64.c:271
+#: elf32-ppc.c:3096 elf32-sh.c:2997 elf64-x86-64.c:271
 #, c-format
 msgid ""
 "%s: warning: unresolvable relocation against symbol `%s' from %s section"
@@ -660,7 +660,7 @@ msgstr ""
 
 #. Ignore init flag - it may not be set, despite the flags field
 #. containing valid data.
-#: elf32-arm.h:2193 elf32-cris.c:615 elf32-m68k.c:430 elf32-mips.c:2682
+#: elf32-arm.h:2193 elf32-cris.c:615 elf32-m68k.c:430 elf32-mips.c:2695
 #, c-format
 msgid "private flags = %lx:"
 msgstr ""
@@ -845,141 +845,141 @@ msgstr ""
 msgid "%s: Unknown relocation type %d\n"
 msgstr ""
 
-#: elf32-mips.c:1564
+#: elf32-mips.c:1576
 msgid "32bits gp relative relocation occurs for an external symbol"
 msgstr ""
 
-#: elf32-mips.c:1713
+#: elf32-mips.c:1725
 #, c-format
 msgid "Linking mips16 objects into %s format is not supported"
 msgstr ""
 
-#: elf32-mips.c:2569
+#: elf32-mips.c:2582
 #, c-format
 msgid "%s: linking PIC files with non-PIC files"
 msgstr ""
 
-#: elf32-mips.c:2579
+#: elf32-mips.c:2592
 #, c-format
 msgid "%s: linking abicalls files with non-abicalls files"
 msgstr ""
 
-#: elf32-mips.c:2608
+#: elf32-mips.c:2621
 #, c-format
 msgid "%s: ISA mismatch (-mips%d) with previous modules (-mips%d)"
 msgstr ""
 
-#: elf32-mips.c:2617
+#: elf32-mips.c:2630
 #, c-format
 msgid "%s: ISA mismatch (%d) with previous modules (%d)"
 msgstr ""
 
-#: elf32-mips.c:2640
+#: elf32-mips.c:2653
 #, c-format
 msgid "%s: ABI mismatch: linking %s module with previous %s modules"
 msgstr ""
 
-#: elf32-mips.c:2654 elf32-ppc.c:1477 elf64-sparc.c:2971
+#: elf32-mips.c:2667 elf32-ppc.c:1477 elf64-sparc.c:2971
 #, c-format
 msgid "%s: uses different e_flags (0x%lx) fields than previous modules (0x%lx)"
 msgstr ""
 
-#: elf32-mips.c:2685
+#: elf32-mips.c:2698
 msgid " [abi=O32]"
 msgstr ""
 
-#: elf32-mips.c:2687
+#: elf32-mips.c:2700
 msgid " [abi=O64]"
 msgstr ""
 
-#: elf32-mips.c:2689
+#: elf32-mips.c:2702
 msgid " [abi=EABI32]"
 msgstr ""
 
-#: elf32-mips.c:2691
+#: elf32-mips.c:2704
 msgid " [abi=EABI64]"
 msgstr ""
 
-#: elf32-mips.c:2693
+#: elf32-mips.c:2706
 msgid " [abi unknown]"
 msgstr ""
 
-#: elf32-mips.c:2695
+#: elf32-mips.c:2708
 msgid " [abi=N32]"
 msgstr ""
 
-#: elf32-mips.c:2697
+#: elf32-mips.c:2710
 msgid " [abi=64]"
 msgstr ""
 
-#: elf32-mips.c:2699
+#: elf32-mips.c:2712
 msgid " [no abi set]"
 msgstr ""
 
-#: elf32-mips.c:2702
+#: elf32-mips.c:2715
 msgid " [mips1]"
 msgstr ""
 
-#: elf32-mips.c:2704
+#: elf32-mips.c:2717
 msgid " [mips2]"
 msgstr ""
 
-#: elf32-mips.c:2706
+#: elf32-mips.c:2719
 msgid " [mips3]"
 msgstr ""
 
-#: elf32-mips.c:2708
+#: elf32-mips.c:2721
 msgid " [mips4]"
 msgstr ""
 
-#: elf32-mips.c:2710
+#: elf32-mips.c:2723
 msgid " [mips5]"
 msgstr ""
 
-#: elf32-mips.c:2712
+#: elf32-mips.c:2725
 msgid " [mips32]"
 msgstr ""
 
-#: elf32-mips.c:2714
+#: elf32-mips.c:2727
 msgid " [mips64]"
 msgstr ""
 
-#: elf32-mips.c:2716
+#: elf32-mips.c:2729
 msgid " [unknown ISA]"
 msgstr ""
 
-#: elf32-mips.c:2719
+#: elf32-mips.c:2732
 msgid " [32bitmode]"
 msgstr ""
 
-#: elf32-mips.c:2721
+#: elf32-mips.c:2734
 msgid " [not 32bitmode]"
 msgstr ""
 
-#: elf32-mips.c:4370
+#: elf32-mips.c:4388
 msgid "static procedure (no name)"
 msgstr ""
 
-#: elf32-mips.c:4985 elf64-alpha.c:4378
+#: elf32-mips.c:5005 elf64-alpha.c:4377
 #, c-format
 msgid "%s: illegal section name `%s'"
 msgstr ""
 
-#: elf32-mips.c:5549
+#: elf32-mips.c:5570
 msgid "not enough GOT space for local GOT entries"
 msgstr ""
 
-#: elf32-mips.c:6666
+#: elf32-mips.c:6686
 #, c-format
 msgid "%s: %s+0x%lx: jump to stub routine which is not jal"
 msgstr ""
 
-#: elf32-mips.c:7653
+#: elf32-mips.c:7673
 #, c-format
 msgid "Malformed reloc detected for section %s"
 msgstr ""
 
-#: elf32-mips.c:7730
+#: elf32-mips.c:7750
 #, c-format
 msgid "%s: CALL16 reloc at 0x%lx not against global symbol"
 msgstr ""
@@ -1022,42 +1022,42 @@ msgstr ""
 msgid "%s: Relocation %s is not yet supported for symbol %s."
 msgstr ""
 
-#: elf32-sh.c:1081
+#: elf32-sh.c:1084
 #, c-format
 msgid "%s: 0x%lx: warning: bad R_SH_USES offset"
 msgstr ""
 
-#: elf32-sh.c:1093
+#: elf32-sh.c:1096
 #, c-format
 msgid "%s: 0x%lx: warning: R_SH_USES points to unrecognized insn 0x%x"
 msgstr ""
 
-#: elf32-sh.c:1110
+#: elf32-sh.c:1113
 #, c-format
 msgid "%s: 0x%lx: warning: bad R_SH_USES load offset"
 msgstr ""
 
-#: elf32-sh.c:1125
+#: elf32-sh.c:1128
 #, c-format
 msgid "%s: 0x%lx: warning: could not find expected reloc"
 msgstr ""
 
-#: elf32-sh.c:1162
+#: elf32-sh.c:1165
 #, c-format
 msgid "%s: 0x%lx: warning: symbol in unexpected section"
 msgstr ""
 
-#: elf32-sh.c:1284
+#: elf32-sh.c:1287
 #, c-format
 msgid "%s: 0x%lx: warning: could not find expected COUNT reloc"
 msgstr ""
 
-#: elf32-sh.c:1293
+#: elf32-sh.c:1296
 #, c-format
 msgid "%s: 0x%lx: warning: bad count"
 msgstr ""
 
-#: elf32-sh.c:1686 elf32-sh.c:2073
+#: elf32-sh.c:1689 elf32-sh.c:2076
 #, c-format
 msgid "%s: 0x%lx: fatal: reloc overflow while relaxing"
 msgstr ""
@@ -1316,7 +1316,7 @@ msgstr ""
 msgid "%s: undefined versioned symbol name %s"
 msgstr ""
 
-#: elflink.h:5180
+#: elflink.h:5181
 #, c-format
 msgid "%s: could not find output section %s for input section %s"
 msgstr ""
index 68470925e18371a1d3c0f49e3f1a34c8f921b28c..1b1af76897b103ff6f6ff54dc4c6853e41444ab2 100644 (file)
@@ -1,3 +1,10 @@
+2000-12-10  Fred Fish  <fnf@be.com>
+
+      * bfdlink.h (struct bfd_link_info): Add new allow_shlib_undefined
+      member to struct for systems where it is normal to have undefined
+      symbols in shared libraries at runtime and the runtime linker takes
+      care of redirecting them.
+
 2000-12-07  Zack Weinberg  <zack@wolery.stanford.edu>
 
        * safe-ctype.h: New file.
index 18c60a57d4fcbe74a261c2e3a4ca0ffb4af72a4f..ae96323bfa732565f591d39b67ae512e1d021079 100644 (file)
@@ -201,6 +201,19 @@ struct bfd_link_info
   /* true if BFD should generate errors for undefined symbols
      even if generating a shared object.  */
   boolean no_undefined;
+  /* true if BFD should allow undefined symbols in shared objects even
+     when no_undefined is set to disallow undefined symbols.  The net
+     result will be that undefined symbols in regular objects will
+     still trigger an error, but undefined symbols in shared objects
+     will be ignored.  The implementation of no_undefined makes the
+     assumption that the runtime linker will choke on undefined
+     symbols.  However there is at least one system (BeOS) where
+     undefined symbols in 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 HPPA shared libraries to have undefined symbols.  */
+  boolean allow_shlib_undefined;
   /* Which symbols to strip.  */
   enum bfd_link_strip strip;
   /* Which local symbols to discard.  */
index 0ac70857b6bfbc972f1565f4d9bdc1cafc4d075c..e1ad2771000f83f5279c25739630f456cb1d9615 100644 (file)
@@ -1,3 +1,12 @@
+2000-11-18  Fred Fish  <fnf@be.com>
+
+       * lexsup.c (OPTION_ALLOW_SHLIB_UNDEFINED): Define.
+       (ld_options): Entry for --allow-shlib-undefined.
+       (parse_args): Handle OPTION_ALLOW_SHLIB_UNDEFINED.
+       * ldmain.c (main): Initialize link_info.allow_shlib_undefined
+       to false.
+       * ld.texinfo: Document new command line switch.
+       
 2000-12-12  Geoffrey Keating  <geoffk@redhat.com>
 
        * emulparams/elf32ppc.sh (OTHER_READWRITE_SECTIONS):
index 0780538e2e6d16ad2fbcd01d1b3660f859c715db..b7a64e995a767d1ed01be3f55547b301de413b9c 100644 (file)
@@ -939,6 +939,19 @@ Normally when creating a non-symbolic shared library, undefined symbols
 are allowed and left to be resolved by the runtime loader.  This option
 disallows such undefined symbols.
 
+@kindex --allow-shlib-undefined
+@item --allow-shlib-undefined
+Allow undefined symbols in shared objects even  when --no-undefined is
+set. The net result will be that undefined symbols in regular objects
+will still trigger an error, but undefined symbols in shared objects
+will be ignored.  The implementation of no_undefined makes the
+assumption that the runtime linker will choke on undefined symbols.
+However there is at least one system (BeOS) where undefined symbols in
+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 HPPA shared libraries to have undefined symbols.
+
 @kindex --no-warn-mismatch
 @item --no-warn-mismatch
 Normally @code{ld} will give an error if you try to link together input
index faee77709eb4429f3a727ce38b5805356e26f812..9d6e042e0dd04046f0f35fc7b1a8de8efa62ce16 100644 (file)
@@ -223,6 +223,7 @@ main (argc, argv)
   link_info.traditional_format = false;
   link_info.optimize = false;
   link_info.no_undefined = false;
+  link_info.allow_shlib_undefined = false;
   link_info.strip = strip_none;
   link_info.discard = discard_none;
   link_info.keep_memory = true;
index 35ed3c0913d0b10f917496562f9d1d022a75bb9c..52a86802b684e4ee7f079144c589ace3c8665daf 100644 (file)
@@ -127,11 +127,13 @@ int parsing_defsym = 0;
 #define OPTION_SECTION_START           (OPTION_FINI + 1)
 #define OPTION_UNIQUE                  (OPTION_SECTION_START + 1)
 #define OPTION_TARGET_HELP              (OPTION_UNIQUE + 1)
+#define OPTION_ALLOW_SHLIB_UNDEFINED   (OPTION_TARGET_HELP + 1)
 
 /* The long options.  This structure is used for both the option
    parsing and the help text.  */
 
-struct ld_option {
+struct ld_option
+{
   /* The long option information.  */
   struct option opt;
   /* The short option with the same meaning ('\0' if none).  */
@@ -151,7 +153,8 @@ struct ld_option {
   } control;
 };
 
-static const struct ld_option ld_options[] = {
+static const struct ld_option ld_options[] =
+{
   { {NULL, required_argument, NULL, '\0'},
       'a', N_("KEYWORD"), N_("Shared library control for HP/UX compatibility"),
       ONE_DASH },
@@ -298,6 +301,8 @@ static const struct ld_option ld_options[] = {
       '\0', NULL, N_("Use less memory and more disk I/O"), TWO_DASHES },
   { {"no-undefined", no_argument, NULL, OPTION_NO_UNDEFINED},
      '\0', NULL, N_("Allow no undefined symbols"), TWO_DASHES },
+  { {"allow-shlib-undefined", no_argument, NULL, OPTION_ALLOW_SHLIB_UNDEFINED},
+     '\0', NULL, N_("Allow undefined symbols in shared objects"), TWO_DASHES },
   { {"no-warn-mismatch", no_argument, NULL, OPTION_NO_WARN_MISMATCH},
       '\0', NULL, N_("Don't warn about mismatched input files"), TWO_DASHES},
   { {"no-whole-archive", no_argument, NULL, OPTION_NO_WHOLE_ARCHIVE},
@@ -709,6 +714,9 @@ parse_args (argc, argv)
        case OPTION_NO_UNDEFINED:
          link_info.no_undefined = true;
          break;
+       case OPTION_ALLOW_SHLIB_UNDEFINED:
+         link_info.allow_shlib_undefined = true;
+         break;
        case OPTION_NO_WARN_MISMATCH:
          command_line.warn_mismatch = false;
          break;
index 8bc08c967edc980e448d124429e20df005b91e08..f7fcb18f9fdbd414ce3a962c3a494ccd22830736 100644 (file)
@@ -6,7 +6,7 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
-"POT-Creation-Date: 2000-11-30 11:14-0800\n"
+"POT-Creation-Date: 2000-12-12 12:46-0800\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"
@@ -251,7 +251,7 @@ msgid "Errors encountered processing file %s for interworking"
 msgstr ""
 
 #: emultempl/pe.em:1090 ldlang.c:1980 ldlang.c:4346 ldlang.c:4379
-#: ldmain.c:1015
+#: ldmain.c:1016
 msgid "%P%F: bfd_link_hash_lookup failed: %E\n"
 msgstr ""
 
@@ -290,11 +290,11 @@ msgstr ""
 msgid "%B%F: could not read symbols; %E\n"
 msgstr ""
 
-#: ldcref.c:439 ldmain.c:1081 ldmain.c:1085
+#: ldcref.c:439 ldmain.c:1082 ldmain.c:1086
 msgid "%B%F: could not read symbols: %E\n"
 msgstr ""
 
-#: ldcref.c:511 ldcref.c:518 ldmain.c:1131 ldmain.c:1138
+#: ldcref.c:511 ldcref.c:518 ldmain.c:1132 ldmain.c:1139
 msgid "%B%F: could not read relocs: %E\n"
 msgstr ""
 
@@ -703,199 +703,199 @@ msgstr ""
 msgid "%X%P: can't set BFD default target to `%s': %E\n"
 msgstr ""
 
-#: ldmain.c:267
+#: ldmain.c:268
 msgid "%P%F: -r and --mpc860c0 may not be used together\n"
 msgstr ""
 
-#: ldmain.c:269
+#: ldmain.c:270
 msgid "%P%F: --relax and -r may not be used together\n"
 msgstr ""
 
-#: ldmain.c:271
+#: ldmain.c:272
 msgid "%P%F: -r and -shared may not be used together\n"
 msgstr ""
 
-#: ldmain.c:300
+#: ldmain.c:301
 msgid "using internal linker script:\n"
 msgstr ""
 
-#: ldmain.c:319
+#: ldmain.c:320
 msgid "%P%F: no input files\n"
 msgstr ""
 
-#: ldmain.c:324
+#: ldmain.c:325
 msgid "%P: mode %s\n"
 msgstr ""
 
-#: ldmain.c:341
+#: ldmain.c:342
 msgid "%P%F: cannot open map file %s: %E\n"
 msgstr ""
 
-#: ldmain.c:388
+#: ldmain.c:389
 msgid "%P: link errors found, deleting executable `%s'\n"
 msgstr ""
 
-#: ldmain.c:399
+#: ldmain.c:400
 msgid "%F%B: final close failed: %E\n"
 msgstr ""
 
-#: ldmain.c:423
+#: ldmain.c:424
 msgid "%X%P: unable to open for source of copy `%s'\n"
 msgstr ""
 
-#: ldmain.c:425
+#: ldmain.c:426
 msgid "%X%P: unable to open for destination of copy `%s'\n"
 msgstr ""
 
-#: ldmain.c:431
+#: ldmain.c:432
 msgid "%P: Error writing file `%s'\n"
 msgstr ""
 
-#: ldmain.c:437 pe-dll.c:1097
+#: ldmain.c:438 pe-dll.c:1097
 #, c-format
 msgid "%P: Error closing file `%s'\n"
 msgstr ""
 
-#: ldmain.c:454
+#: ldmain.c:455
 #, c-format
 msgid "%s: total time in link: %ld.%06ld\n"
 msgstr ""
 
-#: ldmain.c:457
+#: ldmain.c:458
 #, c-format
 msgid "%s: data size %ld\n"
 msgstr ""
 
-#: ldmain.c:498
+#: ldmain.c:499
 msgid "%P%F: missing argument to -m\n"
 msgstr ""
 
-#: ldmain.c:623 ldmain.c:644 ldmain.c:675
+#: ldmain.c:624 ldmain.c:645 ldmain.c:676
 msgid "%P%F: bfd_hash_table_init failed: %E\n"
 msgstr ""
 
-#: ldmain.c:628 ldmain.c:647
+#: ldmain.c:629 ldmain.c:648
 msgid "%P%F: bfd_hash_lookup failed: %E\n"
 msgstr ""
 
-#: ldmain.c:662
+#: ldmain.c:663
 msgid "%X%P: error: duplicate retain-symbols-file\n"
 msgstr ""
 
-#: ldmain.c:706
+#: ldmain.c:707
 msgid "%P%F: bfd_hash_lookup for insertion failed: %E\n"
 msgstr ""
 
-#: ldmain.c:711
+#: ldmain.c:712
 msgid "%P: `-retain-symbols-file' overrides `-s' and `-S'\n"
 msgstr ""
 
-#: ldmain.c:787
+#: ldmain.c:788
 msgid "Archive member included"
 msgstr ""
 
-#: ldmain.c:788
+#: ldmain.c:789
 msgid "because of file (symbol)"
 msgstr ""
 
-#: ldmain.c:859
+#: ldmain.c:860
 msgid "%X%C: multiple definition of `%T'\n"
 msgstr ""
 
-#: ldmain.c:862
+#: ldmain.c:863
 msgid "%D: first defined here\n"
 msgstr ""
 
-#: ldmain.c:866
+#: ldmain.c:867
 msgid "%P: Disabling relaxation: it will not work with multiple definitions\n"
 msgstr ""
 
-#: ldmain.c:897
+#: ldmain.c:898
 msgid "%B: warning: definition of `%T' overriding common\n"
 msgstr ""
 
-#: ldmain.c:900
+#: ldmain.c:901
 msgid "%B: warning: common is here\n"
 msgstr ""
 
-#: ldmain.c:907
+#: ldmain.c:908
 msgid "%B: warning: common of `%T' overridden by definition\n"
 msgstr ""
 
-#: ldmain.c:910
+#: ldmain.c:911
 msgid "%B: warning: defined here\n"
 msgstr ""
 
-#: ldmain.c:917
+#: ldmain.c:918
 msgid "%B: warning: common of `%T' overridden by larger common\n"
 msgstr ""
 
-#: ldmain.c:920
+#: ldmain.c:921
 msgid "%B: warning: larger common is here\n"
 msgstr ""
 
-#: ldmain.c:924
+#: ldmain.c:925
 msgid "%B: warning: common of `%T' overriding smaller common\n"
 msgstr ""
 
-#: ldmain.c:927
+#: ldmain.c:928
 msgid "%B: warning: smaller common is here\n"
 msgstr ""
 
-#: ldmain.c:931
+#: ldmain.c:932
 msgid "%B: warning: multiple common of `%T'\n"
 msgstr ""
 
-#: ldmain.c:933
+#: ldmain.c:934
 msgid "%B: warning: previous common is here\n"
 msgstr ""
 
-#: ldmain.c:954 ldmain.c:993
+#: ldmain.c:955 ldmain.c:994
 msgid "%P: warning: global constructor %s used\n"
 msgstr ""
 
-#: ldmain.c:1003
+#: ldmain.c:1004
 msgid "%P%F: BFD backend error: BFD_RELOC_CTOR unsupported\n"
 msgstr ""
 
-#: ldmain.c:1187
+#: ldmain.c:1188
 msgid "%F%P: bfd_hash_table_init failed: %E\n"
 msgstr ""
 
-#: ldmain.c:1194
+#: ldmain.c:1195
 msgid "%F%P: bfd_hash_lookup failed: %E\n"
 msgstr ""
 
-#: ldmain.c:1214
+#: ldmain.c:1215
 msgid "%C: undefined reference to `%T'\n"
 msgstr ""
 
-#: ldmain.c:1220
+#: ldmain.c:1221
 msgid "%D: more undefined references to `%T' follow\n"
 msgstr ""
 
-#: ldmain.c:1227
+#: ldmain.c:1228
 msgid "%B: undefined reference to `%T'\n"
 msgstr ""
 
-#: ldmain.c:1233
+#: ldmain.c:1234
 msgid "%B: more undefined references to `%T' follow\n"
 msgstr ""
 
-#: ldmain.c:1253 ldmain.c:1274 ldmain.c:1293
+#: ldmain.c:1254 ldmain.c:1275 ldmain.c:1294
 msgid "%P%X: generated"
 msgstr ""
 
-#: ldmain.c:1256
+#: ldmain.c:1257
 msgid " relocation truncated to fit: %s %T"
 msgstr ""
 
-#: ldmain.c:1277
+#: ldmain.c:1278
 #, c-format
 msgid "dangerous relocation: %s\n"
 msgstr ""
 
-#: ldmain.c:1296
+#: ldmain.c:1297
 msgid " reloc refers to symbol `%T' which is not being output\n"
 msgstr ""
 
@@ -940,7 +940,7 @@ msgstr ""
 msgid "GNU ld version %s (with BFD %s)\n"
 msgstr ""
 
-#: ldver.c:46 lexsup.c:953
+#: ldver.c:46 lexsup.c:961
 msgid "  Supported emulations:\n"
 msgstr ""
 
@@ -961,555 +961,559 @@ msgstr ""
 msgid "%F%P: final link failed: %E\n"
 msgstr ""
 
-#: lexsup.c:156 lexsup.c:247
+#: lexsup.c:159 lexsup.c:250
 msgid "KEYWORD"
 msgstr ""
 
-#: lexsup.c:156
+#: lexsup.c:159
 msgid "Shared library control for HP/UX compatibility"
 msgstr ""
 
-#: lexsup.c:159
+#: lexsup.c:162
 msgid "ARCH"
 msgstr ""
 
-#: lexsup.c:159
+#: lexsup.c:162
 msgid "Set architecture"
 msgstr ""
 
-#: lexsup.c:161 lexsup.c:310
+#: lexsup.c:164 lexsup.c:315
 msgid "TARGET"
 msgstr ""
 
-#: lexsup.c:161
+#: lexsup.c:164
 msgid "Specify target for following input files"
 msgstr ""
 
-#: lexsup.c:163 lexsup.c:202 lexsup.c:214 lexsup.c:223 lexsup.c:294
-#: lexsup.c:317 lexsup.c:355
+#: lexsup.c:166 lexsup.c:205 lexsup.c:217 lexsup.c:226 lexsup.c:297
+#: lexsup.c:322 lexsup.c:360
 msgid "FILE"
 msgstr ""
 
-#: lexsup.c:163
+#: lexsup.c:166
 msgid "Read MRI format linker script"
 msgstr ""
 
-#: lexsup.c:165
+#: lexsup.c:168
 msgid "Force common symbols to be defined"
 msgstr ""
 
-#: lexsup.c:169 lexsup.c:345 lexsup.c:347 lexsup.c:349
+#: lexsup.c:172 lexsup.c:350 lexsup.c:352 lexsup.c:354
 msgid "ADDRESS"
 msgstr ""
 
-#: lexsup.c:169
+#: lexsup.c:172
 msgid "Set start address"
 msgstr ""
 
-#: lexsup.c:171
+#: lexsup.c:174
 msgid "Export all dynamic symbols"
 msgstr ""
 
-#: lexsup.c:173
+#: lexsup.c:176
 msgid "Link big-endian objects"
 msgstr ""
 
-#: lexsup.c:175
+#: lexsup.c:178
 msgid "Link little-endian objects"
 msgstr ""
 
-#: lexsup.c:177 lexsup.c:180
+#: lexsup.c:180 lexsup.c:183
 msgid "SHLIB"
 msgstr ""
 
-#: lexsup.c:177
+#: lexsup.c:180
 msgid "Auxiliary filter for shared object symbol table"
 msgstr ""
 
-#: lexsup.c:180
+#: lexsup.c:183
 msgid "Filter for shared object symbol table"
 msgstr ""
 
-#: lexsup.c:182
+#: lexsup.c:185
 msgid "Ignored"
 msgstr ""
 
-#: lexsup.c:184
+#: lexsup.c:187
 msgid "SIZE"
 msgstr ""
 
-#: lexsup.c:184
+#: lexsup.c:187
 msgid "Small data size (if no size, same as --shared)"
 msgstr ""
 
-#: lexsup.c:187
+#: lexsup.c:190
 msgid "FILENAME"
 msgstr ""
 
-#: lexsup.c:187
+#: lexsup.c:190
 msgid "Set internal name of shared library"
 msgstr ""
 
-#: lexsup.c:189
+#: lexsup.c:192
 msgid "LIBNAME"
 msgstr ""
 
-#: lexsup.c:189
+#: lexsup.c:192
 msgid "Search for library LIBNAME"
 msgstr ""
 
-#: lexsup.c:191
+#: lexsup.c:194
 msgid "DIRECTORY"
 msgstr ""
 
-#: lexsup.c:191
+#: lexsup.c:194
 msgid "Add DIRECTORY to library search path"
 msgstr ""
 
-#: lexsup.c:193
+#: lexsup.c:196
 msgid "EMULATION"
 msgstr ""
 
-#: lexsup.c:193
+#: lexsup.c:196
 msgid "Set emulation"
 msgstr ""
 
-#: lexsup.c:195
+#: lexsup.c:198
 msgid "Print map file on standard output"
 msgstr ""
 
-#: lexsup.c:197
+#: lexsup.c:200
 msgid "Do not page align data"
 msgstr ""
 
-#: lexsup.c:199
+#: lexsup.c:202
 msgid "Do not page align data, do not make text readonly"
 msgstr ""
 
-#: lexsup.c:202
+#: lexsup.c:205
 msgid "Set output file name"
 msgstr ""
 
-#: lexsup.c:204
+#: lexsup.c:207
 msgid "Optimize output file"
 msgstr ""
 
-#: lexsup.c:206
+#: lexsup.c:209
 msgid "Ignored for SVR4 compatibility"
 msgstr ""
 
-#: lexsup.c:210
+#: lexsup.c:213
 msgid "Generate relocateable output"
 msgstr ""
 
-#: lexsup.c:214
+#: lexsup.c:217
 msgid "Just link symbols (if directory, same as --rpath)"
 msgstr ""
 
-#: lexsup.c:217
+#: lexsup.c:220
 msgid "Strip all symbols"
 msgstr ""
 
-#: lexsup.c:219
+#: lexsup.c:222
 msgid "Strip debugging symbols"
 msgstr ""
 
-#: lexsup.c:221
+#: lexsup.c:224
 msgid "Trace file opens"
 msgstr ""
 
-#: lexsup.c:223
+#: lexsup.c:226
 msgid "Read linker script"
 msgstr ""
 
-#: lexsup.c:225 lexsup.c:239 lexsup.c:280 lexsup.c:292 lexsup.c:339
-#: lexsup.c:358 lexsup.c:375
+#: lexsup.c:228 lexsup.c:242 lexsup.c:283 lexsup.c:295 lexsup.c:344
+#: lexsup.c:363 lexsup.c:380
 msgid "SYMBOL"
 msgstr ""
 
-#: lexsup.c:225
+#: lexsup.c:228
 msgid "Start with undefined reference to SYMBOL"
 msgstr ""
 
-#: lexsup.c:227
+#: lexsup.c:230
 msgid "Don't merge orphan sections with the same name"
 msgstr ""
 
-#: lexsup.c:229
+#: lexsup.c:232
 msgid "Build global constructor/destructor tables"
 msgstr ""
 
-#: lexsup.c:231
+#: lexsup.c:234
 msgid "Print version information"
 msgstr ""
 
-#: lexsup.c:233
+#: lexsup.c:236
 msgid "Print version and emulation information"
 msgstr ""
 
-#: lexsup.c:235
+#: lexsup.c:238
 msgid "Discard all local symbols"
 msgstr ""
 
-#: lexsup.c:237
+#: lexsup.c:240
 msgid "Discard temporary local symbols"
 msgstr ""
 
-#: lexsup.c:239
+#: lexsup.c:242
 msgid "Trace mentions of SYMBOL"
 msgstr ""
 
-#: lexsup.c:241 lexsup.c:319 lexsup.c:321
+#: lexsup.c:244 lexsup.c:324 lexsup.c:326
 msgid "PATH"
 msgstr ""
 
-#: lexsup.c:241
+#: lexsup.c:244
 msgid "Default search path for Solaris compatibility"
 msgstr ""
 
-#: lexsup.c:243
+#: lexsup.c:246
 msgid "Start a group"
 msgstr ""
 
-#: lexsup.c:245
+#: lexsup.c:248
 msgid "End a group"
 msgstr ""
 
-#: lexsup.c:247
+#: lexsup.c:250
 msgid "Ignored for SunOS compatibility"
 msgstr ""
 
-#: lexsup.c:249
+#: lexsup.c:252
 msgid "Link against shared libraries"
 msgstr ""
 
-#: lexsup.c:255
+#: lexsup.c:258
 msgid "Do not link against shared libraries"
 msgstr ""
 
-#: lexsup.c:263
+#: lexsup.c:266
 msgid "Bind global references locally"
 msgstr ""
 
-#: lexsup.c:265
+#: lexsup.c:268
 msgid "Check section addresses for overlaps (default)"
 msgstr ""
 
-#: lexsup.c:267
+#: lexsup.c:270
 msgid "Do not check section addresses for overlaps"
 msgstr ""
 
-#: lexsup.c:270
+#: lexsup.c:273
 msgid "Output cross reference table"
 msgstr ""
 
-#: lexsup.c:272
+#: lexsup.c:275
 msgid "SYMBOL=EXPRESSION"
 msgstr ""
 
-#: lexsup.c:272
+#: lexsup.c:275
 msgid "Define a symbol"
 msgstr ""
 
-#: lexsup.c:274
+#: lexsup.c:277
 msgid "[=STYLE]"
 msgstr ""
 
-#: lexsup.c:274
+#: lexsup.c:277
 msgid "Demangle symbol names [using STYLE]"
 msgstr ""
 
-#: lexsup.c:276
+#: lexsup.c:279
 msgid "PROGRAM"
 msgstr ""
 
-#: lexsup.c:276
+#: lexsup.c:279
 msgid "Set the dynamic linker to use"
 msgstr ""
 
-#: lexsup.c:278
+#: lexsup.c:281
 msgid "Generate embedded relocs"
 msgstr ""
 
-#: lexsup.c:280
+#: lexsup.c:283
 msgid "Call SYMBOL at unload-time"
 msgstr ""
 
-#: lexsup.c:282
+#: lexsup.c:285
 msgid "Force generation of file with .exe suffix"
 msgstr ""
 
-#: lexsup.c:284
+#: lexsup.c:287
 msgid "Remove unused sections (on some targets)"
 msgstr ""
 
-#: lexsup.c:287
+#: lexsup.c:290
 msgid "Don't remove unused sections (default)"
 msgstr ""
 
-#: lexsup.c:290
+#: lexsup.c:293
 msgid "Print option help"
 msgstr ""
 
-#: lexsup.c:292
+#: lexsup.c:295
 msgid "Call SYMBOL at load-time"
 msgstr ""
 
-#: lexsup.c:294
+#: lexsup.c:297
 msgid "Write a map file"
 msgstr ""
 
-#: lexsup.c:296
+#: lexsup.c:299
 msgid "Do not demangle symbol names"
 msgstr ""
 
-#: lexsup.c:298
+#: lexsup.c:301
 msgid "Use less memory and more disk I/O"
 msgstr ""
 
-#: lexsup.c:300
+#: lexsup.c:303
 msgid "Allow no undefined symbols"
 msgstr ""
 
-#: lexsup.c:302
+#: lexsup.c:305
+msgid "Allow undefined symbols in shared objects"
+msgstr ""
+
+#: lexsup.c:307
 msgid "Don't warn about mismatched input files"
 msgstr ""
 
-#: lexsup.c:304
+#: lexsup.c:309
 msgid "Turn off --whole-archive"
 msgstr ""
 
-#: lexsup.c:306
+#: lexsup.c:311
 msgid "Create an output file even if errors occur"
 msgstr ""
 
-#: lexsup.c:310
+#: lexsup.c:315
 msgid "Specify target of output file"
 msgstr ""
 
-#: lexsup.c:312
+#: lexsup.c:317
 msgid "Ignored for Linux compatibility"
 msgstr ""
 
-#: lexsup.c:314
+#: lexsup.c:319
 msgid "Relax branches on certain targets"
 msgstr ""
 
-#: lexsup.c:317
+#: lexsup.c:322
 msgid "Keep only symbols listed in FILE"
 msgstr ""
 
-#: lexsup.c:319
+#: lexsup.c:324
 msgid "Set runtime shared library search path"
 msgstr ""
 
-#: lexsup.c:321
+#: lexsup.c:326
 msgid "Set link time shared library search path"
 msgstr ""
 
-#: lexsup.c:323
+#: lexsup.c:328
 msgid "Create a shared library"
 msgstr ""
 
-#: lexsup.c:327
+#: lexsup.c:332
 msgid "Sort common symbols by size"
 msgstr ""
 
-#: lexsup.c:331
+#: lexsup.c:336
 msgid "[=SIZE]"
 msgstr ""
 
-#: lexsup.c:331
+#: lexsup.c:336
 msgid "Split output sections every SIZE octets"
 msgstr ""
 
-#: lexsup.c:333
+#: lexsup.c:338
 msgid "[=COUNT]"
 msgstr ""
 
-#: lexsup.c:333
+#: lexsup.c:338
 msgid "Split output sections every COUNT relocs"
 msgstr ""
 
-#: lexsup.c:335
+#: lexsup.c:340
 msgid "Print memory usage statistics"
 msgstr ""
 
-#: lexsup.c:337
+#: lexsup.c:342
 msgid "Display target specific options"
 msgstr ""
 
-#: lexsup.c:339
+#: lexsup.c:344
 msgid "Do task level linking"
 msgstr ""
 
-#: lexsup.c:341
+#: lexsup.c:346
 msgid "Use same format as native linker"
 msgstr ""
 
-#: lexsup.c:343
+#: lexsup.c:348
 msgid "SECTION=ADDRESS"
 msgstr ""
 
-#: lexsup.c:343
+#: lexsup.c:348
 msgid "Set address of named section"
 msgstr ""
 
-#: lexsup.c:345
+#: lexsup.c:350
 msgid "Set address of .bss section"
 msgstr ""
 
-#: lexsup.c:347
+#: lexsup.c:352
 msgid "Set address of .data section"
 msgstr ""
 
-#: lexsup.c:349
+#: lexsup.c:354
 msgid "Set address of .text section"
 msgstr ""
 
-#: lexsup.c:351
+#: lexsup.c:356
 msgid "Output lots of information during link"
 msgstr ""
 
-#: lexsup.c:355
+#: lexsup.c:360
 msgid "Read version information script"
 msgstr ""
 
-#: lexsup.c:358
+#: lexsup.c:363
 msgid ""
 "Take export symbols list from .exports, using\n"
 "\t\t\t\tSYMBOL as the version."
 msgstr ""
 
-#: lexsup.c:361
+#: lexsup.c:366
 msgid "Warn about duplicate common symbols"
 msgstr ""
 
-#: lexsup.c:363
+#: lexsup.c:368
 msgid "Warn if global constructors/destructors are seen"
 msgstr ""
 
-#: lexsup.c:366
+#: lexsup.c:371
 msgid "Warn if the multiple GP values are used"
 msgstr ""
 
-#: lexsup.c:368
+#: lexsup.c:373
 msgid "Warn only once per undefined symbol"
 msgstr ""
 
-#: lexsup.c:370
+#: lexsup.c:375
 msgid "Warn if start of section changes due to alignment"
 msgstr ""
 
-#: lexsup.c:373
+#: lexsup.c:378
 msgid "Include all objects from following archives"
 msgstr ""
 
-#: lexsup.c:375
+#: lexsup.c:380
 msgid "Use wrapper functions for SYMBOL"
 msgstr ""
 
-#: lexsup.c:377
+#: lexsup.c:382
 msgid "[=WORDS]"
 msgstr ""
 
-#: lexsup.c:377
+#: lexsup.c:382
 msgid ""
 "Modify problematic branches in last WORDS (1-10,\n"
 "\t\t\t\tdefault 5) words of a page"
 msgstr ""
 
-#: lexsup.c:527
+#: lexsup.c:532
 #, c-format
 msgid "%s: use the --help option for usage information\n"
 msgstr ""
 
-#: lexsup.c:547
+#: lexsup.c:552
 msgid "%P%F: unrecognized -a option `%s'\n"
 msgstr ""
 
-#: lexsup.c:560
+#: lexsup.c:565
 msgid "%P%F: unrecognized -assert option `%s'\n"
 msgstr ""
 
-#: lexsup.c:603
+#: lexsup.c:608
 msgid "%F%P: unknown demangling style `%s'"
 msgstr ""
 
-#: lexsup.c:662
+#: lexsup.c:667
 msgid "%P%F: invalid number `%s'\n"
 msgstr ""
 
-#: lexsup.c:837
+#: lexsup.c:845
 msgid "%P%F: -shared not supported\n"
 msgstr ""
 
-#: lexsup.c:871
+#: lexsup.c:879
 #, c-format
 msgid "%s: Invalid argument to option \"--section-start\"\n"
 msgstr ""
 
-#: lexsup.c:882
+#: lexsup.c:890
 #, c-format
 msgid "%s: Missing argument(s) to option \"--section-start\"\n"
 msgstr ""
 
-#: lexsup.c:946
+#: lexsup.c:954
 msgid "Copyright 2000 Free Software Foundation, Inc.\n"
 msgstr ""
 
-#: lexsup.c:947
+#: lexsup.c:955
 msgid ""
 "This program is free software; you may redistribute it under the terms of\n"
 "the GNU General Public License.  This program has absolutely no warranty.\n"
 msgstr ""
 
-#: lexsup.c:1039
+#: lexsup.c:1047
 #, c-format
 msgid "%s: may not nest groups (--help for usage)\n"
 msgstr ""
 
-#: lexsup.c:1050
+#: lexsup.c:1058
 #, c-format
 msgid "%s: group ended before it began (--help for usage)\n"
 msgstr ""
 
-#: lexsup.c:1067
+#: lexsup.c:1075
 #, c-format
 msgid "%s: Invalid argument to option \"mpc860c0\"\n"
 msgstr ""
 
-#: lexsup.c:1123
+#: lexsup.c:1131
 msgid "%P%F: invalid hex number `%s'\n"
 msgstr ""
 
-#: lexsup.c:1135
+#: lexsup.c:1143
 #, c-format
 msgid "Usage: %s [options] file...\n"
 msgstr ""
 
-#: lexsup.c:1137
+#: lexsup.c:1145
 msgid "Options:\n"
 msgstr ""
 
 #. Note: Various tools (such as libtool) depend upon the
 #. format of the listings below - do not change them.
-#: lexsup.c:1216
+#: lexsup.c:1224
 #, c-format
 msgid "%s: supported targets:"
 msgstr ""
 
-#: lexsup.c:1224
+#: lexsup.c:1232
 #, c-format
 msgid "%s: supported emulations: "
 msgstr ""
 
-#: lexsup.c:1229
+#: lexsup.c:1237
 #, c-format
 msgid "%s: emulation specific options:\n"
 msgstr ""
 
-#: lexsup.c:1233
+#: lexsup.c:1241
 #, c-format
 msgid "Report bugs to %s\n"
 msgstr ""