[PATCH] nm: Remove --with-symbol-versions

Fangrui Song i@maskray.me
Thu Aug 13 05:42:52 GMT 2020


On 2020-08-12, H.J. Lu wrote:
>On Wed, Aug 12, 2020 at 7:42 PM Fangrui Song <i@maskray.me> wrote:
>>
>> "bfd: Display symbol version for nm -D" has a minor problem: an
>> undefined symbol (e.g. strlen@GLIBC_2.2.5 in cat) should use one @,
>> instead of two @@. nm -D output is currently inconsistent with readelf -Ws's
>> output and ld -y's behavior.
>>
>
>nm -D is consistent with readelf -sW and nm:
>
>[hjl@gnu-cfl-2 tmp]$ cat x.c
>#include <stdio.h>
>
>void
>foo (void)
>{
>  printf ("foo\n");
>}
>[hjl@gnu-cfl-2 tmp]$ gcc -shared -fPIC x.c
>[hjl@gnu-cfl-2 tmp]$ readelf -sW a.out | grep UND | grep @@
>    47: 0000000000000000     0 FUNC    GLOBAL DEFAULT  UND puts@@GLIBC_2.2.5
>    51: 0000000000000000     0 FUNC    WEAK   DEFAULT  UND
>__cxa_finalize@@GLIBC_2.2.5
>[hjl@gnu-cfl-2 tmp]$ nm a.out | grep " U "  | grep @@
>                 U puts@@GLIBC_2.2.5
>[hjl@gnu-cfl-2 tmp]$ nm -D a.out | grep " U "  | grep @@
>                 U puts@@GLIBC_2.2.5
>[hjl@gnu-cfl-2 tmp]$
>
>But readelf --dyn-syms only displays a single @

puts@GLIBC_2.2.5 in .dynsym (st_name concatenated with the version string in
.gnu.version_r) and puts@@GLIBC_2.2.5 in .symtab (st_name).  This looks like
another minor thing which should be fixed in ld.

Version strings in VERNEED should use a single @.


More information about the Binutils mailing list