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: Tue, 21 Jul 2015 18:03:42 +0000

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

--- Comment #1 from Cary Coutant <ccoutant at gmail dot com> ---
You're looking at the linker symbol table with nm. (And nm does not show
versioning information from the .gnu.version* sections.)

When I build this with gold, readelf -Vs shows:

Symbol table '.dynsym' contains 13 entries:
   Num:    Value          Size Type    Bind   Vis      Ndx Name
     0: 0000000000000000     0 NOTYPE  LOCAL  DEFAULT  UND 
     1: 0000000000000000     0 NOTYPE  WEAK   DEFAULT  UND __gmon_start__
     2: 0000000000000000     0 NOTYPE  WEAK   DEFAULT  UND
_ITM_deregisterTMCloneTab
     3: 0000000000000000     0 FUNC    WEAK   DEFAULT  UND
address@hidden (3)
     4: 0000000000000000     0 NOTYPE  WEAK   DEFAULT  UND
_ITM_registerTMCloneTable
     5: 0000000000000000     0 NOTYPE  WEAK   DEFAULT  UND _Jv_RegisterClasses
     6: 00000000000006f5    11 FUNC    GLOBAL DEFAULT   12 foo@@VERS_1.1
     7: 0000000000002018     0 NOTYPE  GLOBAL DEFAULT  ABS _edata
     8: 0000000000002019     0 NOTYPE  GLOBAL DEFAULT  ABS _end
     9: 00000000000005c0     0 FUNC    GLOBAL DEFAULT   10 _init
    10: 0000000000002018     0 NOTYPE  GLOBAL DEFAULT  ABS __bss_start
    11: 0000000000000700     0 FUNC    GLOBAL DEFAULT   13 _fini
    12: 0000000000000000     0 OBJECT  GLOBAL DEFAULT  ABS VERS_1.1

...

Version symbols section '.gnu.version' contains 13 entries:
 Addr: 0000000000000458  Offset: 0x000458  Link: 2 (.dynsym)
  000:   0 (*local*)       0 (*local*)       0 (*local*)       3 (GLIBC_2.2.5)
  004:   0 (*local*)       0 (*local*)       2 (VERS_1.1)      1 (*global*)   
  008:   1 (*global*)      1 (*global*)      1 (*global*)      1 (*global*)   
  00c:   2 (VERS_1.1)   

Version definition section '.gnu.version_d' contains 2 entries:
  Addr: 0x0000000000000474  Offset: 0x000474  Link: 3 (.dynstr)  000000: Rev: 1
 Flags: BASE   Index: 1  Cnt: 1  Name: ver1.so
  0x001c: Rev: 1  Flags: none  Index: 2  Cnt: 1  Name: VERS_1.1

Version needs section '.gnu.version_r' contains 1 entries:
 Addr: 0x00000000000004ac  Offset: 0x0004ac  Link: 3 (.dynstr)
  000000: Version: 1  File: libc.so.6  Cnt: 1
  0x0010:   Name: GLIBC_2.2.5  Flags: none  Version: 3

I think this is working as intended, although comparing with Gnu ld output, I
see that gold defines it as a default version ("@@") where Gnu ld does not. I'm
not sure what the logic ought to be for that. Without the __asm__ in the .c
file, Gnu ld also makes 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]