bug-binutils
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Bug gold/18703] Symbol version and Version script incompatibility with


From: ccoutant at gmail dot com
Subject: [Bug gold/18703] Symbol version and Version script incompatibility with BFD ld
Date: Wed, 22 Jul 2015 04:04:32 +0000

https://sourceware.org/bugzilla/show_bug.cgi?id=18703

--- Comment #12 from Cary Coutant <ccoutant at gmail dot com> ---
> The documentation can have some improvements.  But ld.bfd behavior is
> well-defined as shown by testcases in ld/testsuite/ld-elfvers.

If you're going to maintain that ".symver foo,address@hidden" is valid, then I 
think
the assembler needs to be fixed so that it doesn't assume that the original
name and the versioned name don't have the same base. In obj-elf.c,
elf_frob_symbol seems to be written with the assumption that they are
different. The following patch fixes that so that we don't get the duplicate
symbol:

diff --git a/gas/config/obj-elf.c b/gas/config/obj-elf.c
index 78dc6d9..8668be0 100644
--- a/gas/config/obj-elf.c
+++ b/gas/config/obj-elf.c
@@ -2182,6 +2182,11 @@ elf_frob_symbol (symbolS *symp, int *puntp)
              memmove (&p[2], &p[3], l);
              S_SET_NAME (symp, sy_obj->versioned_name);
            }
+         else if (strncmp (S_GET_NAME (symp), sy_obj->versioned_name,
+                           strlen (S_GET_NAME (symp))) == 0)
+           {
+             S_SET_NAME (symp, sy_obj->versioned_name);
+           }
          else
            {
              symbolS *symp2;

(testsuite/gas/elf/symver.d and testsuite/gas/symver/symver1.d will also need
adjusting.)

With that patch to gas, gold now has the same behavior for Sri's test case (and
it also passes the vers27d1.c test case in the ld testsuite).

Shall I forward this bug to gas? As long as gas is emitting an unversioned
symbol, I'm going to maintain that gold is doing the right thing in assigning
it a default version.

-- 
You are receiving this mail because:
You are on the CC list for the bug.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]