This is the mail archive of the binutils@sourceware.org mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

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


On Tue, Jun 7, 2011 at 2:08 AM, Alan Modra <amodra@gmail.com> 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  <hongjiu.lu@intel.com>
+
+	* 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  <nathan@codesourcery.com>

 	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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]