diff options
author | H.J. Lu <hjl.tools@gmail.com> | 2011-09-29 00:13:14 +0000 |
---|---|---|
committer | H.J. Lu <hjl.tools@gmail.com> | 2011-09-29 00:13:14 +0000 |
commit | 54e8959c602eddaf8e7c895445610b6f40c92f56 (patch) | |
tree | 93561eb42adb872d28a797f52e2a68dc25db3239 /ld | |
parent | d8250e5afa23fe5c4e22f156a4a7cd8e1b490306 (diff) | |
download | gdb-54e8959c602eddaf8e7c895445610b6f40c92f56.zip gdb-54e8959c602eddaf8e7c895445610b6f40c92f56.tar.gz gdb-54e8959c602eddaf8e7c895445610b6f40c92f56.tar.bz2 |
Fix --gc-sections failure with symbol versioning.
bfd/
2011-09-28 H.J. Lu <hongjiu.lu@intel.com>
PR ld/13195
* elflink.c (_bfd_elf_merge_symbol): Don't set dynamic_def when
clearing def_dynamic.
(elf_link_add_object_symbols): Likewise. Set dynamic_def when
setting def_dynamic.
(bfd_elf_gc_mark_dynamic_ref_symbol): Check if a symbol is
versioned.
ld/testsuite/
2011-09-28 H.J. Lu <hongjiu.lu@intel.com>
PR ld/13195
* ld-elf/elf.exp: Add a C link testcase for PR ld/13195.
* ld-elf/pr13195.c: New.
* ld-elf/pr13195.d: Likewise.
* ld-elf/pr13195.s: Likewise.
* ld-elf/pr13195.t: Likewise.
Diffstat (limited to 'ld')
-rw-r--r-- | ld/testsuite/ld-elf/elf.exp | 5 | ||||
-rw-r--r-- | ld/testsuite/ld-elf/pr13195.c | 5 | ||||
-rw-r--r-- | ld/testsuite/ld-elf/pr13195.d | 10 | ||||
-rw-r--r-- | ld/testsuite/ld-elf/pr13195.s | 6 | ||||
-rw-r--r-- | ld/testsuite/ld-elf/pr13195.t | 6 |
5 files changed, 32 insertions, 0 deletions
diff --git a/ld/testsuite/ld-elf/elf.exp b/ld/testsuite/ld-elf/elf.exp index 4a00b81..866c866 100644 --- a/ld/testsuite/ld-elf/elf.exp +++ b/ld/testsuite/ld-elf/elf.exp @@ -138,6 +138,11 @@ if ![isnative] { return } +run_cc_link_tests { + {"PR ld/13195" "-Wl,--gc-sections" "" + {pr13195.c} {} "pr13195"} +} + set array_tests { {"preinit array" "" "" {preinit.c} "preinit" "preinit.out"} {"init array" "" "" {init.c} "init" "init.out"} diff --git a/ld/testsuite/ld-elf/pr13195.c b/ld/testsuite/ld-elf/pr13195.c new file mode 100644 index 0000000..a9bce4a --- /dev/null +++ b/ld/testsuite/ld-elf/pr13195.c @@ -0,0 +1,5 @@ +int +main () +{ + return 0; +} diff --git a/ld/testsuite/ld-elf/pr13195.d b/ld/testsuite/ld-elf/pr13195.d new file mode 100644 index 0000000..796102b --- /dev/null +++ b/ld/testsuite/ld-elf/pr13195.d @@ -0,0 +1,10 @@ +#ld: --gc-sections -shared -version-script pr13195.t +#readelf: -s --wide -D +#target: *-*-linux* *-*-gnu* +#notarget: arc-*-* d30v-*-* dlx-*-* i960-*-* or32-*-* pj*-*-* +#notarget: hppa64-*-* i370-*-* i860-*-* ia64-*-* mep-*-* mn10200-*-* +# generic linker targets don't support --gc-sections, nor do a bunch of others + +#... + +[0-9]+ +[0-9]+: +[0-9a-f]+ +[0-9]+ +FUNC +GLOBAL +DEFAULT +[1-9]+ foo +#pass diff --git a/ld/testsuite/ld-elf/pr13195.s b/ld/testsuite/ld-elf/pr13195.s new file mode 100644 index 0000000..409b5af --- /dev/null +++ b/ld/testsuite/ld-elf/pr13195.s @@ -0,0 +1,6 @@ + .section .text.new_foo,"ax",%progbits + .globl new_foo + .type new_foo, %function +new_foo: + .byte 0 + .symver new_foo,foo@@VERS_2.0 diff --git a/ld/testsuite/ld-elf/pr13195.t b/ld/testsuite/ld-elf/pr13195.t new file mode 100644 index 0000000..2b82842 --- /dev/null +++ b/ld/testsuite/ld-elf/pr13195.t @@ -0,0 +1,6 @@ +VERS_2.0 { +global: + foo; +local: + *; +}; |