tech-toolchain archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: ld compat linker warnings considered harmful
On Wed, Aug 19, 2026 at 04:18:40AM +0100, David Holland wrote:
> On Tue, Aug 18, 2026 at 09:58:58AM +0200, Thomas Klausner wrote:
> > ld: /usr/lib/libm.so.0: warning: warning: reference to compatibility cabs()
> >
> > The (known) problem is that this linker warning also triggers when it
> > shouldn't, when libraries are pulled in indirectly and the functions
> > not even used by the program that (indirectly) links against them.
>
> Is there a description of the problem somewhere? Every one of these I
> remember seeing in pkgsrc and getting around to actually investigating
> (all years ago now, admittedly) turned out to be real.
I last asked about this in February
https://mail-index.netbsd.org/current-users/2026/02/24/msg047412.html
> So I'm not convinced meson is doing the wrong thing. But having things
> break obviously won't do.
and included a short example that shows it's a real problem, and Joerg
confirmed it.
https://mail-index.netbsd.org/current-users/2026/02/25/msg047416.html
I'll include it again.
In short, a program just doing 'exit' is linked against libgssapi (or
libroken, both work), and the linker complains:
# gcc -o a a.c -lgssapi
ld: /usr/lib/libutil.so.7: warning: warning: reference to compatibility login_getpwclass(); include <login_cap.h> for correct reference
ld: /usr/lib/libutil.so.7: warning: warning: reference to compatibility pw_scan(); include <pwd.h> to generate correct reference
ld: /usr/lib/libutil.so.7: warning: warning: reference to compatibility loginx(); include <util.h> to generate correct reference
ld: /usr/lib/libutil.so.7: warning: warning: reference to compatibility parsedate(); include <util.h> for correct reference
ld: /usr/lib/libutil.so.7: warning: warning: reference to compatibility pw_copyx(); include <util.h> to generate correct reference
ld: /usr/lib/libutil.so.7: warning: warning: reference to compatibility pw_getpwconf(); include <pwd.h> to generate correct reference
ld: /usr/lib/libutil.so.7: warning: warning: reference to compatibility login(); include <util.h> to generate correct reference
ld: /usr/lib/libutil.so.7: warning: warning: reference to compatibility setusercontext(); include <login_cap.h> for correct reference
ld: /usr/lib/libutil.so.7: warning: warning: reference to compatibility pw_copy(); include <util.h> to generate correct reference
No function from gssapi (or roken) is called, so nothing can call
libutil and need the compat header.
Thomas
#include <stdlib.h>
int main() {
exit(0);
}
a:
gcc -o a a.c -lgssapi
b:
gcc -o b a.c -lroken
Home |
Main Index |
Thread Index |
Old Index