From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 19028 invoked by alias); 8 Jun 2011 04:48:39 -0000 Received: (qmail 19020 invoked by uid 22791); 8 Jun 2011 04:48:38 -0000 X-SWARE-Spam-Status: No, hits=-0.9 required=5.0 tests=AWL,BAYES_50,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,RCVD_IN_DNSWL_LOW,RFC_ABUSE_POST,TW_CQ,TW_DL X-Spam-Check-By: sourceware.org Received: from mail-qw0-f41.google.com (HELO mail-qw0-f41.google.com) (209.85.216.41) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Wed, 08 Jun 2011 04:48:22 +0000 Received: by qwa26 with SMTP id 26so69866qwa.0 for ; Tue, 07 Jun 2011 21:48:21 -0700 (PDT) MIME-Version: 1.0 Received: by 10.229.106.34 with SMTP id v34mr5173502qco.111.1307508501688; Tue, 07 Jun 2011 21:48:21 -0700 (PDT) Received: by 10.229.47.78 with HTTP; Tue, 7 Jun 2011 21:48:21 -0700 (PDT) In-Reply-To: <20110607090830.GA4172@bubble.grove.modra.org> References: <20110607090830.GA4172@bubble.grove.modra.org> Date: Wed, 08 Jun 2011 04:48:00 -0000 Message-ID: Subject: Re: .gnu.warning.foo interferes with archive-member rules From: "H.J. Lu" To: Roland McGrath , bug-binutils@gnu.org, binutils@sourceware.org Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable X-IsSubscribed: yes Mailing-List: contact binutils-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: binutils-owner@sourceware.org X-SW-Source: 2011-06/txt/msg00086.txt.bz2 On Tue, Jun 7, 2011 at 2:08 AM, Alan Modra wrote: > On Mon, Jun 06, 2011 at 03:41:14PM -0700, Roland McGrath wrote: >> Consider: >> >> =A0 =A0 =A0 % head ref.s def.s >> =A0 =A0 =A0 =3D=3D> ref.s <=3D=3D >> =A0 =A0 =A0 =A0 =A0 =A0 =A0 .data >> =A0 =A0 =A0 ptrsym: >> =A0 =A0 =A0 .long badsym >> >> =A0 =A0 =A0 =A0 =A0 =A0 =A0 .section .gnu.warning.badsym,"",@progbits >> =A0 =A0 =A0 =A0 =A0 =A0 =A0 .string "badsym warning" >> >> =A0 =A0 =A0 =3D=3D> def.s <=3D=3D >> =A0 =A0 =A0 .comm badsym,4 >> =A0 =A0 =A0 % as --32 -o ref.o ref.s >> =A0 =A0 =A0 % as --32 -o def.o def.s >> =A0 =A0 =A0 % ar cqs def.a def.o >> =A0 =A0 =A0 % ./ld/ld-new -m elf_i386 -o foo ref.o def.a >> =A0 =A0 =A0 ref.o: In function `ptrsym': >> =A0 =A0 =A0 (.data+0x0): warning: badsym warning >> =A0 =A0 =A0 ./ld/ld-new: warning: cannot find entry symbol _start; defau= lting to 0000000008048054 >> =A0 =A0 =A0 ref.o: In function `ptrsym': >> =A0 =A0 =A0 (.data+0x0): undefined reference to `badsym' >> =A0 =A0 =A0 [Exit 1] >> =A0 =A0 =A0 % > > I think you've managed to hit two bugs. =A0I'll commit the following > after some testing. > > bfd/ > =A0 =A0 =A0 =A0* elflink.c (_bfd_elf_archive_symbol_lookup): Follow warni= ng and > =A0 =A0 =A0 =A0indirect links here. > ld/ > =A0 =A0 =A0 =A0* ldlang.c (lang_one_common): Handle warning symbols. > I checked in this testcase. Thanks. --=20 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 + + * 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 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