Question

What does the@GLIBC_2.2.5 do/mean with symbols inside glibc?

I'm attempting to build a package on a 64bit CLFS system. I'm getting unresolved symbol issues with multiple symbols linking against /lib64/libc-2.15.so, however, everything that is unresolved has a @GLIBC_2.2.5 suffix.

0000000000107910 T xdr_accepted_reply@GLIBC_2.2.5
0000000000112290 T xdr_array@GLIBC_2.2.5
0000000000109650 T xdr_authdes_cred@GLIBC_2.2.5

So it LOOKS like the xdr routines exist in libc-2.15 but I can't really use them. The symbols in my object files do not have that suffix. For example, an nm on the .o shows just 'xdr_accepted_reply'.

I would like to understand this first since I'm being led down a path of chasing replacement libraries otherwise. libtirpc to get the XDR routines and the some other library to get the missing crypto routines that tirpc needs.

Was it helpful?

Solution

They look like Versioning Symbols for Shared Libraries (glibc)

As the content behind the link will point out, you can use:

objdump -x wrapper-linux-x86-32  //and possibly -64

To get a lot of information about the executable...

For example:

...
Version References:
required from libpthread.so.0:
0x0d696912 0x00 05 GLIBC_2.2
0x0d696911 0x00 04 GLIBC_2.1
0x0d696910 0x00 03 GLIBC_2.0
required from libc.so.6:
0x0d696913 0x00 08 GLIBC_2.3
0x0d696911 0x00 07 GLIBC_2.1
0x0d696912 0x00 06 GLIBC_2.2
0x0d696910 0x00 02 GLIBC_2.0
...
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top