diff options
author | Maciej W. Rozycki <macro@imgtec.com> | 2017-01-23 11:37:19 +0000 |
---|---|---|
committer | Maciej W. Rozycki <macro@imgtec.com> | 2017-01-24 12:53:52 +0000 |
commit | 1a792e1c00e07a1e644145a9f71446cf2e75e9ab (patch) | |
tree | 56a4cea9f145e240a228f208a23fdb0e31ef8b5b /ld | |
parent | fae1616f5f1357ae8b8e98241657088248178ced (diff) | |
download | gdb-1a792e1c00e07a1e644145a9f71446cf2e75e9ab.zip gdb-1a792e1c00e07a1e644145a9f71446cf2e75e9ab.tar.gz gdb-1a792e1c00e07a1e644145a9f71446cf2e75e9ab.tar.bz2 |
Solaris2/LD: Fix anonymous version script acceptance bug
Correct a bug in Solaris 2 linker emulation code triggered by a test
introduced with commit 81ff47b3a546 ("PR ld/20828: Fix linker script
symbols wrongly forced local with section GC") and only create implicit
version nodes if versioning is actually introduced with a version script
(or VERSION command) rather than only global vs local symbol visibility
selected, fixing an:
ld: anonymous version tag cannot be combined with other version tags
linker error produced whenever a version script (or VERSION command) is
used that does not assign symbol versions, such as:
{ global: foo; bar; local: *; };
and consequently removing a:
FAIL: PR ld/20828 dynamic symbols with section GC (version script)
test suite failure with the `x86_64-solaris2' target.
ld/
* emultempl/solaris2.em (elf_solaris2_before_allocation): Do not
add implicit version nodes if an anonymous version tag is being
used.
Diffstat (limited to 'ld')
-rw-r--r-- | ld/ChangeLog | 6 | ||||
-rw-r--r-- | ld/emultempl/solaris2.em | 3 |
2 files changed, 8 insertions, 1 deletions
diff --git a/ld/ChangeLog b/ld/ChangeLog index 941ca13..9160aac 100644 --- a/ld/ChangeLog +++ b/ld/ChangeLog @@ -1,3 +1,9 @@ +2017-01-24 Maciej W. Rozycki <macro@imgtec.com> + + * emultempl/solaris2.em (elf_solaris2_before_allocation): Do not + add implicit version nodes if an anonymous version tag is being + used. + 2017-01-24 Jiong Wang <jiong.wang@arm.com> * testsuite/ld-plugin/lto.exp (lto_link_elf_tests): Move "Compile 7", diff --git a/ld/emultempl/solaris2.em b/ld/emultempl/solaris2.em index 9845047..c5f2f31 100644 --- a/ld/emultempl/solaris2.em +++ b/ld/emultempl/solaris2.em @@ -76,7 +76,8 @@ elf_solaris2_before_allocation (void) /* Only do this if emitting a shared object and versioning is in place. */ if (bfd_link_dll (&link_info) - && (link_info.version_info != NULL + && ((link_info.version_info != NULL + && link_info.version_info->name[0] != '\0') || link_info.create_default_symver)) { struct bfd_elf_version_expr *globals = NULL, *locals = NULL; |