From 56d4289c6c259fefb1bd1b30fffb207e48e3dcd5 Mon Sep 17 00:00:00 2001 From: "H.J. Lu" Date: Fri, 13 Aug 2010 20:50:27 +0000 Subject: Check if .got.plt section is discarded before using it. bfd/ 2010-08-13 H.J. Lu PR ld/11913 * elf32-i386.c (elf_i386_finish_dynamic_sections): Check if .got.plt section is discarded. * elf64-x86-64.c (elf64_x86_64_finish_dynamic_sections): Likewise. ld/testsuite/ 2010-08-13 H.J. Lu PR ld/11913 * ld-i386/discarded1.d: New. * ld-i386/discarded1.s: Likewise. * ld-i386/discarded1.t: Likewise. * ld-x86-64/discarded1.d: Likewise. * ld-x86-64/discarded1.s: Likewise. * ld-x86-64/discarded1.t: Likewise. * ld-i386/i386.exp: Run discarded1. * ld-x86-64/x86-64.exp: Likewise. --- ld/testsuite/ChangeLog | 13 +++++++++++++ ld/testsuite/ld-i386/discarded1.d | 3 +++ ld/testsuite/ld-i386/discarded1.s | 13 +++++++++++++ ld/testsuite/ld-i386/discarded1.t | 7 +++++++ ld/testsuite/ld-i386/i386.exp | 1 + ld/testsuite/ld-x86-64/discarded1.d | 3 +++ ld/testsuite/ld-x86-64/discarded1.s | 13 +++++++++++++ ld/testsuite/ld-x86-64/discarded1.t | 7 +++++++ ld/testsuite/ld-x86-64/x86-64.exp | 1 + 9 files changed, 61 insertions(+) create mode 100644 ld/testsuite/ld-i386/discarded1.d create mode 100644 ld/testsuite/ld-i386/discarded1.s create mode 100644 ld/testsuite/ld-i386/discarded1.t create mode 100644 ld/testsuite/ld-x86-64/discarded1.d create mode 100644 ld/testsuite/ld-x86-64/discarded1.s create mode 100644 ld/testsuite/ld-x86-64/discarded1.t (limited to 'ld') diff --git a/ld/testsuite/ChangeLog b/ld/testsuite/ChangeLog index b5250a5..c15a44e 100644 --- a/ld/testsuite/ChangeLog +++ b/ld/testsuite/ChangeLog @@ -1,3 +1,16 @@ +2010-08-13 H.J. Lu + + PR ld/11913 + * ld-i386/discarded1.d: New. + * ld-i386/discarded1.s: Likewise. + * ld-i386/discarded1.t: Likewise. + * ld-x86-64/discarded1.d: Likewise. + * ld-x86-64/discarded1.s: Likewise. + * ld-x86-64/discarded1.t: Likewise. + + * ld-i386/i386.exp: Run discarded1. + * ld-x86-64/x86-64.exp: Likewise. + 2010-08-09 Catherine Moore * ld-mips-elf/mode-change-error-1.d: New. diff --git a/ld/testsuite/ld-i386/discarded1.d b/ld/testsuite/ld-i386/discarded1.d new file mode 100644 index 0000000..8106db3 --- /dev/null +++ b/ld/testsuite/ld-i386/discarded1.d @@ -0,0 +1,3 @@ +#as: --32 +#ld: -melf_i386 -T discarded1.t +#error: .*discarded output section: `.got.plt' diff --git a/ld/testsuite/ld-i386/discarded1.s b/ld/testsuite/ld-i386/discarded1.s new file mode 100644 index 0000000..9b20c87 --- /dev/null +++ b/ld/testsuite/ld-i386/discarded1.s @@ -0,0 +1,13 @@ + .text +.globl _start + .type _start, @function +_start: + movl x@GOT(%ecx), %eax + .size _start, .-_start +.globl x + .data + .align 4 + .type x, @object + .size x, 4 +x: + .long 2 diff --git a/ld/testsuite/ld-i386/discarded1.t b/ld/testsuite/ld-i386/discarded1.t new file mode 100644 index 0000000..a4d617f --- /dev/null +++ b/ld/testsuite/ld-i386/discarded1.t @@ -0,0 +1,7 @@ +ENTRY(_start) +SECTIONS +{ + .text : {*(.text)} + .data : {*(.data)} + /DISCARD/ : {*(*)} +} diff --git a/ld/testsuite/ld-i386/i386.exp b/ld/testsuite/ld-i386/i386.exp index 850713a..86ba9e4 100644 --- a/ld/testsuite/ld-i386/i386.exp +++ b/ld/testsuite/ld-i386/i386.exp @@ -190,6 +190,7 @@ run_dump_test "protected2" run_dump_test "protected3" run_dump_test "tlspie1" run_dump_test "nogot1" +run_dump_test "discarded1" if { !([istarget "i?86-*-linux*"] || [istarget "x86_64-*-linux*"]) } { diff --git a/ld/testsuite/ld-x86-64/discarded1.d b/ld/testsuite/ld-x86-64/discarded1.d new file mode 100644 index 0000000..c892595 --- /dev/null +++ b/ld/testsuite/ld-x86-64/discarded1.d @@ -0,0 +1,3 @@ +#as: --64 +#ld: -melf_x86_64 -T discarded1.t +#error: .*discarded output section: `.got.plt' diff --git a/ld/testsuite/ld-x86-64/discarded1.s b/ld/testsuite/ld-x86-64/discarded1.s new file mode 100644 index 0000000..c638ed9 --- /dev/null +++ b/ld/testsuite/ld-x86-64/discarded1.s @@ -0,0 +1,13 @@ + .text +.globl _start + .type _start, @function +_start: + movq x@GOTPCREL(%rip), %rax + .size _start, .-_start +.globl x + .data + .align 4 + .type x, @object + .size x, 4 +x: + .long 2 diff --git a/ld/testsuite/ld-x86-64/discarded1.t b/ld/testsuite/ld-x86-64/discarded1.t new file mode 100644 index 0000000..a4d617f --- /dev/null +++ b/ld/testsuite/ld-x86-64/discarded1.t @@ -0,0 +1,7 @@ +ENTRY(_start) +SECTIONS +{ + .text : {*(.text)} + .data : {*(.data)} + /DISCARD/ : {*(*)} +} diff --git a/ld/testsuite/ld-x86-64/x86-64.exp b/ld/testsuite/ld-x86-64/x86-64.exp index d7ca525..ed5d8dc 100644 --- a/ld/testsuite/ld-x86-64/x86-64.exp +++ b/ld/testsuite/ld-x86-64/x86-64.exp @@ -99,6 +99,7 @@ run_dump_test "tlsle1" run_dump_test "tlspie1" run_dump_test "unique1" run_dump_test "nogot1" +run_dump_test "discarded1" if { ![istarget "x86_64-*-linux*"] } { return -- cgit v1.1