This is a fix for PR ld/16744 which showed that an object file linked with -r and -z [no]execstack
would not honour the [no]execstack. Fully linked binaries use a special segment to indicate the state of the stack, but relocatable object files only have sections, and .note.GNU-stack was not being created. * emultempl/elf32.em (_after_open): Create a .note.GNU-stack section when performing a relocatable link with -z [no]execstack specified.
This commit is contained in:
parent
72c56015dd
commit
76f0cad6f4
|
@ -1,3 +1,10 @@
|
||||||
|
2014-03-31 Nick Clifton <nickc@redhat.com>
|
||||||
|
|
||||||
|
PR ld/16744
|
||||||
|
* emultempl/elf32.em (_after_open): Create a .note.GNU-stack
|
||||||
|
section when performing a relocatable link with -z [no]execstack
|
||||||
|
specified.
|
||||||
|
|
||||||
2014-03-27 H.J. Lu <hongjiu.lu@intel.com>
|
2014-03-27 H.J. Lu <hongjiu.lu@intel.com>
|
||||||
|
|
||||||
PR ld/16756
|
PR ld/16756
|
||||||
|
|
|
@ -1112,7 +1112,20 @@ gld${EMULATION_NAME}_after_open (void)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (link_info.relocatable)
|
if (link_info.relocatable)
|
||||||
|
{
|
||||||
|
if (link_info.execstack == ! link_info.noexecstack)
|
||||||
|
/* PR ld/16744: If "-z [no]execstack" has been specified on the
|
||||||
|
command line and we are perfoming a relocatable link then no
|
||||||
|
PT_GNU_STACK segment will be created and so the
|
||||||
|
linkinfo.[no]execstack values set in _handle_option() will have no
|
||||||
|
effect. Instead we create a .note.GNU-stack section in much the
|
||||||
|
same way as the assembler does with its --[no]execstack option. */
|
||||||
|
(void) bfd_make_section_with_flags (link_info.input_bfds,
|
||||||
|
".note.GNU-stack",
|
||||||
|
SEC_READONLY | (link_info.execstack ? SEC_CODE : 0));
|
||||||
|
|
||||||
return;
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (link_info.eh_frame_hdr
|
if (link_info.eh_frame_hdr
|
||||||
&& !link_info.traditional_format)
|
&& !link_info.traditional_format)
|
||||||
|
|
Loading…
Reference in New Issue