[Bug lto/81968] [8 regression] early lto debug objects make Solaris ld SEGV
ro at CeBiTec dot Uni-Bielefeld.DE
gcc-bugzilla@gcc.gnu.org
Mon Jan 1 10:17:00 GMT 2018
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81968
--- Comment #38 from ro at CeBiTec dot Uni-Bielefeld.DE <ro at CeBiTec dot Uni-Bielefeld.DE> ---
>> --- Comment #33 from rguenther at suse dot de <rguenther at suse dot de> ---
> [...]
>>>* Invalid sh_info:
>>>
>>>FAIL: g++.dg/lto/pr42987 cp_lto_pr42987_0.o-cp_lto_pr42987_1.o link,
>>>-flto
>>>-flto-partition=none -g
>>>FAIL: g++.dg/lto/pr42987 cp_lto_pr42987_0.o-cp_lto_pr42987_1.o link,
>>>-flto -g
>>>
>>>ld: fatal: file /var/tmp//ccXwdzGddebugobjtem: section
>>>[6].rel.gnu.debuglto_.debug_info: has invalid sh_info: 9
>>>ld: fatal: file /var/tmp//ccuVJOVbdebugobjtem: section
>>>[6].rel.gnu.debuglto_.debug_info: has invalid sh_info: 8
>>>
>>> seen during the ld -r -o ccrIZb_ddebugobj ccSerOuddebugobjtem
>>> cc5b3Arcdebugobjtem step:
>>>
>>>ccSerOuddebugobjtem: .rel.gnu.debuglto_.debug_info: sh_info: 9: does
>>>not point
>>>to a valid section
>>>
>>>Section Header[6]: sh_name: .rel.gnu.debuglto_.debug_info
>>> sh_addr: 0 sh_flags: 0
>>> sh_size: 0x8 sh_type: [ SHT_REL ]
>>> sh_offset: 0x11c8 sh_entsize: 0x8 (1 entry)
>>> sh_link: 5 sh_info: 9
>>> sh_addralign: 0x4
>>>
>>> But there's no section 9 any longer.
>>
>> I fixed that in the posted patch for the hpux issue(s).
>
> Good: I'll try to merge the two after the christmas holidays.
I've used the attached patch, with mixed results:
* No changes on SPARC (which wasn't affected by this issue in the first
place).
* On x86, of the previous 32 ld: fatal: has invalid sh_info errors, 16
are now gone.
However, I've many (1284 in g++.log) instances of
ld: warning: symbol .symtab[2] has invalid section index; ignored:
(file /var/tmp//ccyttLYbdebugobjtem value=9);
Those links end with
ld: fatal: file /var/tmp//ccyttLYbdebugobjtem: section
[6].rel.gnu.debuglto_.debug_info: has invalid sh_info: 9
and ld SEGVing, again in the ld -r step.
The warnings are from symtab entries like
Symbol Table Section: .symtab
index value size type bind oth ver shndx name
[0] 0 0 NOTY LOCL D 0 UNDEF
[1] 0 0 FILE LOCL D 0 ABS pr42987_0.C
[2] 0 0 NOTY LOCL D 0 9
and section 9 doesn't exist, where the input object (cp_lto_pr42987_0.o) has
Section Header[9]: sh_name: .gnu.debuglto_.debug_info
sh_addr: 0 sh_flags: 0
sh_size: 0x3d4 sh_type: [ SHT_PROGBITS ]
sh_offset: 0x7fb sh_entsize: 0
sh_link: 0 sh_info: 0
sh_addralign: 0x1
Symbol Table Section: .symtab
index value size type bind oth ver shndx / name
[0] 0 0 NOTY LOCL D 0 UNDEF
[1] 0 0 FILE LOCL D 0 ABS pr42987_0.C
[2] 0 0 SECT LOCL D 0 .text
[3] 0 0 SECT LOCL D 0 .gnu.debuglto_.debug_info
Rainer
More information about the Gcc-bugs
mailing list