+2010-01-26 Alan Modra <amodra@gmail.com>
+ H.J. Lu <hongjiu.lu@intel.com>
+
+ PR ld/11218
+ * elflink.c (elf_link_output_extsym): Do not ignore undefined
+ symbols with ref_regular set when gc_sections is active.
+
2010-01-25 Alan Modra <amodra@gmail.com>
PR ld/11217
{
/* If we have an undefined symbol reference here then it must have
come from a shared library that is being linked in. (Undefined
- references in regular files have already been handled). */
+ references in regular files have already been handled unless
+ they are in unreferenced sections which are removed by garbage
+ collection). */
bfd_boolean ignore_undef = FALSE;
/* Some symbols may be special in that the fact that they're
/* If we are reporting errors for this situation then do so now. */
if (ignore_undef == FALSE
&& h->ref_dynamic
- && ! h->ref_regular
+ && (!h->ref_regular || finfo->info->gc_sections)
&& ! elf_link_check_versioned_symbol (finfo->info, bed, h)
&& finfo->info->unresolved_syms_in_shared_libs != RM_IGNORE)
{
if (! (finfo->info->callbacks->undefined_symbol
- (finfo->info, h->root.root.string, h->root.u.undef.abfd,
+ (finfo->info, h->root.root.string,
+ h->ref_regular ? NULL : h->root.u.undef.abfd,
NULL, 0, finfo->info->unresolved_syms_in_shared_libs == RM_GENERATE_ERROR)))
{
eoinfo->failed = TRUE;
+2010-01-26 H.J. Lu <hongjiu.lu@intel.com>
+
+ PR ld/11218
+ * ld-gc/dummy.s: New.
+ * ld-gc/pr11218-1.c: Likewise.
+ * ld-gc/pr11218-2.c: Likewise.
+ * ld-gc/pr11218.d: Likewise.
+
2010-01-23 Richard Sandiford <r.sandiford@uk.ibm.com>
* ld-powerpc/aix-ref-1-32.od, ld-powerpc/aix-ref-1-64.od,
run_dump_test "noent"
run_dump_test "abi-note"
run_dump_test "start"
+if { [is_remote host] || [which $CC] != 0 } {
+ if { [istarget "*-*-linux*"] } {
+ ld_compile "$CC -fPIC $CFLAGS $cflags" $srcdir/$subdir/pr11218-1.c tmpdir/pr11218-1.o
+ ld_simple_link $ld tmpdir/pr11218-1.so "-shared tmpdir/pr11218-1.o"
+ ld_compile "$CC -c $CFLAGS $cflags" $srcdir/$subdir/pr11218-2.c tmpdir/pr11218-2.o
+ run_dump_test "pr11218"
+ }
+}
--- /dev/null
+extern void unresolved_detected_at_runtime_not_at_linktime(void);
+void foo_in_so(void)
+{
+ unresolved_detected_at_runtime_not_at_linktime();
+}
--- /dev/null
+extern void foo_in_so(void);
+
+void call_unresolved(void)
+{
+ unresolved_detected_at_runtime_not_at_linktime();
+}
+
+int main(int argc, char *argv[])
+{
+ foo_in_so();
+
+ return 0;
+}
--- /dev/null
+# name: --gc-sections with shared library
+# source: dummy.s
+# ld: --gc-sections -e main tmpdir/pr11218-2.o tmpdir/pr11218-1.so
+# target: *-*-linux*
+# error: undefined reference to `unresolved_detected_at_runtime_not_at_linktime'