Bug 12760 - LTO doesn't work with .gnu.warning section
Summary: LTO doesn't work with .gnu.warning section
Status: RESOLVED FIXED
Alias: None
Product: binutils
Classification: Unclassified
Component: ld (show other bugs)
Version: 2.22
: P2 normal
Target Milestone: ---
Assignee: unassigned
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2011-05-14 14:33 UTC by H.J. Lu
Modified: 2014-03-27 15:13 UTC (History)
2 users (show)

See Also:
Host:
Target:
Build:
Last reconfirmed:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description H.J. Lu 2011-05-14 14:33:31 UTC
[hjl@gnu-mic-1 warn]$ cat foo.c
extern void bar ();

void
foo ()
{
  bar ();
}
[hjl@gnu-mic-1 warn]$ cat bar.c
#define linker_warning(x, msg) \
	asm(".section .gnu.warning." #x "\n\t.previous"); \
	static const char __warn_##x[] \
	__attribute__((used, section(".gnu.warning." #x "\n\t#"))) \
	= msg

void bar (void) {} 
linker_warning(bar, "Bad bar"); 
[hjl@gnu-mic-1 warn]$ make
/export/build/gnu/gcc-4.6/release/usr/gcc-4.6.1/bin/gcc -O2 -fuse-linker-plugin -flto=jobserver   -c -o foo.o foo.c
/export/build/gnu/gcc-4.6/release/usr/gcc-4.6.1/bin/gcc -O2 -fuse-linker-plugin -flto=jobserver   -c -o bar.o bar.c
ar rv libbar.a bar.o
ar: creating libbar.a
a - bar.o
/export/build/gnu/gcc-4.6/release/usr/gcc-4.6.1/bin/gcc -Wl,-e,foo -nostdlib -o x1 foo.o -Wl,--start-group libbar.a -Wl,--end-group
foo.o: In function `foo':
foo.c:(.text+0x3): warning: Bad bar
/export/build/gnu/gcc-4.6/release/usr/gcc-4.6.1/bin/gcc -Wl,-e,foo -nostdlib -O2 -fuse-linker-plugin -flto=jobserver -o x2 foo.o -Wl,--start-group libbar.a -Wl,--end-group
collect2: ld terminated with signal 11 [Segmentation fault]
make: *** [x2] Error 1
rm bar.o
[hjl@gnu-mic-1 warn]$ 

Program received signal SIGSEGV, Segmentation fault.
0x000000000045011d in bfd_generic_link_read_symbols (abfd=0x80a588)
    at /export/gnu/import/git/binutils-lto/bfd/linker.c:755
755	      symsize = bfd_get_symtab_upper_bound (abfd);
Missing separate debuginfos, use: debuginfo-install glibc-2.13.90-11.1.f14.x86_64 zlib-1.2.5-2.fc14.x86_64
(gdb) bt
#0  0x000000000045011d in bfd_generic_link_read_symbols (abfd=0x80a588)
    at /export/gnu/import/git/binutils-lto/bfd/linker.c:755
#1  0x000000000041e058 in warning_callback (info=0x7c5a40, 
    warning=0x817b40 "Bad bar", symbol=0x7f6c65 "bar", abfd=0x80a588, 
    section=0x0, address=0)
    at /export/gnu/import/git/binutils-lto/ld/ldmain.c:1197
#2  0x0000000000451a43 in _bfd_generic_link_add_one_symbol (info=0x7c5a40, 
    abfd=0x7fa4c0, name=0x815241 "bar", flags=4096, section=0x816788, value=0, 
    string=0x817b40 "Bad bar", copy=0, collect=0, hashp=0x0)
    at /export/gnu/import/git/binutils-lto/bfd/linker.c:1920
#3  0x000000000048affd in elf_link_add_object_symbols (abfd=0x7fa4c0, 
    info=0x7c5a40) at /export/gnu/import/git/binutils-lto/bfd/elflink.c:3481
#4  0x000000000048eefa in bfd_elf_link_add_symbols (abfd=0x7fa4c0, 
    info=0x7c5a40) at /export/gnu/import/git/binutils-lto/bfd/elflink.c:5150
#5  0x0000000000410260 in load_symbols (entry=0x7da0c0, place=0x7fffffffdb70)
    at /export/gnu/import/git/binutils-lto/ld/ldlang.c:2822
#6  0x0000000000410e19 in open_input_bfds (s=0x7da0c0, mode=OPEN_BFD_NORMAL)
    at /export/gnu/import/git/binutils-lto/ld/ldlang.c:3269
#7  0x0000000000416c2c in lang_process ()
    at /export/gnu/import/git/binutils-lto/ld/ldlang.c:6566
#8  0x000000000041c791 in main (argc=25, argv=0x7fffffffddb8)
    at /export/gnu/import/git/binutils-lto/ld/ldmain.c:438
(gdb) p *h
$1 = {root = {next = 0x0, string = 0x7f6c65 "bar", hash = 43167049}, 
  type = bfd_link_hash_undefweak, non_ir_ref = 0, u = {undef = {next = 0x0, 
      abfd = 0x80a588, weak = 0x0}, def = {next = 0x0, section = 0x80a588, 
      value = 0}, i = {next = 0x0, link = 0x80a588, warning = 0x0}, c = {
      next = 0x0, p = 0x80a588, size = 0}}}
(gdb) p h->u.undef.abfd->filename
$2 = 0x34 <Address 0x34 out of bounds>
(gdb) p h->u.def.section->owner->filename
$3 = 0x7fa150 "bar.o (symbol from plugin)"
(gdb)
Comment 1 H.J. Lu 2011-05-14 14:53:35 UTC
This seems to work:

diff --git a/ld/plugin.c b/ld/plugin.c
index 8425fa3..2cf1fc2 100644
--- a/ld/plugin.c
+++ b/ld/plugin.c
@@ -940,12 +940,19 @@ plugin_notice (struct bfd_link_info *info,
 	 definition, and strong symbols will normally cause multiple
 	 definition errors.  Avoid this by making the symbol appear
 	 to be undefined.  */
-      else if (((h->type == bfd_link_hash_defweak
+      else if ((h->type == bfd_link_hash_defweak
 		 || h->type == bfd_link_hash_defined)
 		&& is_ir_dummy_bfd (h->u.def.section->owner))
-	       || (h->type == bfd_link_hash_common
-		   && is_ir_dummy_bfd (h->u.c.p->section->owner)))
-	h->type = bfd_link_hash_undefweak;
+	{
+	  h->u.undef.abfd = h->u.def.section->owner;
+	  h->type = bfd_link_hash_undefweak;
+	}
+      else if (h->type == bfd_link_hash_common
+	       && is_ir_dummy_bfd (h->u.c.p->section->owner))
+	{
+	  h->u.undef.abfd = h->u.c.p->section->owner;
+	  h->type = bfd_link_hash_undefweak;
+	}
     }
 
   /* Continue with cref/nocrossref/trace-sym processing.  */
Comment 2 H.J. Lu 2011-05-14 16:25:11 UTC
To get proper linker warnings, plugin dummy should include those
.gnu.warning sections.
Comment 3 cvs-commit@gcc.gnu.org 2011-05-16 00:54:47 UTC
CVSROOT:	/cvs/src
Module name:	src
Branch: 	binutils-2_21-branch
Changes by:	amodra@sourceware.org	2011-05-16 00:54:45

Modified files:
	ld             : ChangeLog plugin.c 

Log message:
	PR ld/12760
	* plugin.c (plugin_notice): Set u.undef.abfd for symbols made
	undefweak.

Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/src/ld/ChangeLog.diff?cvsroot=src&only_with_tag=binutils-2_21-branch&r1=1.2222.2.22&r2=1.2222.2.23
http://sourceware.org/cgi-bin/cvsweb.cgi/src/ld/plugin.c.diff?cvsroot=src&only_with_tag=binutils-2_21-branch&r1=1.7.2.4&r2=1.7.2.5
Comment 4 cvs-commit@gcc.gnu.org 2011-05-16 00:58:14 UTC
CVSROOT:	/cvs/src
Module name:	src
Changes by:	amodra@sourceware.org	2011-05-16 00:58:11

Modified files:
	ld             : ChangeLog plugin.c 

Log message:
	PR ld/12760
	* plugin.c (plugin_notice): Set u.undef.abfd for symbols made
	undefweak.

Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/src/ld/ChangeLog.diff?cvsroot=src&r1=1.2332&r2=1.2333
http://sourceware.org/cgi-bin/cvsweb.cgi/src/ld/plugin.c.diff?cvsroot=src&r1=1.33&r2=1.34
Comment 5 Alan Modra 2011-05-16 01:04:20 UTC
The patch I've committed isn't a full fix, since it results in a warning being emitted when the real object file defines the warning symbol.  This is too early.  The symbol may not even be referenced in the real object file.
Comment 6 H.J. Lu 2011-05-16 01:41:35 UTC
(In reply to comment #5)
> The patch I've committed isn't a full fix, since it results in a warning being
> emitted when the real object file defines the warning symbol.  This is too
> early.  The symbol may not even be referenced in the real object file.

I am using:

diff --git a/ld/ldmain.c b/ld/ldmain.c
index 8647e36..84ac2ae 100644 (file)
--- a/ld/ldmain.c
+++ b/ld/ldmain.c
@@ -1187,7 +1187,7 @@ warning_callback (struct bfd_link_info *info ATTRIBUTE_UNUSED,
     einfo ("%P: %s%s\n", _("warning: "), warning);
   else if (symbol == NULL)
     einfo ("%B: %s%s\n", abfd, _("warning: "), warning);
-  else
+  else if ((abfd->flags & BFD_PLUGIN) == 0)
     {
       struct warning_callback_info cinfo;

It doesn't make any senses to issue warning against plugin dummy.
Comment 7 Alan Modra 2011-05-16 13:52:20 UTC
modified bar.c testing other warning sym cases

#define linker_warning(x, msg) \
    asm(".section .gnu.warning." #x "\n\t.previous"); \
    static const char __warn_##x[] \
    __attribute__((used, section(".gnu.warning." #x "\n\t#"))) \
    = msg

volatile int x;
void bar (void) { x++; }
linker_warning(bar, "should warn about bar");

void notcalled (void) { x--; }
linker_warning(notcalled, "linker bug, should not warn about notcalled");

linker_warning(notdef, "linker bug, should not warn about notdef");
Comment 8 H.J. Lu 2011-05-16 14:01:01 UTC
(In reply to comment #7)
> modified bar.c testing other warning sym cases
> 
> #define linker_warning(x, msg) \
>     asm(".section .gnu.warning." #x "\n\t.previous"); \
>     static const char __warn_##x[] \
>     __attribute__((used, section(".gnu.warning." #x "\n\t#"))) \
>     = msg

There is a typo in linker_warning. Please change it to

#define linker_warning(x, msg) \
	static const char __warn_##x[] \
	__attribute__((used, section(".gnu.warning." #x))) \
	= msg
Comment 9 cvs-commit@gcc.gnu.org 2011-05-17 13:02:22 UTC
CVSROOT:	/cvs/src
Module name:	src
Changes by:	amodra@sourceware.org	2011-05-17 13:02:18

Modified files:
	include        : ChangeLog bfdlink.h 
	bfd            : ChangeLog coff-aux.c elflink.c linker.c 
	ld             : ChangeLog ldmain.c plugin.c 

Log message:
	PR ld/12760
	include/
	* bfdlink.h (struct bfd_link_callbacks <notice>): Add "flags" and
	"string" param.
	bfd/
	* coff-aux.c (coff_m68k_aux_link_add_one_symbol): Adjust "notice" call.
	* elflink.c (elf_link_add_object_symbols): Likewise.
	* linker.c (_bfd_generic_link_add_one_symbol): Likewise.
	ld/
	* ldmain.c (notice): Add "flags" and "string" param.
	* plugin.c (plugin_notice): Likewise.  Handle indirect, warning
	and constructor syms.

Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/src/include/ChangeLog.diff?cvsroot=src&r1=1.532&r2=1.533
http://sourceware.org/cgi-bin/cvsweb.cgi/src/include/bfdlink.h.diff?cvsroot=src&r1=1.86&r2=1.87
http://sourceware.org/cgi-bin/cvsweb.cgi/src/bfd/ChangeLog.diff?cvsroot=src&r1=1.5344&r2=1.5345
http://sourceware.org/cgi-bin/cvsweb.cgi/src/bfd/coff-aux.c.diff?cvsroot=src&r1=1.11&r2=1.12
http://sourceware.org/cgi-bin/cvsweb.cgi/src/bfd/elflink.c.diff?cvsroot=src&r1=1.403&r2=1.404
http://sourceware.org/cgi-bin/cvsweb.cgi/src/bfd/linker.c.diff?cvsroot=src&r1=1.82&r2=1.83
http://sourceware.org/cgi-bin/cvsweb.cgi/src/ld/ChangeLog.diff?cvsroot=src&r1=1.2334&r2=1.2335
http://sourceware.org/cgi-bin/cvsweb.cgi/src/ld/ldmain.c.diff?cvsroot=src&r1=1.154&r2=1.155
http://sourceware.org/cgi-bin/cvsweb.cgi/src/ld/plugin.c.diff?cvsroot=src&r1=1.34&r2=1.35
Comment 10 cvs-commit@gcc.gnu.org 2011-05-29 04:52:59 UTC
CVSROOT:	/cvs/src
Module name:	src
Branch: 	binutils-2_21-branch
Changes by:	amodra@sourceware.org	2011-05-29 04:51:53

Modified files:
	bfd            : ChangeLog aoutx.h archive.c bfd-in2.h bfdio.c 
	                 coff-aux.c coffcode.h coffgen.c cofflink.c 
	                 config.in configure configure.in dwarf2.c 
	                 elf-bfd.h elf-m10300.c elf.c elf32-ppc.c 
	                 elf32-rx.c elf64-ppc.c elflink.c elfxx-ia64.c 
	                 libbfd.c linker.c peXXigen.c vms-alpha.c 
	bfd/hosts      : x86-64linux.h 
	binutils       : ChangeLog nm.c objcopy.c 
	binutils/doc   : binutils.texi 
	binutils/testsuite: ChangeLog 
	binutils/testsuite/binutils-all: nm.exp 
	binutils/testsuite/lib: utils-lib.exp 
	gas            : ChangeLog dwarf2dbg.c input-scrub.c messages.c 
	                 read.c 
	gas/config     : obj-elf.h tc-arc.c tc-d10v.h tc-d30v.h 
	                 tc-m32r.h 
	gas/testsuite  : ChangeLog 
	gas/testsuite/gas/i386: inval-equ-2.l 
	gas/testsuite/gas/symver: symver2.l 
	include        : ChangeLog ansidecl.h bfdlink.h 
	ld             : ChangeLog ldexp.c ldlang.c ldlex.l ldmain.c 
	                 plugin.c 
	ld/emultempl   : elf32.em pe.em pep.em 
	ld/scripttempl : pe.sc pep.sc 
	ld/testsuite   : ChangeLog 
	ld/testsuite/ld-cris: tls-e-tpoffcomm1.d 
	ld/testsuite/ld-plugin: plugin-7.d plugin-8.d 

Log message:
	PR 12365
	PR 12613
	PR 12632
	PR 12739
	PR 12753
	PR 12760
	PR 12763
	Apply fix from mainline along with assorted other small fixes.

Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/src/bfd/ChangeLog.diff?cvsroot=src&only_with_tag=binutils-2_21-branch&r1=1.5180.2.34&r2=1.5180.2.35
http://sourceware.org/cgi-bin/cvsweb.cgi/src/bfd/aoutx.h.diff?cvsroot=src&only_with_tag=binutils-2_21-branch&r1=1.84.2.1&r2=1.84.2.2
http://sourceware.org/cgi-bin/cvsweb.cgi/src/bfd/archive.c.diff?cvsroot=src&only_with_tag=binutils-2_21-branch&r1=1.69.2.3&r2=1.69.2.4
http://sourceware.org/cgi-bin/cvsweb.cgi/src/bfd/bfd-in2.h.diff?cvsroot=src&only_with_tag=binutils-2_21-branch&r1=1.522.2.2&r2=1.522.2.3
http://sourceware.org/cgi-bin/cvsweb.cgi/src/bfd/bfdio.c.diff?cvsroot=src&only_with_tag=binutils-2_21-branch&r1=1.27&r2=1.27.4.1
http://sourceware.org/cgi-bin/cvsweb.cgi/src/bfd/coff-aux.c.diff?cvsroot=src&only_with_tag=binutils-2_21-branch&r1=1.10.10.1&r2=1.10.10.2
http://sourceware.org/cgi-bin/cvsweb.cgi/src/bfd/coffcode.h.diff?cvsroot=src&only_with_tag=binutils-2_21-branch&r1=1.171&r2=1.171.2.1
http://sourceware.org/cgi-bin/cvsweb.cgi/src/bfd/coffgen.c.diff?cvsroot=src&only_with_tag=binutils-2_21-branch&r1=1.78&r2=1.78.4.1
http://sourceware.org/cgi-bin/cvsweb.cgi/src/bfd/cofflink.c.diff?cvsroot=src&only_with_tag=binutils-2_21-branch&r1=1.74.2.1&r2=1.74.2.2
http://sourceware.org/cgi-bin/cvsweb.cgi/src/bfd/config.in.diff?cvsroot=src&only_with_tag=binutils-2_21-branch&r1=1.48&r2=1.48.4.1
http://sourceware.org/cgi-bin/cvsweb.cgi/src/bfd/configure.diff?cvsroot=src&only_with_tag=binutils-2_21-branch&r1=1.339.2.4&r2=1.339.2.5
http://sourceware.org/cgi-bin/cvsweb.cgi/src/bfd/configure.in.diff?cvsroot=src&only_with_tag=binutils-2_21-branch&r1=1.287.2.4&r2=1.287.2.5
http://sourceware.org/cgi-bin/cvsweb.cgi/src/bfd/dwarf2.c.diff?cvsroot=src&only_with_tag=binutils-2_21-branch&r1=1.138&r2=1.138.2.1
http://sourceware.org/cgi-bin/cvsweb.cgi/src/bfd/elf-bfd.h.diff?cvsroot=src&only_with_tag=binutils-2_21-branch&r1=1.313.2.2&r2=1.313.2.3
http://sourceware.org/cgi-bin/cvsweb.cgi/src/bfd/elf-m10300.c.diff?cvsroot=src&only_with_tag=binutils-2_21-branch&r1=1.106&r2=1.106.2.1
http://sourceware.org/cgi-bin/cvsweb.cgi/src/bfd/elf.c.diff?cvsroot=src&only_with_tag=binutils-2_21-branch&r1=1.524.2.2&r2=1.524.2.3
http://sourceware.org/cgi-bin/cvsweb.cgi/src/bfd/elf32-ppc.c.diff?cvsroot=src&only_with_tag=binutils-2_21-branch&r1=1.290.2.3&r2=1.290.2.4
http://sourceware.org/cgi-bin/cvsweb.cgi/src/bfd/elf32-rx.c.diff?cvsroot=src&only_with_tag=binutils-2_21-branch&r1=1.5.2.1&r2=1.5.2.2
http://sourceware.org/cgi-bin/cvsweb.cgi/src/bfd/elf64-ppc.c.diff?cvsroot=src&only_with_tag=binutils-2_21-branch&r1=1.339.2.10&r2=1.339.2.11
http://sourceware.org/cgi-bin/cvsweb.cgi/src/bfd/elflink.c.diff?cvsroot=src&only_with_tag=binutils-2_21-branch&r1=1.388.2.2&r2=1.388.2.3
http://sourceware.org/cgi-bin/cvsweb.cgi/src/bfd/elfxx-ia64.c.diff?cvsroot=src&only_with_tag=binutils-2_21-branch&r1=1.228.2.1&r2=1.228.2.2
http://sourceware.org/cgi-bin/cvsweb.cgi/src/bfd/libbfd.c.diff?cvsroot=src&only_with_tag=binutils-2_21-branch&r1=1.53.2.1&r2=1.53.2.2
http://sourceware.org/cgi-bin/cvsweb.cgi/src/bfd/linker.c.diff?cvsroot=src&only_with_tag=binutils-2_21-branch&r1=1.77.2.2&r2=1.77.2.3
http://sourceware.org/cgi-bin/cvsweb.cgi/src/bfd/peXXigen.c.diff?cvsroot=src&only_with_tag=binutils-2_21-branch&r1=1.67&r2=1.67.2.1
http://sourceware.org/cgi-bin/cvsweb.cgi/src/bfd/vms-alpha.c.diff?cvsroot=src&only_with_tag=binutils-2_21-branch&r1=1.37.2.1&r2=1.37.2.2
http://sourceware.org/cgi-bin/cvsweb.cgi/src/bfd/hosts/x86-64linux.h.diff?cvsroot=src&only_with_tag=binutils-2_21-branch&r1=1.2&r2=1.2.4.1
http://sourceware.org/cgi-bin/cvsweb.cgi/src/binutils/ChangeLog.diff?cvsroot=src&only_with_tag=binutils-2_21-branch&r1=1.1708.2.9&r2=1.1708.2.10
http://sourceware.org/cgi-bin/cvsweb.cgi/src/binutils/nm.c.diff?cvsroot=src&only_with_tag=binutils-2_21-branch&r1=1.65&r2=1.65.2.1
http://sourceware.org/cgi-bin/cvsweb.cgi/src/binutils/objcopy.c.diff?cvsroot=src&only_with_tag=binutils-2_21-branch&r1=1.147.2.1&r2=1.147.2.2
http://sourceware.org/cgi-bin/cvsweb.cgi/src/binutils/doc/binutils.texi.diff?cvsroot=src&only_with_tag=binutils-2_21-branch&r1=1.173.2.1&r2=1.173.2.2
http://sourceware.org/cgi-bin/cvsweb.cgi/src/binutils/testsuite/ChangeLog.diff?cvsroot=src&only_with_tag=binutils-2_21-branch&r1=1.216.2.2&r2=1.216.2.3
http://sourceware.org/cgi-bin/cvsweb.cgi/src/binutils/testsuite/binutils-all/nm.exp.diff?cvsroot=src&only_with_tag=binutils-2_21-branch&r1=1.5&r2=1.5.4.1
http://sourceware.org/cgi-bin/cvsweb.cgi/src/binutils/testsuite/lib/utils-lib.exp.diff?cvsroot=src&only_with_tag=binutils-2_21-branch&r1=1.20.2.1&r2=1.20.2.2
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gas/ChangeLog.diff?cvsroot=src&only_with_tag=binutils-2_21-branch&r1=1.4320.2.29&r2=1.4320.2.30
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gas/dwarf2dbg.c.diff?cvsroot=src&only_with_tag=binutils-2_21-branch&r1=1.107&r2=1.107.2.1
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gas/input-scrub.c.diff?cvsroot=src&only_with_tag=binutils-2_21-branch&r1=1.23&r2=1.23.2.1
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gas/messages.c.diff?cvsroot=src&only_with_tag=binutils-2_21-branch&r1=1.23&r2=1.23.2.1
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gas/read.c.diff?cvsroot=src&only_with_tag=binutils-2_21-branch&r1=1.167.2.2&r2=1.167.2.3
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gas/config/obj-elf.h.diff?cvsroot=src&only_with_tag=binutils-2_21-branch&r1=1.38&r2=1.38.2.1
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gas/config/tc-arc.c.diff?cvsroot=src&only_with_tag=binutils-2_21-branch&r1=1.47&r2=1.47.2.1
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gas/config/tc-d10v.h.diff?cvsroot=src&only_with_tag=binutils-2_21-branch&r1=1.20&r2=1.20.2.1
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gas/config/tc-d30v.h.diff?cvsroot=src&only_with_tag=binutils-2_21-branch&r1=1.15&r2=1.15.4.1
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gas/config/tc-m32r.h.diff?cvsroot=src&only_with_tag=binutils-2_21-branch&r1=1.23&r2=1.23.4.1
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gas/testsuite/ChangeLog.diff?cvsroot=src&only_with_tag=binutils-2_21-branch&r1=1.1802.2.11&r2=1.1802.2.12
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gas/testsuite/gas/i386/inval-equ-2.l.diff?cvsroot=src&only_with_tag=binutils-2_21-branch&r1=1.1&r2=1.1.12.1
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gas/testsuite/gas/symver/symver2.l.diff?cvsroot=src&only_with_tag=binutils-2_21-branch&r1=1.1&r2=1.1.38.1
http://sourceware.org/cgi-bin/cvsweb.cgi/src/include/ChangeLog.diff?cvsroot=src&only_with_tag=binutils-2_21-branch&r1=1.510.2.2&r2=1.510.2.3
http://sourceware.org/cgi-bin/cvsweb.cgi/src/include/ansidecl.h.diff?cvsroot=src&only_with_tag=binutils-2_21-branch&r1=1.28&r2=1.28.6.1
http://sourceware.org/cgi-bin/cvsweb.cgi/src/include/bfdlink.h.diff?cvsroot=src&only_with_tag=binutils-2_21-branch&r1=1.82.2.1&r2=1.82.2.2
http://sourceware.org/cgi-bin/cvsweb.cgi/src/ld/ChangeLog.diff?cvsroot=src&only_with_tag=binutils-2_21-branch&r1=1.2222.2.23&r2=1.2222.2.24
http://sourceware.org/cgi-bin/cvsweb.cgi/src/ld/ldexp.c.diff?cvsroot=src&only_with_tag=binutils-2_21-branch&r1=1.87.2.2&r2=1.87.2.3
http://sourceware.org/cgi-bin/cvsweb.cgi/src/ld/ldlang.c.diff?cvsroot=src&only_with_tag=binutils-2_21-branch&r1=1.347.2.5&r2=1.347.2.6
http://sourceware.org/cgi-bin/cvsweb.cgi/src/ld/ldlex.l.diff?cvsroot=src&only_with_tag=binutils-2_21-branch&r1=1.47.2.2&r2=1.47.2.3
http://sourceware.org/cgi-bin/cvsweb.cgi/src/ld/ldmain.c.diff?cvsroot=src&only_with_tag=binutils-2_21-branch&r1=1.145.2.3&r2=1.145.2.4
http://sourceware.org/cgi-bin/cvsweb.cgi/src/ld/plugin.c.diff?cvsroot=src&only_with_tag=binutils-2_21-branch&r1=1.7.2.5&r2=1.7.2.6
http://sourceware.org/cgi-bin/cvsweb.cgi/src/ld/emultempl/elf32.em.diff?cvsroot=src&only_with_tag=binutils-2_21-branch&r1=1.214.2.1&r2=1.214.2.2
http://sourceware.org/cgi-bin/cvsweb.cgi/src/ld/emultempl/pe.em.diff?cvsroot=src&only_with_tag=binutils-2_21-branch&r1=1.162.2.2&r2=1.162.2.3
http://sourceware.org/cgi-bin/cvsweb.cgi/src/ld/emultempl/pep.em.diff?cvsroot=src&only_with_tag=binutils-2_21-branch&r1=1.38.2.1&r2=1.38.2.2
http://sourceware.org/cgi-bin/cvsweb.cgi/src/ld/scripttempl/pe.sc.diff?cvsroot=src&only_with_tag=binutils-2_21-branch&r1=1.24&r2=1.24.2.1
http://sourceware.org/cgi-bin/cvsweb.cgi/src/ld/scripttempl/pep.sc.diff?cvsroot=src&only_with_tag=binutils-2_21-branch&r1=1.13&r2=1.13.2.1
http://sourceware.org/cgi-bin/cvsweb.cgi/src/ld/testsuite/ChangeLog.diff?cvsroot=src&only_with_tag=binutils-2_21-branch&r1=1.1322.2.12&r2=1.1322.2.13
http://sourceware.org/cgi-bin/cvsweb.cgi/src/ld/testsuite/ld-cris/tls-e-tpoffcomm1.d.diff?cvsroot=src&only_with_tag=binutils-2_21-branch&r1=1.1&r2=1.1.6.1
http://sourceware.org/cgi-bin/cvsweb.cgi/src/ld/testsuite/ld-plugin/plugin-7.d.diff?cvsroot=src&only_with_tag=binutils-2_21-branch&r1=1.1.2.1&r2=1.1.2.2
http://sourceware.org/cgi-bin/cvsweb.cgi/src/ld/testsuite/ld-plugin/plugin-8.d.diff?cvsroot=src&only_with_tag=binutils-2_21-branch&r1=1.1.2.1&r2=1.1.2.2
Comment 11 Alan Modra 2011-05-29 08:19:09 UTC
Fixed as well as can be, I think
Comment 12 cvs-commit@gcc.gnu.org 2014-03-27 15:13:47 UTC
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "gdb and binutils".

The branch, master has been updated
       via  4c6d802e592b3762a149c343bc5722e065e57841 (commit)
      from  6a631e86cfc2ddd979f9dc4b4da01133d9d3610f (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=4c6d802e592b3762a149c343bc5722e065e57841

commit 4c6d802e592b3762a149c343bc5722e065e57841
Author: H.J. Lu <hjl.tools@gmail.com>
Date:   Wed Mar 26 12:18:59 2014 -0700

    Scan all input files for symbol reference warning
    
    This patch scans all input files for symbol reference warning if the
    symbol reference doesn't exist in the current input file.
    
    ld/
    
    	PR ld/16756
    	* ldmain.c (symbol_warning): New function.
    	(warning_callback): Use it.  Scan all input files for a reference
    	to SYMBOL.
    
    ld/testsuite/
    
    	PR ld/16756
    	* ld-plugin/lto.exp: Expect filename and line number for PR
    	ld/12760 test.

-----------------------------------------------------------------------

Summary of changes:
 ld/ChangeLog                   |    7 ++++
 ld/ldmain.c                    |   43 ++++++++++++++++----------
 ld/testsuite/ChangeLog         |   64 ++++++++++++++++++++++------------------
 ld/testsuite/ld-plugin/lto.exp |    4 +-
 4 files changed, 70 insertions(+), 48 deletions(-)