diff options
author | H.J. Lu <hjl.tools@gmail.com> | 2012-05-22 14:05:21 +0000 |
---|---|---|
committer | H.J. Lu <hjl.tools@gmail.com> | 2012-05-22 14:05:21 +0000 |
commit | 2fe0fd0638dafee893dcb791036a49e5a6988954 (patch) | |
tree | a91f82e259c5ac31b36e72f220dfcc6689adcabf /bfd/elf64-x86-64.c | |
parent | 23512c015ea3be9106e07b67133eaa2425dbcefd (diff) | |
download | gdb-2fe0fd0638dafee893dcb791036a49e5a6988954.zip gdb-2fe0fd0638dafee893dcb791036a49e5a6988954.tar.gz gdb-2fe0fd0638dafee893dcb791036a49e5a6988954.tar.bz2 |
Always create PLT eh_frame section for i386/x86-64
bfd/
2012-05-22 H.J. Lu <hongjiu.lu@intel.com>
PR ld/14105
* elf32-i386.c (elf_i386_create_dynamic_sections): Always
create PLT eh_frame section with SEC_LINKER_CREATED.
* elf64-x86-64.c (elf_x86_64_create_dynamic_sections): Likewise.
ld/testsuite/
2012-05-20 H.J. Lu <hongjiu.lu@intel.com>
PR ld/14105
* ld-elf/eh4.d: Add PLT eh_frame.
* ld-i386/i386.exp: Run pr12570a and pr12570b.
* ld-x86-64/x86-64.exp: Likewise.
* ld-i386/pr12570a.d: New file.
* ld-i386/pr12570a.s: Likewise.
* ld-i386/pr12570b.s: Likewise.
* ld-i386/pr12570b.s: Likewise.
* ld-x86-64/pr12570a.d: Likewise.
* ld-x86-64/pr12570a.s: Likewise.
* ld-x86-64/pr12570b.d: Likewise.
* ld-x86-64/pr12570b.s: Likewise.
Diffstat (limited to 'bfd/elf64-x86-64.c')
-rw-r--r-- | bfd/elf64-x86-64.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/bfd/elf64-x86-64.c b/bfd/elf64-x86-64.c index 3353560..1f490d4 100644 --- a/bfd/elf64-x86-64.c +++ b/bfd/elf64-x86-64.c @@ -979,15 +979,17 @@ elf_x86_64_create_dynamic_sections (bfd *dynobj, abort (); if (!info->no_ld_generated_unwind_info - && bfd_get_section_by_name (dynobj, ".eh_frame") == NULL + && htab->plt_eh_frame == NULL && htab->elf.splt != NULL) { const struct elf_x86_64_backend_data *const abed = get_elf_x86_64_backend_data (dynobj); flagword flags = get_elf_backend_data (dynobj)->dynamic_sec_flags; htab->plt_eh_frame - = bfd_make_section_with_flags (dynobj, ".eh_frame", - flags | SEC_READONLY); + = bfd_make_section_anyway_with_flags (dynobj, ".eh_frame", + (flags + | SEC_LINKER_CREATED + | SEC_READONLY)); if (htab->plt_eh_frame == NULL || !bfd_set_section_alignment (dynobj, htab->plt_eh_frame, 3)) return FALSE; |