Build for profiling? Got //usr/lib/libc_p.a(sbrk.po): undefined reference to symbol '_end'
Hans Ottevanger
hans at beastielabs.net
Tue Jun 30 13:20:01 UTC 2015
On 06/30/15 10:19, Marcin Cieslak wrote:
> I am trying to compile https://github.com/sass/libsass instrumented
> for profiling. As far as I understand this does not work with clang,
> so I am trying with gcc version 4.8.5 20150212 (prerelease)
> (FreeBSD Ports Collection).
>
Profiling with -pg was added to clang a few years ago by Roman Divacky,
with a bit of my help. It is not (yet) documented AFAIK and don't know
about the situation upstream.
See also the mailing list thread starting here:
https://lists.freebsd.org/pipermail/freebsd-toolchain/2011-January/000075.html
> This is a shared library in C++ that gets loaded by node (www/node).
>
> I have a world built with profiling libraries, I have additionally
> ran "make install INSTALL_PIC_ARCHIVE=yes" in lib/libc, lib/msun
> and lib/libcxxrt directories (the latter probably not needed).
>
> Here's config.log output:
>
> configure:3344: checking whether the C++ compiler works
> configure:3366: g++48 -pg -g conftest.cpp >&5
> /usr/local/bin/ld: //usr/lib/libc_p.a(sbrk.po): undefined reference to symbol '_end'
> //lib/libc.so.7: error adding symbols: DSO missing from command line
> collect2: error: ld returned 1 exit status
> configure:3370: $? = 1
> configure:3408: result: no
> configure: failed program was:
> | /* confdefs.h */
> | #define PACKAGE_NAME "libsass"
> | #define PACKAGE_TARNAME "libsass"
> | #define PACKAGE_VERSION "3.2.5-9-gbe07-dirty"
> | #define PACKAGE_STRING "libsass 3.2.5-9-gbe07-dirty"
> | #define PACKAGE_BUGREPORT "support at moovweb.com"
> | #define PACKAGE_URL ""
> | #define PACKAGE "libsass"
> | #define VERSION "3.2.5-9-gbe07-dirty"
> | /* end confdefs.h. */
> |
> | int
> | main ()
> | {
> |
> | ;
> | return 0;
> | }
>
Maybe adding an extra -lc_p helps.
Keep in mind that time spent in libraries that are dynamically linked
will not turn up in your profile. If I want profiling results from the
standard libraries I explicitly link (statically, because they are .a
archives) with the profiled libs, e.g. using -lc++_p -lm_p -lc_p (with
clang).
Kind regards,
Hans Ottevanger
Eindhoven, Netherlands
www.beastielabs.net
More information about the freebsd-hackers
mailing list