clang -pg, libm and the _end symbol
Raphael Kubo da Costa
rakuco at FreeBSD.org
Wed Feb 24 14:10:12 UTC 2016
Konstantin Belousov <kostikbel at gmail.com> writes:
> On Wed, Feb 24, 2016 at 01:54:25PM +0100, Dimitry Andric wrote:
>> On 24 Feb 2016, at 12:27, Raphael Kubo da Costa <rakuco at FreeBSD.org> wrote:
>> >
>> > 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)
>>
>> Try using: clang -pg foo.c -lm_p
>>
>> That works for me (also with gcc).
>
> It probably not quite works, in the sense that it resolves _end to
> something not correctly provided by libm_p.a. In other words, sbrk(),
> if used for anything, would be broken.
It at least "works" in the sense that clang doesn't fail; however, in
addition to kib's point this doesn't look optimal from a ports
perspective, as it requires giving special treatment to certain targets
and possibly hacking the build system in different ports.
More information about the freebsd-toolchain
mailing list