Bug#940517: libcairo-gobject-perl: investigate library-not-linked-against-libc Lintian error
intrigeri at debian.org
intrigeri at debian.org
Mon Sep 16 16:20:06 BST 2019
Package: libcairo-gobject-perl
Version: 1.004-3
Severity: important
I've spotted this error while packaging 1.005:
E: libcairo-gobject-perl: library-not-linked-against-libc usr/lib/x86_64-linux-gnu/perl5/5.28/auto/Cairo/GObject/GObject.so
N:
N: The package installs a library which is not dynamically linked against
N: libc.
N:
N: It is theoretically possible to have a library which doesn't use any
N: symbols from libc, but it is far more likely that this is a violation of
N: the requirement that "shared libraries must be linked against all
N: libraries that they use symbols from in the same way that binaries are".
N:
N: Refer to Debian Policy Manual section 10.2 (Libraries) and
N: https://bugs.debian.org/698720 for details.
N:
N: Severity: important, Certainty: possible
N:
N: Check: binaries, Type: binary, udeb
If I rebuild 1.004-3 I see the same problem so it's caused by a change
in build-dependencies, and not by the new libcairo-gobject-perl
upstream release.
I've investigated a bit with this command:
objdump -Tx /usr/lib/x86_64-linux-gnu/perl5/5.*/auto/Cairo/GObject/GObject.so
1. 1.004-3+b1 that's in the archive (binNMU from 2018-11-02)
- there's a "NEEDED" for libc.so.6
- the "DYNAMIC SYMBOL TABLE" section includes:
0000000000000000 w DF *UND* 0000000000000000 GLIBC_2.2.5 __cxa_finalize
2. Fresh build of 1.005-1
- no "NEEDED" for libc.so.6, hence the Lintian error
- __cxa_finalize is still present in the dynamic symbol table
So this does not look like a false positive: at least one symbol from
libc is directly used by the library, so presumably it should be
linked against libc.
In both cases, all other symbols listed in the dynamic symbol table
section have names that suggest they're coming from perl, GLib, or
Cairo libraries.
I'm not blocking on this to upload 1.005-1 because this could happen
just as well with a binNMU next week (random example: as part of the
perl 5.30 transition), regardless of whether I upload or not. And it
seems to be a minor problem here: the only libc symbol that's used
directly by this .so file was introduced in libc6 2.2.5, which was
uploaded to sid in 2002; I doubt this will ever change given the
nature of this library and its build system.
However, I don't dare adding a Lintian override: I'm not well versed
in the shared library / linker space and might very well be
underestimating the severity of this problem.
For whoever, better skilled at this than me, will investigate this
problem:
- #909267 might be interesting
- I don't know if -Wl,--as-needed is passed during the build: the
actual call to the linker is obfuscated as "LD".
Cheers,
--
intrigeri
More information about the pkg-perl-maintainers
mailing list