[lsb-discuss] lsb-appchk: libc/libpthread symbol confusion, and incorrect report of missing libc.so.6 from Debian
edwin at etorok.net
Mon Jan 7 17:51:00 UTC 2013
I have compiled a simple test application with lsbcc like this:
$ /opt/lsb/bin/lsbcc --lsb-target-version=3.1 test_simple.c -o test_simple -Wl,--as-needed -pthread
Then I've used the LSB app-checker's web interface to check /var/tmp/test_simple for LSB 3.1 compliance.
There are 2 things that confuse me:
I. symbol in libc or libpthread
I got these messages:
There are 46 of 71 distributions that provide all the required libraries and interfaces.
The Application uses 4 interfaces, which appeared in a later LSB version than 3.1. Try checking the Application for compatibility with LSB 4.1.
The symbols it complains about are __errno_location, accept, close, and write:
libc.so.6 0 of 25 (list…)
libpthread.so.0 46 of 46 (list…) Not in LSB 3.1. (Appeared in LSB 4.1.) It is better to use this interface from the 'libc' library.
The actual binary doesn't seem to care where the symbols come from, and I'm not aware of a way to choose where it comes from:
$ eu-readelf -a test_simple|grep errno
0x0000000000600ef0 X86_64_JUMP_SLOT 000000000000000000 +0 __errno_location
13: 0000000000000000 0 FUNC GLOBAL DEFAULT UNDEF __errno_location at GLIBC_2.2.5 (2)
71: 0000000000000000 0 FUNC GLOBAL DEFAULT UNDEF __errno_location@@GLIBC_2.2.5
[ 2cb] __errno_location@@GLIBC_2.2.5
[ 43] __errno_location
I think this happens because my system is Debian unstable (so LSB 4.x), and the symbol is both in libpthread and libc.
But if I'd run this binary on a real LSB 3.1 system, then it'd load the symbol from libc.
Should I run the LSB app-checker in a chroot that has a real LSB 3.1 system?
II. wrong information: Debian 6.x lacks libc.so.6
LSB app-checker tells me this about Debian 6.0.0 and Debian 6.0.3:
This is clearly wrong, without those libraries nothing would work.
I checked on a Debian 6.0.6 system and it does exist:
$ ls /lib/libc.so.6 -l
lrwxrwxrwx 1 root root 14 Sep 30 12:45 /lib/libc.so.6 -> libc-2.11.3.so
I went to Administration -> check for updates and it told me no updates are available.
How do I get the information about Debian 6.0.x updated?
Is there a tool that I could run on my Debian installation to correct the information in LSB app-checker?
The navigator does seem to know about libc.so.6, so I'm not sure whats wrong:
For a simple application like the one attached I should get 100% interface coverage, shouldn't I?
-------------- next part --------------
A non-text attachment was scrubbed...
Size: 871 bytes
Desc: not available
More information about the lsb-discuss