mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2024-12-15 04:31:49 +08:00
Set interpreter in x86 create_dynamic_sections
Set interpreter in x86 create_dynamic_sections to make this information available to x86 check_relocs. * elf32-i386.c (elf_i386_size_dynamic_sections): Move interp setting to ... (elf_i386_create_dynamic_sections): Here. * elf64-x86-64.c (elf_x86_64_size_dynamic_sections): Move interp setting to ... (elf_x86_64_create_dynamic_sections): Here.
This commit is contained in:
parent
e62b9723fd
commit
493f652c95
@ -1,3 +1,12 @@
|
||||
2016-04-29 H.J. Lu <hongjiu.lu@intel.com>
|
||||
|
||||
* elf32-i386.c (elf_i386_size_dynamic_sections): Move interp
|
||||
setting to ...
|
||||
(elf_i386_create_dynamic_sections): Here.
|
||||
* elf64-x86-64.c (elf_x86_64_size_dynamic_sections): Move
|
||||
interp setting to ...
|
||||
(elf_x86_64_create_dynamic_sections): Here.
|
||||
|
||||
2016-04-29 H.J. Lu <hongjiu.lu@intel.com>
|
||||
|
||||
* elf32-i386.c (UNDEFINED_WEAK_RESOLVED_TO_ZERO): Take GOT_RELOC
|
||||
|
@ -1066,6 +1066,17 @@ elf_i386_create_dynamic_sections (bfd *dynobj, struct bfd_link_info *info)
|
||||
if (htab == NULL)
|
||||
return FALSE;
|
||||
|
||||
/* Set the contents of the .interp section to the interpreter. */
|
||||
if (bfd_link_executable (info) && !info->nointerp)
|
||||
{
|
||||
asection *s = bfd_get_linker_section (dynobj, ".interp");
|
||||
if (s == NULL)
|
||||
abort ();
|
||||
s->size = sizeof ELF_DYNAMIC_INTERPRETER;
|
||||
s->contents = (unsigned char *) ELF_DYNAMIC_INTERPRETER;
|
||||
htab->interp = s;
|
||||
}
|
||||
|
||||
htab->sdynbss = bfd_get_linker_section (dynobj, ".dynbss");
|
||||
if (!htab->sdynbss)
|
||||
abort ();
|
||||
@ -3089,20 +3100,6 @@ elf_i386_size_dynamic_sections (bfd *output_bfd, struct bfd_link_info *info)
|
||||
if (dynobj == NULL)
|
||||
abort ();
|
||||
|
||||
if (htab->elf.dynamic_sections_created)
|
||||
{
|
||||
/* Set the contents of the .interp section to the interpreter. */
|
||||
if (bfd_link_executable (info) && !info->nointerp)
|
||||
{
|
||||
s = bfd_get_linker_section (dynobj, ".interp");
|
||||
if (s == NULL)
|
||||
abort ();
|
||||
s->size = sizeof ELF_DYNAMIC_INTERPRETER;
|
||||
s->contents = (unsigned char *) ELF_DYNAMIC_INTERPRETER;
|
||||
htab->interp = s;
|
||||
}
|
||||
}
|
||||
|
||||
/* Set up .got offsets for local syms, and space for local dynamic
|
||||
relocs. */
|
||||
for (ibfd = info->input_bfds; ibfd != NULL; ibfd = ibfd->link.next)
|
||||
|
@ -1109,6 +1109,17 @@ elf_x86_64_create_dynamic_sections (bfd *dynobj,
|
||||
if (htab == NULL)
|
||||
return FALSE;
|
||||
|
||||
/* Set the contents of the .interp section to the interpreter. */
|
||||
if (bfd_link_executable (info) && !info->nointerp)
|
||||
{
|
||||
asection *s = bfd_get_linker_section (dynobj, ".interp");
|
||||
if (s == NULL)
|
||||
abort ();
|
||||
s->size = htab->dynamic_interpreter_size;
|
||||
s->contents = (unsigned char *) htab->dynamic_interpreter;
|
||||
htab->interp = s;
|
||||
}
|
||||
|
||||
htab->sdynbss = bfd_get_linker_section (dynobj, ".dynbss");
|
||||
if (!htab->sdynbss)
|
||||
abort ();
|
||||
@ -3446,20 +3457,6 @@ elf_x86_64_size_dynamic_sections (bfd *output_bfd,
|
||||
if (dynobj == NULL)
|
||||
abort ();
|
||||
|
||||
if (htab->elf.dynamic_sections_created)
|
||||
{
|
||||
/* Set the contents of the .interp section to the interpreter. */
|
||||
if (bfd_link_executable (info) && !info->nointerp)
|
||||
{
|
||||
s = bfd_get_linker_section (dynobj, ".interp");
|
||||
if (s == NULL)
|
||||
abort ();
|
||||
s->size = htab->dynamic_interpreter_size;
|
||||
s->contents = (unsigned char *) htab->dynamic_interpreter;
|
||||
htab->interp = s;
|
||||
}
|
||||
}
|
||||
|
||||
/* Set up .got offsets for local syms, and space for local dynamic
|
||||
relocs. */
|
||||
for (ibfd = info->input_bfds; ibfd != NULL; ibfd = ibfd->link.next)
|
||||
|
Loading…
Reference in New Issue
Block a user