summaryrefslogtreecommitdiff
path: root/Makefile.am
Commit message (Collapse)AuthorAgeFilesLines
* bumped version to 2.8gperftools-2.8Aliaksey Kandratsenka2020-07-061-1/+1
|
* liberate gperftools tests from relying on -fno-builtin-XXX flagsAliaksey Kandratsenka2020-07-061-38/+26
| | | | | | Clang mostly ignores those anyways, so our tests needed better way to disable optimizations (clang is quite aggressive replacing new/delete pair with stack allocation).
* chmod -x Makefile.am gperftools.slnAliaksey Kandratsenka2020-03-231-0/+0
|
* New ProfilerGetStackTrace()Kirill Müller2020-03-081-1/+1
|
* Drop not very portable and not very useful unwind benchmark.Aliaksey Kandratsenka2018-10-071-8/+0
|
* Add flag to disable installing unmaintained & deprecated pprof.Aliaksey Kandratsenka2018-08-261-2/+9
| | | | | | | | | | | | | | | | Everyone should be using golang pprof from github.com/google/pprof, but distros still ship our perl version and not everyone is aware of better pprof yet. This is another step in completely dropping perl pprof. We still default to installing it, but hopefully we'll be able to convince distros to disable this soon. We still install pprof under pprof-symbolize name because stack traces symbolization depends on it, and because golang pprof won't support this feature. This is related to issue #1038.
* Clean up MSVC projectsHoly Wu2018-08-141-1/+0
| | | | | | 1.Remove superfluous per file settings for include directory and runtime library. 2.Remove unnecessary project tcmalloc_minimal_unittest-static. We can simply build libtcmalloc_minimal as a static library and then link against the single .lib file. 3.Add separate configurations of patching and overriding facility for release mode.
* Upgrade MSVC projects to MSVC2015Aliaksei Kandratsenka2018-08-051-25/+25
|
* Fix build without static librariesFabrice Fontaine2018-04-291-2/+8
| | | | | | | | | Only add -static to malloc_bench_LDFLAGS and binary_trees_LDFLAGS if ENABLE_STATC is set otherwise build with some compilers will fail if user has decided to build only the shared version of gperftools libraries Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
* Add support for C++17 operator new/delete for overaligned types.Andrey Semashev2017-11-291-0/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - Add auto-detection of std::align_val_t presence to configure scripts. This indicates that the compiler supports C++17 operator new/delete overloads for overaligned types. - Add auto-detection of -faligned-new compiler option that appeared in gcc 7. The option allows the compiler to generate calls to the new operators. It is needed for tests. - Added overrides for the new operators. The overrides are enabled if the support for std::align_val_t has been detected. The implementation is mostly based on the infrastructure used by memalign, which had to be extended to support being used by C++ operators in addition to C functions. In particular, the debug version of the library has to distinguish memory allocated by memalign from that by operator new. The current implementation of sized overaligned delete operators do not make use of the supplied size argument except for the debug allocator because it is difficult to calculate the exact allocation size that was used to allocate memory with alignment. This can be done in the future. - Removed forward declaration of std::nothrow_t. This was not portable as the standard library is not required to provide nothrow_t directly in namespace std (it could use e.g. an inline namespace within std). The <new> header needs to be included for std::align_val_t anyway. - Fixed operator delete[] implementation in libc_override_redefine.h. - Moved TC_ALIAS definition to the beginning of the file in tcmalloc.cc so that the macro is defined before its first use in nallocx. - Added tests to verify the added operators. [alkondratenko@gmail.com: fixed couple minor warnings, and some whitespace change] [alkondratenko@gmail.com: removed addition of TC_ALIAS in debug allocator] Signed-off-by: Aliaksey Kandratsenka <alkondratenko@gmail.com>
* Revert "Ignore current_instance heap allocation when leak sanitizer is enabled"Aliaksey Kandratsenka2017-09-231-3/+0
| | | | This reverts commit 70a35422b5509a456584b132ad8ce4466af323ea.
* Revert "Ensure that lsan flags are appended on all necessary targets"Aliaksey Kandratsenka2017-09-231-6/+2
| | | | This reverts commit a3bf61ca81b68e7792739c451aceef00cf7d7d03.
* implement support for C11 aligned_allocAliaksey Kandratsenka2017-09-161-0/+1
| | | | Just like glibc does, we simply alias it to memalign.
* Fix build on macOS.Piotr Sikora2017-08-211-0/+2
| | | | | | Fixes #910. Signed-off-by: Piotr Sikora <piotrsikora@google.com>
* Ensure that lsan flags are appended on all necessary targetsFrancis Ricci2017-07-081-2/+6
|
* Ignore current_instance heap allocation when leak sanitizer is enabledFrancis Ricci2017-07-041-0/+3
| | | | | | Without this patch, any user program that enables LeakSanitizer will see a leak from tcmalloc. Add a weak hook to __lsan_ignore_object, so that if LeakSanitizer is enabled, the allocation can be ignored.
* added stacktrace capturing benchmarkAliaksey Kandratsenka2017-05-291-0/+6
|
* don't build with -fno-exceptionsAliaksey Kandratsenka2017-05-141-24/+2
| | | | | | It looks like, in past it could produce better code. But since unwinding is totally different since almost forever now, there is no perfomance benefit of it anymore.
* added tcmalloc minimal unittest with ASSERTs checkedAliaksey Kandratsenka2017-05-141-0/+27
|
* build malloc_bench_shared_full only when full tcmalloc is builtAliaksey Kandratsenka2017-02-201-1/+5
| | | | | | | | I.e. because otherwise, when --enable-minimal is given, we're building empty libtcmalloc.la and linking it to malloc_bench_shared_full. Which has no effect at all and actually breaks builds on OSX. Should fix issue #869.
* ported nallocx support from Google-internal tcmallocAliaksey Kandratsenka2016-12-181-2/+3
| | | | | | | | | | | | | | | nallocx is extension introduced by jemalloc. It returns effective size of allocaiton without allocating anything. We also support MALLOCX_LG_ALIGN flag. But all other jemalloc flags (which at the moment do nothing for nallocx anyways) are silently ignored, since there is no sensible way to return errors in this API. This was originally contributed by Dmitry Vyukov with input from Andrew Hunter. But due to significant divergence of Google-internal and free-software forks of tcmalloc, significant massaging was done by me. So all bugs are mine.
* replace docs by docKirill Müller2016-11-191-43/+43
|
* Autogenerate ChangeLog from git on make distAliaksey Kandratsenka2016-06-251-2/+4
| | | | This fixes build breakage introduced in preceding commit for issue #796.
* added maybe_emergency_malloc.h to Makefile.amAliaksey Kandratsenka2016-02-211-0/+1
| | | | Because without this reference it isn't packaged by make dist.
* implemented emergency mallocAliaksey Kandratsenka2016-02-211-5/+19
| | | | | | Emergency malloc is enabled for cases when backtrace capturing needs to call malloc. In this case, we enable emergency malloc just prior to calling such code and disable it after it is done.
* implemented stacktrace capturing via libgcc's C++ ABI functionAliaksey Kandratsenka2016-02-201-0/+1
| | | | | | | | | | Particularly _Unwind_Backtrace which seems to be gcc extension. This is what glibc's backtrace is commonly is using. Using _Unwind_Backtrace directly is better than glibc's backtrace, since it doesn't call into dlopen. While glibc does dlopen when it is built as shared library apparently to avoid link-time dependency on libgcc_s.so
* added malloc_bench_shared_fullAliaksey Kandratsenka2016-02-061-0/+6
|
* support use of configure --docdir argumentChris Mayo2015-12-271-1/+0
| | | | | | | Value of docdir was being overridden in Makefile. Retain compatibility with old Autoconf versions that do not provide docdir.
* added binary_trees benchmarkAliaksey Kandratsenka2015-11-211-1/+12
|
* pass -fsized-deallocation to gcc 5Aliaksey Kandratsenka2015-11-211-0/+3
| | | | Otherwise it gives warning for declaration of sized delete operator.
* added more fastpath microbenchmarksAliaksey Kandratsenka2015-10-171-3/+8
| | | | | | | | | This also makes them output nicer results. I.e. every benchmark is run 3 times and iteration duration is printed for every run. While this is still very synthetic and unrepresentave of malloc performance as a whole, it is exercising more situations in tcmalloc fastpath. So it a step forward.
* drop cycleclockAliaksey Kandratsenka2015-10-051-1/+0
|
* dropped unused and unsupported synchronization profiling facilityAliaksey Kandratsenka2015-10-051-1/+0
| | | | | | | | Spinlock usage of cycle counter is due do tracking of time it's spent waiting for lock. But this tracking is only useful we actually have synchronization profiling working, which dont have. Thus I'm dropping calls to this facility with eye towards further removal of cycle clock usage.
* Don't link libtcmalloc_minimal.so to libpthread.soAliaksey Kandratsenka2015-10-051-5/+5
| | | | | | | | | So that LD_PRELOAD-ing doesn't force loading libpthread.so which may slow down some single-threaded apps. tcmalloc already has maybe_threads facility that can detect if libpthread.so is loaded (via weak symbols) and provide 'simulations' of some pthread functions that tcmalloc needs.
* added trivial malloc fast-path benchmarkAliaksey Kandratsenka2015-08-021-0/+12
| | | | | | While this is not good representation of real-world production malloc behavior, it is representative of length (instruction-wise and well as cycle-wise) of fast-path. So this is better than nothing.
* start building malloc_extension_c_test even with static linkingAliaksey Kandratsenka2014-12-211-7/+4
| | | | | Comment in Makefile.am stating that it doesn't work with static linking is not accurate anymore.
* added subdir-objects automake optionsAliaksey Kandratsenka2014-12-211-0/+1
| | | | This is suggested by automake itself regarding future-compat.
* implemented cpu-profiling mode that profiles threads separatelyAliaksey Kandratsenka2014-11-021-12/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Default mode of operation of cpu profiler uses itimer and SIGPROF. This timer is by definition per-process and no spec defines which thread is going to receive SIGPROF. And it provides correct profiles only if we assume that probability of picking threads will be proportional to cpu time spent by threads. It is easy to see, that recent Linux (at least on common SMP hardware) doesn't satisfy that assumption. Quite big skews of SIGPROF ticks between threads is visible. I.e. I could see as big as 70%/20% division instead of 50%/50% for pair of cpu-hog threads. (And I do see it become 50/50 with new mode) Fortunately POSIX provides mechanism to track per-thread cpu time via posix timers facility. And even more fortunately, Linux also provides mechanism to deliver timer ticks to specific threads. Interestingly, it looks like FreeBSD also has very similar facility and seems to suffer from same skew. But due to difference in a way how threads are identified, I haven't bothered to try to support this mode on FreeBSD. This commit implements new profiling mode where every thread creates posix timer which tracks thread's cpu time. Threads also also set up signal delivery to itself on overflows of that timer. This new mode requires every thread to be registered in cpu profiler. Existing ProfilerRegisterThread function is used for that. Because registering threads requires application support (or suitable LD_PRELOAD-able wrapper for thread creation API), new mode is off by default. And it has to be manually activated by setting environment variable CPUPROFILE_PER_THREAD_TIMERS. New mode also requires librt symbols to be available. Which we do not link to due to librt's dependency on libpthread. Which we avoid due to perf impact of bringing in libpthread to otherwise single-threaded programs. So it has to be either already loaded by profiling program or LD_PRELOAD-ed.
* issue-628:package missing stacktrace_powerpc-{linux,darwin}-inl.hAliaksey Kandratsenka2014-06-151-0/+2
| | | | | This headers were missing in .tar.gz because they were not mentioned anywhere in Makefile.am.
* issue-610: introduced TCMallocGetenvSafeAliaksey Kandratsenka2014-04-121-0/+1
| | | | This is version of GetenvBeforeMain that's available to C code.
* issue-604: implement runtime-selectable stacktrace capturingAliaksey Kandratsenka2014-02-161-1/+1
| | | | | We're now building all supported stacktrace capturing methods. And there's now a way to select at runtime which method is used.
* unbreak make distAliaksey Kandratsenka2014-02-161-0/+4
|
* issue-548: pass -fno-builtin to compiler for unittestsAliaksey Kandratsenka2014-01-181-17/+21
| | | | | | Because clang doesn't understand -fno-builtin-malloc and friends. And otherwise new/delete pairs get optimized away causing our tests that expect hooks to be called to fail.
* issue-592: handle recent mingw with C++11 threadsAliaksey Kandratsenka2014-01-041-0/+4
| | | | | | | | | Somehow it's c++ headers (like string) define pthread symbols without even us asking for. That breaks old assumption that pthread symbols are not available on windows. In order to fix that we detect this condition in configure.ac and avoid defining windows versions of pthread symbols.
* add uclibc supportxiaoyur3472013-12-201-1/+1
| | | | | | * some variables defined with "char *" should be modified to "const char*" * For uclibc, glibc's "void malloc_stats(void)" should be "void malloc_stats(FILE *)", is commented now. * For uclibc, __sbrk is with attribute "hidden", so we use mmap allocator for uclibc.
* issue-567: Allows for overriding system allocator on WindowsPetr Hosek2013-09-211-0/+1
| | | | | [alk@tut.by: minor changes to make mingw build work] Signed-off-by: Aliaksey Kandratsenka <alk@tut.by>
* issue-564: added atomic ops support for mips{,64}Aliaksey Kandratsenka2013-09-091-0/+1
| | | | | | | This merges patch contributed by Jovan Zelincevic. And with that patch tcmalloc build with --enable-minimal (just malloc replacement) appears to work (passes unit tests).
* add heap-profile-stats.h to dist .tar.gzAliaksey Kandratsenka2013-08-171-1/+2
|
* issue-368: test that we don't fragment large spans too badlyalkondratenko@gmail.com2013-05-061-0/+12
| | | | | | | | | | | This adds unit test that does essentially same things as code to reproduce bug in https://code.google.com/p/gperftools/issues/detail?id=368 git-svn-id: http://gperftools.googlecode.com/svn/trunk@212 6b5cf1ce-ec42-a296-1ba9-69fdba395a50
* issue-504: add AM_LDFLAGS to all *_la targetsalkondratenko@gmail.com2013-03-111-3/+3
| | | | | | | | | | | Because automake will not automatically add AM_LDFLAGS if there's per-target LDFLAGS. See their good info manual. This fixes .dll compilation of tcmalloc git-svn-id: http://gperftools.googlecode.com/svn/trunk@205 6b5cf1ce-ec42-a296-1ba9-69fdba395a50