aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMaciej W. Rozycki <macro@imgtec.com>2017-01-23 11:37:19 +0000
committerMaciej W. Rozycki <macro@imgtec.com>2017-01-24 14:07:29 +0000
commit8cf12fd327278b6e5edd90f162dc257656603f30 (patch)
tree5c3bd0e8bf01737658b80a2dfe748e20c3c96aac
parent3c35b49e11c7e99459464cd850cfa6b2bdf4c9dd (diff)
downloadgdb-8cf12fd327278b6e5edd90f162dc257656603f30.zip
gdb-8cf12fd327278b6e5edd90f162dc257656603f30.tar.gz
gdb-8cf12fd327278b6e5edd90f162dc257656603f30.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. (cherry picked from commit 1a792e1c00e07a1e644145a9f71446cf2e75e9ab)
-rw-r--r--ld/ChangeLog6
-rw-r--r--ld/emultempl/solaris2.em3
2 files changed, 8 insertions, 1 deletions
diff --git a/ld/ChangeLog b/ld/ChangeLog
index 4fb1f38..6323524 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-23 Maciej W. Rozycki <macro@imgtec.com>
PR ld/20828
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;