Ahmad Khalifa <ah...@khalifa.ws> writes:

> Instead, lintian should alert that some symbols are "unversioned".

The problem is that unversioned symbols are often correct. For one, not
every shared library uses symbol versioning; we may want them all to use
symbol versioning, and certainly way more of them do today, but I don't
think it's universal.

But, more critically, the Perl XS case relies on unversioned symbols. We
have a use case that uses unresolved symbols, which therefore aren't
versioned. And even if we decided to handle Perl XS modules a different
way, I believe this pattern occurs elsewhere when the symbols in the
loaded module need to be resolved against the executable that loads that
module. I believe those symbols basically *can't* be versioned, at least
in the normal way.

> Whether you can detect this or not, it would probably be a new tag
> anyway. But being practical, the stability of libc nowadays is much
> higher and it's better to just have lintian-is-always-right!!

I don't think this problem is about the stability of libc. I don't think
anything relevant has changed there; libc does change ABIs in a way that
isn't backward compatible, because that's exactly what symbol versioning
was designed to allow it to do. Older binaries use the older symbol
version and get the old behavior and everything continues to work.

Lintian is trying to ensure that the libc symbols in modules are correctly
versioned and wired to the correct libc symbols. That's hard to check
correctly, but will happen automatically if the module is linked with
libc, which is why Lintian is instead detecting a proxy for the problem
that it's trying to detect and complaining about modules not linked with
libc. The problem is that not linking with libc if one doesn't use any of
its symbols is both fine and more common these days due to increased use
of --as-needed.

The bug that Lintian is trying to detect is the presence of unversioned
unresolved symbols in a shared library or module when the underlying
symbol to which that symbol should resolve is, in fact, versioned. The
problem is that the information required to diagnose that problem is
difficult for Lintian to acquire.

> In my short experience running lintian, it has been right 99% of the
> time, so this feels like a bug.

Oh, sure, I completely agree that the false positives are a bug.

-- 
Russ Allbery (r...@debian.org)              <https://www.eyrie.org/~eagle/>

Reply via email to