Change ld "notice" interface for better handling of indirect symbols

Kyle McMartin kmcmarti@redhat.com
Wed Aug 27 14:02:00 GMT 2014


On Tue, Aug 12, 2014 at 10:09:11PM +0930, Alan Modra wrote:
> The main aim of this change was to have non_ir_ref set correctly on
> new indirect symbols.  I could have added a "copy" param to the "notice"
> function, so that indirect symbols could be created in plugin_notice,
> but it seemed cleaner to create indirect syms earlier and pass them
> rather than "string" to "notice".
> 

Happily, this seems to resolve an issue building with LTO and ld.bfd...
We had a bug report where building systemd on aarch64 and s390 were
failing with multiply defined symbols (everyone else has gold ported,
which was, for some as yet undebugged by me reason, didn't do this.)

https://bugzilla.redhat.com/show_bug.cgi?id=1133960

I tried to reduce your patch into something a little more friendly for
2.24 stable, but ran out of time to commit and just slurped it entirely
back into the Fedora binutils tree.

Anyway, thanks!

regards, Kyle

> 
> include/
> 	* bfdlink.h (struct bfd_link_callbacks <notice>): Remove "string"
> 	param, add "inh".
> bfd/
> 	* coff-aux.c (coff_m68k_aux_link_add_one_symbol): Only call "notice"
> 	here when not calling the generic add_symbol function.  Formatting.
> 	Correct handling of indirect symbols.  Update notice call.
> 	* elflink.c (_bfd_elf_notice_as_needed): Update notice call.
> 	* linker.c (_bfd_generic_link_add_one_symbol): Create indirect
> 	symbols early.  Update notice call.  Add comments regarding weak
> 	symbols vs. indirect.
> ld/
> 	* ldmain.c (notice): Update args.
> 	* plugin.c (plugin_notice): Likewise.  Follow warning sym link.
> 	Handle new indirect symbol.
> 



More information about the Binutils mailing list