bug-binutils
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: .gnu.warning.foo interferes with archive-member rules


From: H.J. Lu
Subject: Re: .gnu.warning.foo interferes with archive-member rules
Date: Tue, 7 Jun 2011 21:48:21 -0700

On Tue, Jun 7, 2011 at 2:08 AM, Alan Modra <address@hidden> wrote:
> On Mon, Jun 06, 2011 at 03:41:14PM -0700, Roland McGrath wrote:
>> Consider:
>>
>>       % head ref.s def.s
>>       ==> ref.s <==
>>               .data
>>       ptrsym:
>>       .long badsym
>>
>>               .section .gnu.warning.badsym,"",@progbits
>>               .string "badsym warning"
>>
>>       ==> def.s <==
>>       .comm badsym,4
>>       % as --32 -o ref.o ref.s
>>       % as --32 -o def.o def.s
>>       % ar cqs def.a def.o
>>       % ./ld/ld-new -m elf_i386 -o foo ref.o def.a
>>       ref.o: In function `ptrsym':
>>       (.data+0x0): warning: badsym warning
>>       ./ld/ld-new: warning: cannot find entry symbol _start; defaulting to 
>> 0000000008048054
>>       ref.o: In function `ptrsym':
>>       (.data+0x0): undefined reference to `badsym'
>>       [Exit 1]
>>       %
>
> I think you've managed to hit two bugs.  I'll commit the following
> after some testing.
>
> bfd/
>        * elflink.c (_bfd_elf_archive_symbol_lookup): Follow warning and
>        indirect links here.
> ld/
>        * ldlang.c (lang_one_common): Handle warning symbols.
>
I checked in this testcase.

Thanks.


-- 
H.J.
---
diff --git a/ld/testsuite/ChangeLog b/ld/testsuite/ChangeLog
index 5ee6f44..31d542d 100644
--- a/ld/testsuite/ChangeLog
+++ b/ld/testsuite/ChangeLog
@@ -1,3 +1,11 @@
+2011-06-07  H.J. Lu  <address@hidden>
+
+       * ld-elf/elf.exp: Build symbol3.a and symbol3w.a.
+
+       * ld-elf/symbol3.s: New.
+       * ld-elf/symbol3w.s: Likewise.
+       * ld-elf/warn3.d: Likewise.
+
 2011-06-02  Nathan Sidwell  <address@hidden>

        Adjust tests for zero offset formatting.
diff --git a/ld/testsuite/ld-elf/elf.exp b/ld/testsuite/ld-elf/elf.exp
index b9ff0bd..e991f83 100644
--- a/ld/testsuite/ld-elf/elf.exp
+++ b/ld/testsuite/ld-elf/elf.exp
@@ -40,6 +40,15 @@ if { [is_remote host] } then {
     remote_download host merge.ld
 }

+run_ld_link_tests {
+    {"Build symbol3.a"
+     "" ""
+     {symbol3.s} {} "symbol3.a"}
+    {"Build symbol3w.a"
+     "" ""
+     {symbol3w.s} {} "symbol3w.a"}
+}
+
 set test_list [lsort [glob -nocomplain $srcdir/$subdir/*.d]]
 foreach t $test_list {
     # We need to strip the ".d", but can leave the dirname.
diff --git a/ld/testsuite/ld-elf/symbol3.s b/ld/testsuite/ld-elf/symbol3.s
new file mode 100644
index 0000000..4fd76d5
--- /dev/null
+++ b/ld/testsuite/ld-elf/symbol3.s
@@ -0,0 +1 @@
+        .comm badsym,4
diff --git a/ld/testsuite/ld-elf/symbol3w.s b/ld/testsuite/ld-elf/symbol3w.s
new file mode 100644
index 0000000..33262a6
--- /dev/null
+++ b/ld/testsuite/ld-elf/symbol3w.s
@@ -0,0 +1,4 @@
+       .data
+       .dc.a   badsym
+        .section        .gnu.warning.badsym,"",%progbits
+        .string "badsym warning"
diff --git a/ld/testsuite/ld-elf/warn3.d b/ld/testsuite/ld-elf/warn3.d
new file mode 100644
index 0000000..c99618d
--- /dev/null
+++ b/ld/testsuite/ld-elf/warn3.d
@@ -0,0 +1,15 @@
+#source: start.s
+#ld: tmpdir/symbol3w.o tmpdir/symbol3.a
+#warning: .*: warning: badsym warning$
+#readelf: -s
+#notarget: "sparc64-*-solaris2*" "sparcv9-*-solaris2*"
+#xfail: arc-*-* d30v-*-* dlx-*-* fr30-*-* frv-*-elf i860-*-* i960-*-*
+#xfail: iq*-*-* mn10200-*-* moxie-*-* msp*-*-* mt-*-* or32-*-* pj*-*-*
+# if not using elf32.em, you don't get fancy section handling
+
+# Check that warnings are generated for the symbols in .gnu.warning
+# construct and that the symbol still appears as expected.
+
+#...
+ +[0-9]+: +[0-9a-f]+ +4 +OBJECT +GLOBAL +DEFAULT +[1-9] badsym
+#pass



reply via email to

[Prev in Thread] Current Thread [Next in Thread]