lto/96385 - avoid unused global UNDEFs in debug objects
authorRichard Biener <rguenther@suse.de>
Mon, 3 Aug 2020 13:05:37 +0000 (15:05 +0200)
committerRichard Biener <rguenther@suse.de>
Mon, 3 Aug 2020 13:09:20 +0000 (15:09 +0200)
Unused global UNDEFs can have side-effects in some circumstances so
the following patch avoids them by treating them the same as other
to be discarded DEFs - make them local.

2020-08-03  Richard Biener  <rguenther@suse.de>

PR lto/96385
libiberty/
* simple-object-elf.c
(simple_object_elf_copy_lto_debug_sections): Localize global
UNDEFs and reuse the prevailing name.

libiberty/simple-object-elf.c

index c62d5bba551c099e9f33c3a0b33dd4612952411c..7c9d492f6a42d32f921f65f7dac20139b4283d31 100644 (file)
@@ -1467,6 +1467,11 @@ simple_object_elf_copy_lto_debug_sections (simple_object_read *sobj,
                       && st_shndx < shnum
                       && pfnret[st_shndx - 1] == -1)
                discard = 1;
+             /* We also need to remove global UNDEFs which can
+                cause link fails later.  */
+             else if (st_shndx == SHN_UNDEF
+                      && ELF_ST_BIND (*st_info) == STB_GLOBAL)
+               discard = 1;
 
              if (discard)
                {