[Bug lto/81968] [8 regression] early lto debug objects make Solaris ld SEGV
rguenther at suse dot de
gcc-bugzilla@gcc.gnu.org
Thu Apr 12 09:23:00 GMT 2018
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81968
--- Comment #79 from rguenther at suse dot de <rguenther at suse dot de> ---
On Thu, 12 Apr 2018, ro at CeBiTec dot Uni-Bielefeld.DE wrote:
> https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81968
>
> --- Comment #77 from ro at CeBiTec dot Uni-Bielefeld.DE <ro at CeBiTec dot Uni-Bielefeld.DE> ---
> > --- Comment #62 from Richard Biener <rguenth at gcc dot gnu.org> ---
> > Waiting for Solaris engineer input... (or a machine to be able to debug this
> > directly - is there one on the CF?).
>
> We're finally getting to the bottom of this:
>
> * The original analysis of the objects rewritten by lto-wrapper and
> passed to ld -r (which cause the relocation error) pointed out that
> they were in violation of the ELF gABI access rules for COMDAT
> sections:
>
> https://docs.oracle.com/cd/E53394_01/html/E54813/chapter7-26.html#scrolltoc
>
> (the first bullet point).
>
> * However, while checking the input objects passed to lto-wrapper, I
> determined they have the same problem, but don't trigger the error.
>
> * It turned out that this happened because Solaris ld has heuristics to
> implicitly relax that check for gcc objects, as can be done explicitly
> with -z relax=comdat/-z relaxreloc. It checks for a .comment section
> containing the string "GCC: (GNU)". However, unlike the input
> objects, that section isn't copied by simple_object_copy_lto_debug_sections.
>
> Since trying to fix the initial issue is out of scope for GCC 8, there
> are two possible fixes:
>
> * Just copy the .comment section as well. Turns out to be trivial, and
> the attached patch does just that.
Sounds good - I suppose identical .comment sections are merged in the
final link.
More information about the Gcc-bugs
mailing list