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/>