Control: retitle -1 lintian: Remove tag library-not-linked-against-libc

Hi,

> So probably we need an update for our QA tools to do a better detection of
> dynamically linked binaries.

Lintian cannot detect this tag reliably. It should probably be removed.

Like many other dependency-type problems in Debian, the analysis of
library prerequisites requires a tool with an archive-wide
perspective. The Lintian team may eventually be able to provide
something on lintian.d.o, but the stand-alone program 'lintian' cannot
do it.

In the case of fwupd, Lintian sees the following, immediate library
requirements:

% readelf -WltdVs
dir/usr/lib/x86_64-linux-gnu/fwupd-plugins-3/libfu_plugin_uefi_recovery.so
...
 0x0000000000000001 (NEEDED)             Shared library: [libfwupd.so.2]
 0x0000000000000001 (NEEDED)             Shared library: [libfwupdplugin.so.1]
 0x0000000000000001 (NEEDED)             Shared library: [libgobject-2.0.so.0]
 0x0000000000000001 (NEEDED)             Shared library: [libglib-2.0.so.0]
...

while ldd resolves the whole tree:

% ldd dir/usr/lib/x86_64-linux-gnu/fwupd-plugins-3/libfu_plugin_uefi_recovery.so
    linux-vdso.so.1 (0x00007ffd7ebca000)
    libfwupd.so.2 => /lib/x86_64-linux-gnu/libfwupd.so.2 (0x00007fea01bce000)
    libfwupdplugin.so.1 => not found
    libgobject-2.0.so.0 => /lib/x86_64-linux-gnu/libgobject-2.0.so.0
(0x00007fea01b79000)
    libglib-2.0.so.0 => /lib/x86_64-linux-gnu/libglib-2.0.so.0
(0x00007fea01a5a000)
    libgio-2.0.so.0 => /lib/x86_64-linux-gnu/libgio-2.0.so.0
(0x00007fea0189c000)
    libsoup-2.4.so.1 => /lib/x86_64-linux-gnu/libsoup-2.4.so.1
(0x00007fea0180c000)
    libjson-glib-1.0.so.0 =>
/lib/x86_64-linux-gnu/libjson-glib-1.0.so.0 (0x00007fea017e0000)
*   libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fea0161f000)
    libffi.so.6 => /lib/x86_64-linux-gnu/libffi.so.6 (0x00007fea01615000)
    libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0
(0x00007fea015f4000)
    libpcre.so.3 => /lib/x86_64-linux-gnu/libpcre.so.3 (0x00007fea01580000)
    libgmodule-2.0.so.0 => /lib/x86_64-linux-gnu/libgmodule-2.0.so.0
(0x00007fea0157a000)
    libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007fea0135a000)
    libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007fea01355000)
    libmount.so.1 => /lib/x86_64-linux-gnu/libmount.so.1 (0x00007fea012f6000)
    libselinux.so.1 => /lib/x86_64-linux-gnu/libselinux.so.1
(0x00007fea010ce000)
    libresolv.so.2 => /lib/x86_64-linux-gnu/libresolv.so.2 (0x00007fea010b4000)
    libgssapi_krb5.so.2 => /lib/x86_64-linux-gnu/libgssapi_krb5.so.2
(0x00007fea01067000)
    libxml2.so.2 => /lib/x86_64-linux-gnu/libxml2.so.2 (0x00007fea00ebc000)
    libsqlite3.so.0 => /lib/x86_64-linux-gnu/libsqlite3.so.0
(0x00007fea00d9a000)
    libpsl.so.5 => /lib/x86_64-linux-gnu/libpsl.so.5 (0x00007fea00d87000)
    /lib64/ld-linux-x86-64.so.2 (0x00007fea01c1d000)
    libblkid.so.1 => /lib/x86_64-linux-gnu/libblkid.so.1 (0x00007fea00d32000)
    librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007fea00d28000)
    libkrb5.so.3 => /lib/x86_64-linux-gnu/libkrb5.so.3 (0x00007fea00c46000)
    libk5crypto.so.3 => /lib/x86_64-linux-gnu/libk5crypto.so.3
(0x00007fea00c12000)
    libcom_err.so.2 => /lib/x86_64-linux-gnu/libcom_err.so.2
(0x00007fea00c0c000)
    libkrb5support.so.0 => /lib/x86_64-linux-gnu/libkrb5support.so.0
(0x00007fea00bfd000)
    libkeyutils.so.1 => /lib/x86_64-linux-gnu/libkeyutils.so.1
(0x00007fea00bf6000)
    libicui18n.so.63 => /lib/x86_64-linux-gnu/libicui18n.so.63
(0x00007fea0091b000)
    libicuuc.so.63 => /lib/x86_64-linux-gnu/libicuuc.so.63 (0x00007fea0074a000)
    libicudata.so.63 => /lib/x86_64-linux-gnu/libicudata.so.63
(0x00007fe9fed5a000)
    liblzma.so.5 => /lib/x86_64-linux-gnu/liblzma.so.5 (0x00007fe9fed32000)
    libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007fe9febaf000)
    libidn2.so.0 => /lib/x86_64-linux-gnu/libidn2.so.0 (0x00007fe9feb90000)
    libunistring.so.2 => /lib/x86_64-linux-gnu/libunistring.so.2
(0x00007fe9fea0c000)
    libuuid.so.1 => /lib/x86_64-linux-gnu/libuuid.so.1 (0x00007fe9fea01000)
    libstdc++.so.6 => /lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007fe9fe87d000)
    libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007fe9fe863000)

As one can see, the dynamic linker makes libc.so.6 available
indirectly, but that analysis is possible only on a running system.
Another approach would be to scan all shared libraries in the archive
and construct the dependency tree. Both are outside Lintian's purview.

The bootstrapping folks occasionally approach the Lintian team with
requests for similar analysis. Their solution will also require a
portfolio-type approach, and a new tool. Let's call it
'detaxification' for now. It resolves dependencies.

> lintian generates false positives for library-not-linked-against-libc after 
> gcc-7 7.3.0-16

Perhaps the previous title of the bug report is valuable for posterity.

Kind regards
Felix Lechner

Reply via email to