On 27/01/2025 23:14, Russ Allbery wrote:
Ahmad Khalifa <ah...@khalifa.ws> writes:
Having said that, lintian is slow enough as a single thread, I'd vote for
downgrading the tag to Pedantic, but not deleting it.

So, I guess I'll say this more explicitly: I am opposed to downgrading the
tag to pedantic. If the tag is useful, we should fix it; if it's not
useful, we should delete it.

It's not a pedantic issue with the package. If the error is real, it's
serious, but Lintian's check for the error has a high false positive rate.
That's not what pedantic is for. Pedantic is intended for tags where
Lintian has correctly understood the thing that it is complaining about,
but people do not always agree that thing is worth fixing.

If you really want to keep the tag despite a lot of false positives, the
way to do that would be to make it experimental, but I think experimental
tags are often a dumping ground for things that will never be fixed and it
might be better to just delete it.

With your definition, I agree, it's not something to be pedantic about, it's not a real error.

Here is a quick check I did on random packages from udd [1]:
Picking abseil (300+ overridden), clanlib (9 error) and chicken (300+ error)

# download the relevant debs (sorry formatting)
wget 
https://ftp.debian.org/debian/pool/main/a/abseil/libabsl20230802_20230802.1-4_{amd64,arm64,armel,armhf,i386,mips64el,mipsel,ppc64el,s390x,riscv64}.deb
wget 
https://ftp.debian.org/debian/pool/main/c/clanlib/libclanapp-1.0t64_1.0~svn3827-11.2+b1_{amd64,arm64,armel,armhf,i386,mips64el,mipsel,ppc64el,s390x,riscv64}.deb
wget 
https://ftp.debian.org/debian/pool/main/c/chicken/chicken-bin_5.3.0-2_{amd64,arm64,armel,armhf,i386,mips64el,mipsel,ppc64el,s390x,riscv64}.deb

# extract
for f in *.deb; do dpkg --extract "$f" ROOT; done

# check for GLIBC symbol without NEEDED libc, libm or loaders
for f in ROOT/usr/lib/*-linux-gnu/*.so.* ROOT/var/lib/chicken/11/*.so*; do
    (objdump -T "$f" | grep " (GLIBC_[0-9]" > /dev/null) &&
    ( (objdump -p "$f" | grep -E 'NEEDED *libc.so|NEEDED *libm.so|NEEDED 
*ld-linux.*.so|NEEDED *ld64.so' > /dev/null) || echo "bad so: $f");
done


Outputs nothing.
Meaning for all libc dynamic symbols, the linker will load one of the libc libraries.

But reading that, I don't see how the linker could declare a dynamic GLIBC_ symbol without the related library reference. In fact, it should choke with "undefined reference" long before outputting a .so file. Even when compiling with -nolibc. But there is always a special case somewhere :) And if the linker wrote broken dynamic sections, I doubt lintian could find out from just inspecting the .so.

Perhaps the tag really is not relevant anymore or someone has a better test.


1. https://udd.debian.org/lintian-tag/library-not-linked-against-libc?affected=yes

--
Regards,
Ahmad

Reply via email to