diff options
author | Richard Biener <rguenther@suse.de> | 2017-08-28 13:14:28 +0000 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2017-08-28 13:14:28 +0000 |
commit | 1963f60adb1ea775220cc92e0c644bbb59ad3191 (patch) | |
tree | 468a5aa424ddfc53e2b966ef4d156d2317cb306d /libiberty | |
parent | 950904f8b72516e48a3edbec13c6d3fdcff82312 (diff) | |
download | gcc-1963f60adb1ea775220cc92e0c644bbb59ad3191.zip gcc-1963f60adb1ea775220cc92e0c644bbb59ad3191.tar.gz gcc-1963f60adb1ea775220cc92e0c644bbb59ad3191.tar.bz2 |
re PR lto/81968 (early lto debug objects make Solaris ld SEGV)
2017-08-28 Richard Biener <rguenther@suse.de>
PR lto/81968
* simple-object-elf.c (simple_object_elf_copy_lto_debug_section):
Adjust field with for sh_type write, set SHF_EXCLUDE only for
removed sections.
From-SVN: r251384
Diffstat (limited to 'libiberty')
-rw-r--r-- | libiberty/ChangeLog | 7 | ||||
-rw-r--r-- | libiberty/simple-object-elf.c | 4 |
2 files changed, 9 insertions, 2 deletions
diff --git a/libiberty/ChangeLog b/libiberty/ChangeLog index f5c3069..58d2816 100644 --- a/libiberty/ChangeLog +++ b/libiberty/ChangeLog @@ -1,3 +1,10 @@ +2017-08-28 Richard Biener <rguenther@suse.de> + + PR lto/81968 + * simple-object-elf.c (simple_object_elf_copy_lto_debug_section): + Adjust field with for sh_type write, set SHF_EXCLUDE only for + removed sections. + 2017-08-22 Richard Biener <rguenther@suse.de> PR lto/81925 diff --git a/libiberty/simple-object-elf.c b/libiberty/simple-object-elf.c index 10bf5e7..ee7a38c 100644 --- a/libiberty/simple-object-elf.c +++ b/libiberty/simple-object-elf.c @@ -1382,7 +1382,7 @@ simple_object_elf_copy_lto_debug_sections (simple_object_read *sobj, unused. That allows the link editor to remove it in a partial link. */ ELF_SET_FIELD (type_functions, ei_class, Shdr, - shdr, sh_type, Elf_Addr, SHT_NULL); + shdr, sh_type, Elf_Word, SHT_NULL); } flags = ELF_FETCH_FIELD (type_functions, ei_class, Shdr, @@ -1390,7 +1390,7 @@ simple_object_elf_copy_lto_debug_sections (simple_object_read *sobj, if (ret == 0) flags &= ~SHF_EXCLUDE; else if (ret == -1) - flags |= SHF_EXCLUDE; + flags = SHF_EXCLUDE; ELF_SET_FIELD (type_functions, ei_class, Shdr, shdr, sh_flags, Elf_Addr, flags); } |