Commit f8049c44 by Jakub Jelinek Committed by Jakub Jelinek

re PR lto/82598 (lto debugobj lacks .note.GNU-stack)

	PR lto/82598
	* simple-object.c (handle_lto_debug_sections): Copy over also
	.note.GNU-stack section with unchanged name.
	* simple-object-elf.c (SHF_EXECINSTR): Define.
	(simple_object_elf_copy_lto_debug_section): Drop SHF_EXECINSTR bit
	on .note.GNU-stack section.

From-SVN: r253851
parent ac2bb522
2017-10-18 Jakub Jelinek <jakub@redhat.com>
PR lto/82598
* simple-object.c (handle_lto_debug_sections): Copy over also
.note.GNU-stack section with unchanged name.
* simple-object-elf.c (SHF_EXECINSTR): Define.
(simple_object_elf_copy_lto_debug_section): Drop SHF_EXECINSTR bit
on .note.GNU-stack section.
2017-09-25 Nathan Sidwell <nathan@acm.org>
PR demangler/82195
......
......@@ -196,6 +196,7 @@ typedef struct {
/* Values for sh_flags field. */
#define SHF_EXECINSTR 0x00000004 /* Executable section. */
#define SHF_EXCLUDE 0x80000000 /* Link editor is to exclude this
section from executable and
shared library that it builds
......@@ -1403,7 +1404,14 @@ simple_object_elf_copy_lto_debug_sections (simple_object_read *sobj,
flags = ELF_FETCH_FIELD (type_functions, ei_class, Shdr,
shdr, sh_flags, Elf_Addr);
if (ret == 0)
flags &= ~SHF_EXCLUDE;
{
/* The debugobj doesn't contain any code, thus no trampolines.
Even when the original object needs trampolines, debugobj
doesn't. */
if (strcmp (name, ".note.GNU-stack") == 0)
flags &= ~SHF_EXECINSTR;
flags &= ~SHF_EXCLUDE;
}
else if (ret == -1)
flags = SHF_EXCLUDE;
ELF_SET_FIELD (type_functions, ei_class, Shdr,
......
......@@ -273,6 +273,9 @@ handle_lto_debug_sections (const char **name)
*name = *name + sizeof (".gnu.lto_") - 1;
return 1;
}
/* Copy over .note.GNU-stack section under the same name if present. */
else if (strcmp (*name, ".note.GNU-stack") == 0)
return 1;
return 0;
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment