summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--bfd/ChangeLog5
-rw-r--r--bfd/elflink.h1
-rw-r--r--bfd/po/bfd.pot90
-rw-r--r--include/ChangeLog7
-rw-r--r--include/bfdlink.h13
5 files changed, 71 insertions, 45 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index 6c8ce498293..bec4d507610 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -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.
diff --git a/bfd/elflink.h b/bfd/elflink.h
index 4d3eb644b3a..b3e1bbc6fc1 100644
--- a/bfd/elflink.h
+++ b/bfd/elflink.h
@@ -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
diff --git a/bfd/po/bfd.pot b/bfd/po/bfd.pot
index 2de1a0efd11..a2dc237b705 100644
--- a/bfd/po/bfd.pot
+++ b/bfd/po/bfd.pot
@@ -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 ""
diff --git a/include/ChangeLog b/include/ChangeLog
index 68470925e18..1b1af76897b 100644
--- a/include/ChangeLog
+++ b/include/ChangeLog
@@ -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.
diff --git a/include/bfdlink.h b/include/bfdlink.h
index 18c60a57d4f..ae96323bfa7 100644
--- a/include/bfdlink.h
+++ b/include/bfdlink.h
@@ -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. */