mirror of
https://github.com/gperftools/gperftools
synced 2024-12-18 13:34:33 +00:00
d5055ef3a2
This is part of effort to get rid of perl pprof dependency. We're replacing forking to pprof --symbols with carefully crafted libbacktrace integration which has enough support for symbolizing backtraces.
36 lines
1.4 KiB
Plaintext
36 lines
1.4 KiB
Plaintext
|
|
== googletest
|
|
|
|
googletest is vendored at release-1.8.0-3493-g0953a17a. It was copied
|
|
verbatim via git archive and added here.
|
|
|
|
== libbacktrace
|
|
|
|
libbacktrace was vendored from github.com/ianlancetaylor/libbacktrace
|
|
at commit 86885d14049fab06ef8a33aac51664230ca09200. We dont use its
|
|
autotools build infrastructure and integrate it ourselves with mostly
|
|
hardcoded config.h and our own Makefile.am bits. Those integration
|
|
bits are in libbacktrace-integration in this subdirectory. Main
|
|
motivation for such approach is that:
|
|
|
|
*) we only need symbolization subset
|
|
|
|
*) we want to avoid polluting global namespace of symbols. We arrange
|
|
for all backtrace symbols to be prefixed tcmalloc_. See
|
|
libbacktrace-integration/config.h.
|
|
|
|
When updating libbacktrace check that all symbols are renamed by
|
|
something like this:
|
|
|
|
$ make libbacktrace.la
|
|
$ objdump -t .libs/libbacktrace.a | grep ' g '
|
|
|
|
Another notable thing is, we don't bother with mmap support for
|
|
reading files metadata and debug info. We actually go to extra length
|
|
to replace their alloc.c functions with our own. Our replacement
|
|
improves performance some, but most notably it allows us to discard
|
|
all the state allocated by libbacktrace. This enables us to not worry
|
|
about any synchronization concerns or libbacktrace's lack of ability
|
|
to "see" freshly dlopened modules if we did recommended path of doing
|
|
thread-ful singleton backtrace state.
|