mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2024-11-24 10:35:12 +08:00
Don't allocate .got.plt section if there are no GOT nor PLT entries.
bfd/ 2010-07-13 H.J. Lu <hongjiu.lu@intel.com> PR ld/11812 * elf32-i386.c (elf_i386_size_dynamic_sections): Don't allocate .got.plt section if there are no GOT nor PLT entries. * elf64-x86-64.c (elf64_x86_64_size_dynamic_sections): Likewise. ld/testsuite/ 2010-07-13 H.J. Lu <hongjiu.lu@intel.com> PR ld/11812 * ld-elf/exclude3b.d: Don't run on ia64-*-*. Replace .got with .dynamic. * ld-elf/exclude3d.d: New. * ld-i386/nogot1.d: Likewise. * ld-i386/nogot1.s: Likewise. * ld-x86-64/nogot1.d: Likewise. * ld-x86-64/nogot1.s: Likewise. * ld-i386/i386.exp: Run nogot1. * ld-x86-64/x86-64.exp: Likewise.
This commit is contained in:
parent
6ae10a3087
commit
a7b16ceb92
@ -1,3 +1,11 @@
|
||||
2010-07-13 H.J. Lu <hongjiu.lu@intel.com>
|
||||
|
||||
PR ld/11812
|
||||
* elf32-i386.c (elf_i386_size_dynamic_sections): Don't
|
||||
allocate .got.plt section if there are no GOT nor PLT
|
||||
entries.
|
||||
* elf64-x86-64.c (elf64_x86_64_size_dynamic_sections): Likewise.
|
||||
|
||||
2010-07-13 H.J. Lu <hongjiu.lu@intel.com>
|
||||
|
||||
PR ld/11791
|
||||
|
@ -2555,6 +2555,23 @@ elf_i386_size_dynamic_sections (bfd *output_bfd ATTRIBUTE_UNUSED,
|
||||
if (htab->elf.srelplt)
|
||||
htab->sgotplt_jump_table_size = htab->next_tls_desc_index * 4;
|
||||
|
||||
if (htab->elf.sgotplt)
|
||||
{
|
||||
/* Don't allocate .got.plt section if there are no GOT nor PLT
|
||||
entries. */
|
||||
if ((htab->elf.sgotplt->size
|
||||
== get_elf_backend_data (output_bfd)->got_header_size)
|
||||
&& (htab->elf.splt == NULL
|
||||
|| htab->elf.splt->size == 0)
|
||||
&& (htab->elf.sgot == NULL
|
||||
|| htab->elf.sgot->size == 0)
|
||||
&& (htab->elf.iplt == NULL
|
||||
|| htab->elf.iplt->size == 0)
|
||||
&& (htab->elf.igotplt == NULL
|
||||
|| htab->elf.igotplt->size == 0))
|
||||
htab->elf.sgotplt->size = 0;
|
||||
}
|
||||
|
||||
/* We now have determined the sizes of the various dynamic sections.
|
||||
Allocate memory for them. */
|
||||
relocs = FALSE;
|
||||
|
@ -2374,6 +2374,23 @@ elf64_x86_64_size_dynamic_sections (bfd *output_bfd ATTRIBUTE_UNUSED,
|
||||
}
|
||||
}
|
||||
|
||||
if (htab->elf.sgotplt)
|
||||
{
|
||||
/* Don't allocate .got.plt section if there are no GOT nor PLT
|
||||
entries. */
|
||||
if ((htab->elf.sgotplt->size
|
||||
== get_elf_backend_data (output_bfd)->got_header_size)
|
||||
&& (htab->elf.splt == NULL
|
||||
|| htab->elf.splt->size == 0)
|
||||
&& (htab->elf.sgot == NULL
|
||||
|| htab->elf.sgot->size == 0)
|
||||
&& (htab->elf.iplt == NULL
|
||||
|| htab->elf.iplt->size == 0)
|
||||
&& (htab->elf.igotplt == NULL
|
||||
|| htab->elf.igotplt->size == 0))
|
||||
htab->elf.sgotplt->size = 0;
|
||||
}
|
||||
|
||||
/* We now have determined the sizes of the various dynamic sections.
|
||||
Allocate memory for them. */
|
||||
relocs = FALSE;
|
||||
|
@ -1,3 +1,18 @@
|
||||
2010-07-13 H.J. Lu <hongjiu.lu@intel.com>
|
||||
|
||||
PR ld/11812
|
||||
* ld-elf/exclude3b.d: Don't run on ia64-*-*. Replace .got with
|
||||
.dynamic.
|
||||
|
||||
* ld-elf/exclude3d.d: New.
|
||||
* ld-i386/nogot1.d: Likewise.
|
||||
* ld-i386/nogot1.s: Likewise.
|
||||
* ld-x86-64/nogot1.d: Likewise.
|
||||
* ld-x86-64/nogot1.s: Likewise.
|
||||
|
||||
* ld-i386/i386.exp: Run nogot1.
|
||||
* ld-x86-64/x86-64.exp: Likewise.
|
||||
|
||||
2010-07-13 H.J. Lu <hongjiu.lu@intel.com>
|
||||
|
||||
* ld-i386/hidden2.d: Don't hard code expected output.
|
||||
|
@ -1,9 +1,9 @@
|
||||
#source: exclude3.s
|
||||
#ld: --shared
|
||||
#readelf: -S --wide
|
||||
#target: x86_64-*-* i?86-*-* ia64-*-*
|
||||
#target: x86_64-*-* i?86-*-*
|
||||
|
||||
#...
|
||||
[ ]*\[.*\][ ]+\.got.*[ ]+PROGBITS.*
|
||||
[ ]*\[.*\][ ]+\.dynamic[ ]+DYNAMIC.*
|
||||
[ ]*\[.*\][ ]+.*STRTAB.*
|
||||
#pass
|
||||
|
9
ld/testsuite/ld-elf/exclude3d.d
Normal file
9
ld/testsuite/ld-elf/exclude3d.d
Normal file
@ -0,0 +1,9 @@
|
||||
#source: exclude3.s
|
||||
#ld: --shared
|
||||
#readelf: -S --wide
|
||||
#target: ia64-*-*
|
||||
|
||||
#...
|
||||
[ ]*\[.*\][ ]+\.got.*[ ]+PROGBITS.*
|
||||
[ ]*\[.*\][ ]+.*STRTAB.*
|
||||
#pass
|
@ -189,3 +189,4 @@ run_dump_test "protected1"
|
||||
run_dump_test "protected2"
|
||||
run_dump_test "protected3"
|
||||
run_dump_test "tlspie1"
|
||||
run_dump_test "nogot1"
|
||||
|
8
ld/testsuite/ld-i386/nogot1.d
Normal file
8
ld/testsuite/ld-i386/nogot1.d
Normal file
@ -0,0 +1,8 @@
|
||||
#ld: --shared -melf_i386
|
||||
#readelf: -S --wide
|
||||
#as: --32
|
||||
|
||||
#...
|
||||
[ ]*\[.*\][ ]+\.dynamic[ ]+DYNAMIC.*
|
||||
[ ]*\[.*\][ ]+.*STRTAB.*
|
||||
#pass
|
10
ld/testsuite/ld-i386/nogot1.s
Normal file
10
ld/testsuite/ld-i386/nogot1.s
Normal file
@ -0,0 +1,10 @@
|
||||
.type bar, @function
|
||||
bar:
|
||||
ret
|
||||
.size bar, .-bar
|
||||
.globl foo
|
||||
.type foo, @function
|
||||
foo:
|
||||
leal bar@GOTOFF(%ecx), %eax
|
||||
ret
|
||||
.size foo, .-foo
|
8
ld/testsuite/ld-x86-64/nogot1.d
Normal file
8
ld/testsuite/ld-x86-64/nogot1.d
Normal file
@ -0,0 +1,8 @@
|
||||
#ld: --shared -melf_x86_64
|
||||
#readelf: -S --wide
|
||||
#as: --64
|
||||
|
||||
#...
|
||||
[ ]*\[.*\][ ]+\.dynamic[ ]+DYNAMIC.*
|
||||
[ ]*\[.*\][ ]+.*STRTAB.*
|
||||
#pass
|
10
ld/testsuite/ld-x86-64/nogot1.s
Normal file
10
ld/testsuite/ld-x86-64/nogot1.s
Normal file
@ -0,0 +1,10 @@
|
||||
.type bar, @function
|
||||
bar:
|
||||
ret
|
||||
.size bar, .-bar
|
||||
.globl foo
|
||||
.type foo, @function
|
||||
foo:
|
||||
leaq bar(%rip), %rax
|
||||
ret
|
||||
.size foo, .-foo
|
@ -98,3 +98,4 @@ run_dump_test "protected3-l1om"
|
||||
run_dump_test "tlsle1"
|
||||
run_dump_test "tlspie1"
|
||||
run_dump_test "unique1"
|
||||
run_dump_test "nogot1"
|
||||
|
Loading…
Reference in New Issue
Block a user