Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 27 Jan 2024 09:08:49 -0800
From:      Steve Kargl <sgk@troutmask.apl.washington.edu>
To:        freebsd-current@freebsd.org
Subject:   llvm ld vs binutils ld
Message-ID:  <ZbU4oToBDJhRSCPa@troutmask.apl.washington.edu>

next in thread | raw e-mail | index | archive | help
In an attempt to cleanup a bit of src/lib/msun, I ran into
a small issue that I cannot explain at the moment.  If I have
/usr/bin/ld in my path prior to /usr/local/bin/ld everything
works

% which ld
/usr/bin/ld
% make clean && make cleandepend
% make

and I have a libm.so.5.  But if /usr/local/bin/ld is found, I
see

% cd msun
% make clean && make cleandepend
% make
...
ld: error: version script assignment of 'FBSD_1.0' to symbol 'fabs' \
    failed: symbol not defined
cc: error: linker command failed with exit code 1 (use -v to see invocation)
*** Error code 1

Stop.
make: stopped in /usr/src/lib/msun

% grep fabs /usr/src/lib/msun/Symbol.map 
        fabs;
        fabsf;
        fabsl;

But, if one looks in msun/Makefile, one see

# FreeBSD's C library supplies these functions:
#COMMON_SRCS+=  s_fabs.c s_frexp.c s_isnan.c s_ldexp.c s_modf.c

so fabs is not built with libm.  

% nm --dynamic /lib/libc.so.7 | grep fabs
00000000000ba600 T fabs
% nm --dynamic /lib/libm.so.5 | grep fabs
000000000001fa90 T fabsf
00000000000252e0 T fabsl


Is this a known issue?  Should fabs be removed from Symbol.map?


-- 
Steve



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?ZbU4oToBDJhRSCPa>