https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81968
--- Comment #40 from ro at CeBiTec dot Uni-Bielefeld.DE <ro at CeBiTec dot Uni-Bielefeld.DE> --- > --- Comment #39 from Richard Biener <rguenth at gcc dot gnu.org> --- [...] >> * 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 > > Just guessing that it maybe doesn't like NOTYPE on local defs? I would I don't think so. With your patch, the affected symbols are SECT instead of LOCL, otherwise no difference. > expect that before the partial link step that section 9 would exist. It does indeed as I mentioned (cp_lto_pr42987_0.o is the input object corresponding to ccyttLYbdebugobjtem). > Does > > Index: libiberty/simple-object-elf.c > =================================================================== > --- libiberty/simple-object-elf.c (revision 256070) > +++ libiberty/simple-object-elf.c (working copy) > @@ -1400,9 +1400,9 @@ simple_object_elf_copy_lto_debug_section > gnu_lto - strings); > ELF_SET_FIELD (type_functions, ei_class, Sym, > ent, st_shndx, Elf_Half, SHN_UNDEF); > + *st_info = ELF_ST_INFO (bind, STT_NOTYPE); > } > *st_other = other; > - *st_info = ELF_ST_INFO (bind, STT_NOTYPE); > ELF_SET_FIELD (type_functions, ei_class, Sym, > ent, st_value, Elf_Addr, 0); > ELF_SET_FIELD (type_functions, ei_class, Sym, > > fix these errors? Unfortunately not: it's really the section index pointing to the non-existing (i.e. eliminated) .gnu.debuglto_.debug_info section. Rainer