summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* bump version to 2.10HEADgperftools-2.10masterAliaksey Kandratsenka2022-05-305-13/+43
|
* Remove basic support for Elbrus 2000 (e2k)Aliaksey Kandratsenka2022-05-304-6/+1
| | | | This reverts commit 3b1c60cc4ea737ff151977dbcd164c5e2eb859fb.
* avoid casting NULL to uinptr_tAliaksey Kandratsenka2022-05-301-1/+1
| | | | Which somehow fails to compile on musl. Fixes issue #1338.
* Add support for LoongArch.Jingyun Hua2022-02-087-8/+208
| | | | | | Only 64-bit is supported at the moment. Signed-off-by: Jingyun Hua <huajingyun@loongson.cn>
* ship cmake bits with tar.gz distributionAliaksey Kandratsenka2022-01-141-1/+2
| | | | Fixes issue #1321.
* free memory with mmap(PROT_NONE, MAP_FIXED)Volodymyr Nikolaichuk2021-12-121-6/+26
|
* Implement free_definite_sizeNatale Patriciello2021-12-121-1/+5
| | | | | | | | In Monterey, it seems that free_definite_size is required (despite the documentation saying that is optional). The implementation just forward the call to free. Signed-off-by: Natale Patriciello <natale.patriciello@gmail.com>
* fix cmake gperftools_enable_libunwind invalidstdpain2021-06-201-1/+1
|
* tcmalloc page fences: add TCMALLOC_PAGE_FENCE_READABLE optionRobert Scott2021-06-201-1/+6
|
* README: replace "golang" moniker with "Go"Matt T. Proud2021-06-201-1/+1
| | | | | | This commit replaces the "golang" moniker in the README file with the appropriate name of "Go" per https://golang.org/doc/faq#go_or_golang. In this context, no disambiguation is required.
* bump version to 2.9.1gperftools-2.9.1Aliaksey Kandratsenka2021-03-025-14/+26
|
* prefer backtrace() on OSXAliaksey Kandratsenka2021-02-283-4/+17
| | | | | It seems to work and _Unwind_Backtrace which is configured otherwise doesn't.
* Set tcmalloc heap limit prior to testing oomAliaksey Kandratsenka2021-02-282-0/+18
| | | | Otherwise it can take long time to OOM on osex.
* correctly check sized delete hint when asserts are onAliaksey Kandratsenka2021-02-284-35/+81
| | | | | | | | | | | | We previously tested wrong assumption that larger than page size size classes have addresses aligned on page size. New code is making proper check of size class. Also added is unit test coverage for this previously failing condition. And we now also run "assert-ful" unittests for big tcmalloc too, not only tcmalloc_minimal configuration. This fixes github issue #1254
* bump version to 2.9gperftools-2.9Aliaksey Kandratsenka2021-02-215-12/+28
|
* unbreak cmake buildAliaksey Kandratsenka2021-02-211-2/+1
| | | | | It was trying to use third_party/valgrind.h header which I recently removed.
* amputate various unused bits from elfcore.hAliaksey Kandratsenka2021-02-211-269/+3
|
* liberate profile handler from linux_syscall_supportAliaksey Kandratsenka2021-02-211-3/+3
| | | | We can get thread's tid in more portable way via libc syscall wrapper.
* liberate spinlock futex waits from linux_syscall_support includesAliaksey Kandratsenka2021-02-211-2/+3
| | | | We've been using libc syscall wrapper some time now.
* liberate malloc_hook_mmap_linux.h from linux_syscall_supportAliaksey Kandratsenka2021-02-211-4/+3
| | | | | It was not used some time now, as we're rightfully trusting libc syscall wrapper instead.
* add missing noopt wrappings around more operator new callsAliaksey Kandratsenka2021-02-211-4/+4
| | | | | This fixes tests passing on clang which otherwise eliminates those new/delete calls so checking for hooks being called failed.
* Fix thread-safety (annotalysis) annotationsVenkatesh Srinivas2021-02-174-14/+8
| | | | | | | | | | | | | | tcmalloc contains some thread-safety annotations; however those annotations have not been exercised for some time, as they used macros/attributes only supported by a legacy branch of gcc. Pull request #1251 converted those macros to support modern versions of clang; this CR fixes the annotations that were enabled. For the most part, this just requires re-enabling annotations on member functions that take/release locks. For the tcmalloc fork (pre-fork and post-fork) handlers, we mark the functions as exempt from this analysis, as it takes a dynamic number of locks.
* tcmalloc: Switch thread-safety annotations to support clangVenkatesh Srinivas2021-02-171-10/+8
| | | | | | | | | | | | | tcmalloc contains its own copy of thread_annotations.h, wrapper macros for static thread-safety analysis expressions. These thread- safety expressions allow asserting (at compile time) that certain locks are held or excluded or certain data is protected by specific locks; they are checked at compile-time by recent versions of clang or a gcc branch (https://gcc.gnu.org/wiki/ThreadSafetyAnnotation). Convert the #if-guard and macro names from the no-longer-supported gcc branch's defines & macros to the versions supported by recent versions of clang.
* bump version to 2.9rcgperftools-2.8.90Aliaksey Kandratsenka2021-02-145-11/+35
|
* upgrade test bot to xenial (ubuntu 16.04 LTS)Aliaksey Kandratsenka2021-02-141-1/+1
| | | | | | Older glibc seemingly doesn't have right unwind info for signal frame, so fails recently upgraded stacktrace_unittest. But since this version is not supported anymore, lets just test newer glibc.
* don't default to generic_fp without frame pointersAliaksey Kandratsenka2021-02-141-1/+3
| | | | I.e. on x86-64 and riscv.
* enable emergency_malloc on all architectures with mmapAliaksey Kandratsenka2021-02-141-6/+3
| | | | | | | | It is actually needed for libgcc backtracer from time to time. And we've seen libunwind to need it too. Plus we've not heard of any problems with it. So lets just always enable it. This should fix github issue #1248.
* prefer libunwind on x86-64 even with -fno-omit-frame-pointerAliaksey Kandratsenka2021-02-141-1/+1
| | | | | | | | | | | Libunwind is mostly safe on x86-64 and most of OS (e.g. libc) is compiled without frame pointers anyways. Even when libc is built with frame pointers, various libc asm routines (e.g. memcpy) are not. And even for code built with frame pointers we actually sometimes get SIGPROF inside function prologues, before frame pointer is established. Which then causes imperfect backtraces. Libunwind should handle this all (when it doesn't crash or deadlock).
* implement generic frame pointer backtracerAliaksey Kandratsenka2021-02-144-14/+394
| | | | | | | | This supports frame pointer backtracing on x86-64, aarch64 and riscv-s (should work for both 32 and 64 bits). Also added is detection of borked libunwind on aarch64-s. In this case frame pointer unwinder is preferred.
* always respect --enable-frame-pointersAliaksey Kandratsenka2021-02-144-112/+40
| | | | | | Previously it only was respected on x86_64, but this days lots of modern ABIs are without frame pointers by default (e.g. arm64 and riscv, and even older mips).
* add emacs mode line annotations to remaining filesAliaksey Kandratsenka2021-02-1420-3/+20
|
* delete-trailing-whitespace on all filesAliaksey Kandratsenka2021-02-14107-381/+381
|
* amputate unused dynamic annotations supportAliaksey Kandratsenka2021-02-1411-4600/+2
|
* don't check for snprintfAliaksey Kandratsenka2021-02-145-23/+0
|
* don't check for unused uname symbolAliaksey Kandratsenka2021-02-144-14/+0
|
* amputate unused SleepForMilliseconds from sysinfo.{h,cc}Aliaksey Kandratsenka2021-02-142-15/+0
|
* don't check for useless __builtin_stack_pointerAliaksey Kandratsenka2021-02-144-17/+0
| | | | It doesn't seem to be supported anyways, and we're not using it too.
* unbreak cmake check for TLS supportAliaksey Kandratsenka2021-02-141-1/+1
|
* don't bother checking for stl namespace and use stdAliaksey Kandratsenka2021-02-149-83/+8
| | | | Because there are no compilers left that don't do std namespace.
* use standard way to print size_t-sized intsAliaksey Kandratsenka2021-02-1414-104/+47
| | | | | | I.e. just use zu/zd/zx instead of finding out right size and defining PRI{u,x,d}S defines. Compilers have long caught up to this part of standard.
* amputate checking for __int64Aliaksey Kandratsenka2021-02-145-21/+0
| | | | Since everything supports stdint.h this days.
* amputate checking for conflict-signal.hAliaksey Kandratsenka2021-02-144-10/+0
| | | | It was never found or used.
* amputate checking for inline keyword supportAliaksey Kandratsenka2021-02-144-26/+0
| | | | It is supported everywhere now.
* profile-handler: use documented sigev_notify_thread_id in sigeventĐoàn Trần Công Danh2021-02-141-1/+16
| | | | | | | | | | | | | | | sigevent(7) is documented to have sigev_notify_thread_id as its member. In glibc system, it's a macro expanded to the legacy _sigev_un._tid, _sigev_un._tid is obviously an internal implementation detail as signaled by its underscore prefix. And this macro was hidden inside linux/signal.h in older version of glibc. On Linux that use musl libc, sigev_notify_thread_id is also a macro, but it's expanded to __sev_fields.sigev_notify_thread_id [alkondratenko@gmail.com: amputated broken linux/signal.h dependency] [alkondratenko@gmail.com: see https://github.com/gperftools/gperftools/pull/1250] Signed-off-by: Aliaksey Kandratsenka <alkondratenko@gmail.com>
* configure.ac: check for features.h onceĐoàn Trần Công Danh2021-02-141-2/+1
|
* atomicops: Remove Acquire_Store / Release_LoadVenkatesh Srinivas2021-02-1410-257/+0
| | | | | | | | | | gperftools' internal atomicops library included atomic Release Load and Acquire Store operations; those operations were unused and expressed ordering constraints that aren't expressible in the C++ standard memory model. Remove them, to make a transition to C++11 atomics easier and to avoid confusing use of them.
* Add support for Elbrus 2000 (e2k)SSE42021-01-304-1/+6
|
* syscall: Mark x8 as clobberedJarno Rajahalme2021-01-301-2/+2
| | | | | | | | | | | | | | | | | Mark arm64 register x8 as clobbered by syscall body inline assembly as it is being used to store the syscall number. Otherwise the compiler may try to use it for some other purpose. This fix is derived from a resolution to clang Bugzilla report https://bugs.llvm.org/show_bug.cgi?id=48798. See this report for a minimal reproducer derived from the code fixed here as well as the resolution. This should fix SEGFAULTs as reported in https://github.com/envoyproxy/envoy/issues/14756. Fixes: #1241 Signed-off-by: Jarno Rajahalme <jarno@covalent.io>
* bump version to 2.8.1gperftools-2.8.1Aliaksey Kandratsenka2020-12-205-12/+40
|
* add note that cmake build is preliminaryAliaksey Kandratsenka2020-12-191-1/+4
|