Fix -pie core dump with .rela.opd section.

bfd/ChangeLog
	* elfxx-ia64.c (get_fptr): For fptr_rel, use dynobj not abfd.
	(elfNN_ia64_size_dynamic_sections): When stripping sections, check
	for ia64_info->rel_fptr_sec.
ld/ChangeLog
	* emulparams/elf64_ia64.sh (OTHER_PLT_RELOC_SECTIONS): Include
	.rela.opd if -pie.
This commit is contained in:
Jim Wilson 2003-11-19 01:06:13 +00:00
parent 1c620505b0
commit 55936540a7
4 changed files with 24 additions and 2 deletions

View File

@ -1,3 +1,9 @@
2003-11-18 James E Wilson <wilson@specifixinc.com>
* elfxx-ia64.c (get_fptr): For fptr_rel, use dynobj not abfd.
(elfNN_ia64_size_dynamic_sections): When stripping sections, check
for ia64_info->rel_fptr_sec.
2003-11-18 Alan Modra <amodra@bigpond.net.au>
* elf64-ppc.c (toc_adjusting_stub_needed): Exit early if section

View File

@ -1993,9 +1993,9 @@ get_fptr (abfd, info, ia64_info)
if (info->pie)
{
asection *fptr_rel;
fptr_rel = bfd_make_section(abfd, ".rela.opd");
fptr_rel = bfd_make_section(dynobj, ".rela.opd");
if (fptr_rel == NULL
|| !bfd_set_section_flags (abfd, fptr_rel,
|| !bfd_set_section_flags (dynobj, fptr_rel,
(SEC_ALLOC | SEC_LOAD
| SEC_HAS_CONTENTS
| SEC_IN_MEMORY
@ -2928,6 +2928,15 @@ elfNN_ia64_size_dynamic_sections (output_bfd, info)
if (strip)
ia64_info->fptr_sec = NULL;
}
else if (sec == ia64_info->rel_fptr_sec)
{
if (strip)
ia64_info->rel_fptr_sec = NULL;
else
/* We use the reloc_count field as a counter if we need to
copy relocs into the output file. */
sec->reloc_count = 0;
}
else if (sec == ia64_info->plt_sec)
{
if (strip)

View File

@ -1,3 +1,8 @@
2003-11-18 James E Wilson <wilson@specifixinc.com>
* emulparams/elf64_ia64.sh (OTHER_PLT_RELOC_SECTIONS): Include
.rela.opd if -pie.
2003-11-10 Jonathan Wilson <jonwil@tpgi.com.au>
* scripttempl/pe.sc: Add support for TLS sections.

View File

@ -28,6 +28,8 @@ test -z "$CREATE_PIE" && OTHER_READONLY_SECTIONS="
.opd ${RELOCATING-0} : { *(.opd) }"
test -n "$CREATE_PIE" && OTHER_READWRITE_SECTIONS="
.opd ${RELOCATING-0} : { *(.opd) }"
test -n "$CREATE_PIE" && OTHER_PLT_RELOC_SECTIONS="${OTHER_PLT_RELOC_SECTIONS}
.rela.opd ${RELOCATING-0} : { *(.rela.opd) }"
OTHER_READONLY_SECTIONS="${OTHER_READONLY_SECTIONS}
.IA_64.unwind_info ${RELOCATING-0} : { *(.IA_64.unwind_info${RELOCATING+* .gnu.linkonce.ia64unwi.*}) }
.IA_64.unwind ${RELOCATING-0} : { *(.IA_64.unwind${RELOCATING+* .gnu.linkonce.ia64unw.*}) }"