clang -pg, libm and the _end symbol
Raphael Kubo da Costa
rakuco at FreeBSD.org
Wed Feb 24 11:30:09 UTC 2016
I'm reviewing an update to the textproc/miller port in bug 207194, and
noticed it does some ugly things in post-configure to seemingly
work around the following problem (on 11-HEAD at least):
% echo 'int main(void) { return 0; }' > foo.c
% clang -pg foo.c -lm
/usr/bin/ld: undefined reference to symbol `_end' (try adding -lc)
//lib/libc.so.7: could not read symbols: Bad value
cc: error: linker command failed with exit code 1 (use -v to see
invocation)
(FWIW, using another library such as -lz instead of -lm retuls in the
same problem)
Adding LDFLAGS+=-lc to the port's Makefile would've been enough, but I'm
not sure if it'd be just working around an actual bug, plus libtool
automatically strips -lc from the linker invocation:
7534 *-*-openbsd* | *-*-freebsd* | *-*-dragonfly* | *-*-bitrig*)
7535 # Do not include libc due to us having libc/libc_r.
7536 test X-lc = "X$arg" && continue
The port builds and links fine on 9.3 without any workarounds, and if I
explicitly use ld.gold to link the above file it also works on HEAD.
Is clang working as expected or is this a bug?
More information about the freebsd-toolchain
mailing list