[lsb-discuss] lsb-appchk: libc/libpthread symbol confusion, and incorrect report of missing libc.so.6 from Debian

Török Edwin 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:
Missing Libraries:

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...
Name: test_simple.c
Type: text/x-csrc
Size: 871 bytes
Desc: not available
URL: <http://lists.linuxfoundation.org/pipermail/lsb-discuss/attachments/20130107/fca021be/attachment.bin>

More information about the lsb-discuss mailing list