Commit Graph

34 Commits

Author SHA256 Message Date
c8cc694860 - update to 2.15:
* Mikael Simberg and Tom "spot" Callaway have pointed out the
    missing symbols issue when linking PPC or i386
    builds.
  * Roman Geissler has contributed a fix to nasty initialization
    bug introduced in 2.13 (see github issue #1452 for one example
    where it fails).
  * spinlock delay support now has proper windows support.
    Instead of simply sleeping, it uses WaitOnAddress (which is
    basically windows equivalent of futexes). This improvement was
    contributed by Lennox Ho.
  * we now have basic QNX support (basic malloc + heap profiler)
    championed by Xiang.Lin. Thanks! Do note, however, that QNX
    doesn't provide SIGPROF ticks, so there will be no cpu profiler
    support on this OS.
  * several people have contributed various improvements to our
    cmake build: Lennox Ho, Sergey Fedorov, Mateusz Jakub Fila. But
    do note that cmake build is still incomplete and best-effort.
  * Julian Schroeder have fixed generic_fp incompatibility with
    ARM pointer auth.
  * Mateusz Jakub Fila has contributed implementation of
    mallocinfo2 function (64-bit version of mallinfo).
  * Lennox Ho has contributed the ability to disable malloc
    functions patching on windows when TCMALLOC_DISABLE_REPLACEMENT=1
    environment variable is set.
  * User poljak181 has contributed a fix to infinite recursion in
    some cases of malloc hooks (or user-replaced operator new) and
    MallocExtension::instance().
  * Sergey Fedorov has contributed a fix to use MAP_ANON on some
    older OSes without MAP_ANONYMOUS.

OBS-URL: https://build.opensuse.org/package/show/devel:libraries:c_c++/gperftools?expand=0&rev=66
2024-01-28 12:34:53 +00:00
Paolo Stivanin
f223ab0b02 Accepting request 1114279 from home:polslinux:branches:devel:libraries:c_c++
- Update to 2.13:
  * generic_fp backtracing method now uses robust address probing method.
    The previous approach had occasional false positives, which caused
    occasional rare crashes.
  * fix pkg-config files
  * we now support HEAPPROFILE_USE_PID and CPUPROFILE_USE_PID environment
    variables that force profile filenames to have pid appended.
    Which will be useful for some programs that fork for parallelism
  * MPI detection has been extended

OBS-URL: https://build.opensuse.org/request/show/1114279
OBS-URL: https://build.opensuse.org/package/show/devel:libraries:c_c++/gperftools?expand=0&rev=64
2023-11-07 12:07:15 +00:00
75a8191ff4 Accepting request 988187 from home:gmbr3:Active
- Update to 2.10:
  * Added debugallocator feature to use readable (PROT_READ) fence pages.
  * fix for cmake detection of libunwind.
  * fix for OSX Monterey support.
  * support for returning memory back to OS by using mmap with MAP_FIXED and PROT_NONE
  * basic support for LoongArch.

OBS-URL: https://build.opensuse.org/request/show/988187
OBS-URL: https://build.opensuse.org/package/show/devel:libraries:c_c++/gperftools?expand=0&rev=62
2022-07-11 05:59:55 +00:00
f71442e952 Accepting request 975769 from openSUSE:Factory:RISCV
- Enable use of libunwind on riscv64

OBS-URL: https://build.opensuse.org/request/show/975769
OBS-URL: https://build.opensuse.org/package/show/devel:libraries:c_c++/gperftools?expand=0&rev=60
2022-05-09 11:08:10 +00:00
c179d70c11 Accepting request 894994 from home:gmbr3:Active
- Follow shared library packaging policy

OBS-URL: https://build.opensuse.org/request/show/894994
OBS-URL: https://build.opensuse.org/package/show/devel:libraries:c_c++/gperftools?expand=0&rev=58
2021-06-02 11:22:26 +00:00
4e4b5db4de Accepting request 879979 from home:gmbr3:Chromium
- Update to 2.9.1:
  * usage of unsupportable linux_syscall_support.h has been
    removed from few places.
  * Incorrect assertion failure was fixed that crashed tcmalloc
    if assertions were on and sized delete was used
  * there is now better backtracing support for aarch64 and riscv
    x86-64 with frame pointers now also defaults to this new
    "generic" frame pointer backtracer.
- Use golang version of pprof
- Split doc into subpackage

OBS-URL: https://build.opensuse.org/request/show/879979
OBS-URL: https://build.opensuse.org/package/show/devel:libraries:c_c++/gperftools?expand=0&rev=56
2021-03-23 11:03:22 +00:00
7c2e8be7f5 Accepting request 861795 from home:Andreas_Schwab:Factory
- Enable build on riscv64
- No libunwind-coredump on powerpc

OBS-URL: https://build.opensuse.org/request/show/861795
OBS-URL: https://build.opensuse.org/package/show/devel:libraries:c_c++/gperftools?expand=0&rev=54
2021-01-09 16:27:21 +00:00
58bd55d836 Accepting request 860400 from home:polslinux:branches:devel:libraries:c_c++
- Update to 2.8.1:
  * previous release contained change to release memory without page
    heap lock, but this change had at least one bug that caused to
    crashes and corruption when running under aggressive decommit mode
    (this is not default). While we check for other bugs, this feature
    was reverted. See github issue #1204 and issue #1227.
  * stack traces depth captured by gperftools is now up to 254 levels
    deep
  * updated detection of program counter
  * ProfilerGetStackTrace is now officially supported API for
    libprofiler
  * for compiling linux syscall support on i386 and recent GCCs
  * test failures caused by new gcc 10 optimizations were fixed. Same
    change also fixed tests on clang.
- Drop ppc64-fix-367fd5731a8c68225cb870aa656ea0ce677fe040.patch
- Drop gcc-dont-clobber-rsp.patch

OBS-URL: https://build.opensuse.org/request/show/860400
OBS-URL: https://build.opensuse.org/package/show/devel:libraries:c_c++/gperftools?expand=0&rev=52
2021-01-06 13:57:49 +00:00
1bdce6cf53 Accepting request 832393 from home:jengelh:branches:devel:libraries:c_c++
- Add ExclusiveArch declaration to specfile.

OBS-URL: https://build.opensuse.org/request/show/832393
OBS-URL: https://build.opensuse.org/package/show/devel:libraries:c_c++/gperftools?expand=0&rev=50
2020-09-08 08:47:09 +00:00
5fe45b2f1f Accepting request 720448 from home:marxin:static
Use FAT LTO objects in order to provide proper static library.

OBS-URL: https://build.opensuse.org/request/show/720448
OBS-URL: https://build.opensuse.org/package/show/devel:libraries:c_c++/gperftools?expand=0&rev=48
2019-08-02 08:28:23 +00:00
39fe45417f Accepting request 682171 from home:marxin:branches:devel:libraries:c_c++
- Add ppc64-fix-367fd5731a8c68225cb870aa656ea0ce677fe040.patch
  in order to address power targets.
- Update to version 2.7:
  * bug in span stats printing introduced by new scalable page heap
    change was fixed.
  * Christoph Müllner has contributed couple warnings fixes and
    initial support for aarch64_ilp32 architecture.
  * Ben Dang contributed documentation fix for heap checker.
  * Fabrice Fontaine contributed fixed for linking benchmarks
    with --disable-static.
  * Holy Wu has added sized deallocation unit tests.
  * Holy Wu has enabled support of sized deallocation (c++14)
    on recent MSVC.
  * Holy Wu has fixed MSVC build in WIN32_OVERRIDE_ALLOCATORS
    mode. This closed issue #716.
  * Holy Wu has contributed cleanup of config.h used on windows.
  * Mao Huang has contributed couple simple tcmalloc changes from
    chromium code base. Making our tcmalloc forks a tiny bit closer.
  * issue #946 that caused compilation failures on some Linux
    clang installations has been fixed. Much thanks to github
    user htuch for helping to diagnose issue and proposing a fix.
  * Tulio Magno Quites Machado Filho has contributed build-time
    fix for PPC (for problem introduced in one of commits
    since RC).
- Add gcc-dont-clobber-rsp.patch (bsc#1121265).
- Remove ucontext.patch, gperftools-s390.patch
  and gperftools-aarch64.patch patches.

OBS-URL: https://build.opensuse.org/request/show/682171
OBS-URL: https://build.opensuse.org/package/show/devel:libraries:c_c++/gperftools?expand=0&rev=46
2019-03-10 16:30:14 +00:00
e2982df042 Accepting request 616313 from home:mrostecki:branches:devel:libraries:c_c++
- Add devel-static package, which is needed for building Envoy
  (https://www.envoyproxy.io/) and Cilium with Envoy integration

OBS-URL: https://build.opensuse.org/request/show/616313
OBS-URL: https://build.opensuse.org/package/show/devel:libraries:c_c++/gperftools?expand=0&rev=44
2018-06-15 07:05:44 +00:00
Ismail Dönmez
d4a2b78306 Accepting request 590932 from home:oertel:branches:devel:libraries:c_c++
- add patch gperftools-aarch64.patch (bsc#1086762)
  (analog upstream commit 02eeed29df112728564a5dde6417fa4622b57a06)
  fix build on aarch64 by removing conflicting mmap definition

OBS-URL: https://build.opensuse.org/request/show/590932
OBS-URL: https://build.opensuse.org/package/show/devel:libraries:c_c++/gperftools?expand=0&rev=42
2018-03-26 10:20:20 +00:00
4ca1dbbc7d Accepting request 587182 from home:oertel:branches:devel:libraries:c_c++
- add patch gperftools-s390.patch to fix build on s390
  (bnc#1085398)
  (basically git commit bf8eacce69df877d1cecdab8c7a6cc3f218ebcc2)

- do not buildrequire valgrind on s390, only exists on s390x

OBS-URL: https://build.opensuse.org/request/show/587182
OBS-URL: https://build.opensuse.org/package/show/devel:libraries:c_c++/gperftools?expand=0&rev=40
2018-03-15 07:46:23 +00:00
d0865dd698 Accepting request 515873 from home:Andreas_Schwab:Factory
- ucontext.patch: fix use of ucontext_t

OBS-URL: https://build.opensuse.org/request/show/515873
OBS-URL: https://build.opensuse.org/package/show/devel:libraries:c_c++/gperftools?expand=0&rev=38
2017-08-14 08:03:09 +00:00
61c9d3f748 Accepting request 484798 from home:fcrozat:branches:devel:libraries:c_c++
- Don't BuildRequires libunwind-devel on s390*, it doesn't exist
  there.

OBS-URL: https://build.opensuse.org/request/show/484798
OBS-URL: https://build.opensuse.org/package/show/devel:libraries:c_c++/gperftools?expand=0&rev=36
2017-04-04 11:45:28 +00:00
Ismail Dönmez
e706f61966 Accepting request 416538 from home:jirislaby:branches:devel:libraries:c_c++
- use valgrind from system, not the custom one

OBS-URL: https://build.opensuse.org/request/show/416538
OBS-URL: https://build.opensuse.org/package/show/devel:libraries:c_c++/gperftools?expand=0&rev=34
2016-08-03 07:13:20 +00:00
Ismail Dönmez
cf5d75d444 Accepting request 378318 from home:ganglia:branches:devel:libraries:c_c++
Update to gperftools 2.5, released 12 March 2016

OBS-URL: https://build.opensuse.org/request/show/378318
OBS-URL: https://build.opensuse.org/package/show/devel:libraries:c_c++/gperftools?expand=0&rev=31
2016-03-23 07:50:50 +00:00
Ismail Dönmez
9ee6e8c644 Accepting request 341816 from home:pluskalm:branches:devel:libraries:c_c++
- Update project and download url
- Tiny spec file cleanup with spec-cleaner

OBS-URL: https://build.opensuse.org/request/show/341816
OBS-URL: https://build.opensuse.org/package/show/devel:libraries:c_c++/gperftools?expand=0&rev=29
2015-10-31 14:05:02 +00:00
Michal Vyskocil
15145287ff Accepting request 280951 from home:ganglia:perftools-2.4
- gperftools 2.4, available 10 Jan 2015.
  Skipped version 2.3, release 7 Dec 2014.
  Changes for version 2.4
  * enabled aggressive decommit option by default. It was found to 
    significantly improve memory fragmentation with negligible impact 
    on performance. (Thanks to investigation work performed by Adhemerval 
    Zanella) 
  * added ./configure flags for tcmalloc pagesize and tcmalloc allocation 
    alignment. Larger page sizes have been reported to improve performance 
    occasionally. (Patch by Raphael Moreira Zinsly) 
  * sped-up hot-path of malloc/free. By about 5% on static library and 
    about 10% on shared library. Mainly due to more efficient checking 
    of malloc hooks. 
  * improved accuracy of stacktrace capturing in cpu profiler (due to 
    issue found by Arun Sharma). As part of that issue pprof's handling 
    of cpu profiles was also improved. 
- Removed missing_includes.patch; incorporated upstream.

old: devel:libraries:c_c++/gperftools
new: home:ganglia:perftools-2.4/gperftools rev 3
Index: gperftools.changes
===================================================================
--- gperftools.changes (revision 26)
+++ gperftools.changes (revision 3)
@@ -1,4 +1,60 @@
 -------------------------------------------------------------------
+Mon Jan 10 16:30:24 UTC 2015 - cgardner@suse.com
+
+- gperftools 2.4, available 10 Jan 2015.
+  Skipped version 2.3, release 7 Dec 2014. 2.3 changes included:
+  * ( issue 631 ) fixed debugallocation miscompilation on mmap-less 
+    platforms (courtesy of user iamxujian) 
+  * ( issue 630 ) reference to wrong PROFILE (vs. correct CPUPROFILE) 
+    environment variable was fixed (courtesy of WenSheng He) 
+  * pprof now has option to display stack traces in output for heap 
+    checker (courtesy of Michael Pasieka) 
+  * ( issue 636 ) pprof web command now works on mingw 
+  * ( issue 635 ) pprof now handles library paths that contain spaces 
+    (courtesy of user mich...@sebesbefut.com) 
+  * ( issue 637 ) pprof now has an option to not strip template 
+    arguments (patch by jiakai) 
+  * ( issue 644 ) possible out-of-bounds access in GetenvBeforeMain 
+    was fixed (thanks to user abyss.7) 
+  * ( issue 641 ) pprof now has an option --show_addresses (thanks to 
+    user yurivict). New option prints instruction address in addition 
+    to function name in stack traces 
+  * ( issue 646 ) pprof now works around some issues of addr2line 
+    reportedly when DWARF v4 format is used (patch by Adam McNeeney) 
+  * ( issue 645 ) heap profiler exit message now includes remaining 
+    memory allocated info (patch by user yurivict) 
+  * pprof code that finds location of /proc/pid/maps in cpu profile 
+    files is now fixed (patch by Ricardo M. Correia) 
+  * ( issue 654 ) pprof now handles "split text segments" feature of 
+    Chromium for Android (patch by simonb) 
+  * ( issue 655 ) potential deadlock on windows caused by early call 
+    to getenv in malloc initialization code was fixed (bug reported 
+    and fix proposed by user zndmitry) 
+  * incorrect detection of arm 6zk instruction set support 
+    (-mcpu=arm1176jzf-s) was fixed. (Reported by pedronavf on old issue-493) 
+  * new cpu profiling mode on Linux is now implemented. It sets up separate 
+    profiling timers for separate threads. Which improves accuracy of 
+    profiling on Linux a lot. It is off by default. And is enabled if both 
+    librt.f is loaded and CPUPROFILE_PER_THREAD_TIMERS environment 
+    variable is set. But note that all threads need to be registered 
+    via ProfilerRegisterThread. 
+  Changes for version 2.4~rc
+  * enabled aggressive decommit option by default. It was found to 
+    significantly improve memory fragmentation with negligible impact 
+    on performance. (Thanks to investigation work performed by Adhemerval 
+    Zanella) 
+  * added ./configure flags for tcmalloc pagesize and tcmalloc allocation 
+    alignment. Larger page sizes have been reported to improve performance 
+    occasionally. (Patch by Raphael Moreira Zinsly) 
+  * sped-up hot-path of malloc/free. By about 5% on static library and 
+    about 10% on shared library. Mainly due to more efficient checking 
+    of malloc hooks. 
+  * improved accuracy of stacktrace capturing in cpu profiler (due to 
+    issue found by Arun Sharma). As part of that issue pprof's handling 
+    of cpu profiles was also improved. 
+- Removed missing_includes.patch; incorporated upstream.
+
+-------------------------------------------------------------------
 Sun Sep 28 18:44:03 UTC 2014 - jengelh@inai.de
 
 - Implement shlib packaging guidelines: split libraries
Index: gperftools.spec
===================================================================
--- gperftools.spec (revision 26)
+++ gperftools.spec (revision 3)
@@ -15,9 +15,8 @@
 # Please submit bugfixes or comments via http://bugs.opensuse.org/
 #
 
-
 Name:           gperftools
-Version:        2.2
+Version:        2.4
 Release:        0
 Summary:        Performance Tools for C++
 License:        BSD-3-Clause
@@ -28,8 +27,6 @@
 Patch4:         %{name}-fix_docdir.patch
 Patch12:        %{name}_fix_unassigned_malloc_in_unittest.patch
 Patch14:        %{name}_gcc46.patch
-#PATCH-FIX-UPSTREAM https://code.google.com/p/gperftools/issues/detail?id=268
-Patch15:        missing_includes.patch
 BuildRequires:  autoconf >= 2.59
 BuildRequires:  automake
 BuildRequires:  gcc-c++
@@ -82,7 +79,6 @@
 %patch4 -p1
 %patch12 -p1
 %patch14 -p1
-%patch15 -p1
 
 %build
 autoreconf -fi
@@ -109,7 +105,6 @@
 %files -n libprofiler0
 %defattr(-,root,root)
 %_libdir/libprofiler.so.0*
-# %_libdir/libstacktrace.so.0*   # libstacktrace.so got removed in 0.96
 
 %files -n libtcmalloc4
 %defattr(-,root,root)
@@ -124,8 +119,6 @@
 %_includedir/google
 %_includedir/gperftools
 %_libdir/libprofiler.so
-# %_libdir/libstacktrace.*a    # libstacktrace.so got removed in 0.96
-# %_libdir/libstacktrace.so    # libstacktrace.so got removed in 0.96
 %_libdir/libtcmalloc.so
 %_libdir/libtcmalloc_debug.so
 %_libdir/libtcmalloc_minimal.so
Index: gperftools-2.4.tar.gz
===================================================================
Binary files gperftools-2.4.tar.gz (revision 3) added
Index: gperftools-2.2.tar.gz
===================================================================
Binary files gperftools-2.2.tar.gz (revision 26) deleted
Index: missing_includes.patch
===================================================================
--- missing_includes.patch (revision 26)
+++ missing_includes.patch (deleted)
@@ -1,415 +0,0 @@
-commit 75b65f96b0bb44d70e0a461a03a3f8c928390283
-Author: Raphael Moreira Zinsly <rzinsly@linux.vnet.ibm.com>
-Date:   Tue Apr 8 17:45:13 2014 -0300
-
-    PowerPC: stacktrace function refactor and fixes
-    
-    This patch fixes the stacktrace creating when the function is
-    interrupted by a signal. For Linux, the vDSO signal trampoline symbol is
-    compared against LR from stack backchain and handled different in that
-    case (since the signal trampoline layout a different stack frame).
-    
-    Because of this extensive change the PowerPC stacktrace code has now
-    been refactored to split in Linux and Darwin specific codes.
-
-diff --git a/src/stacktrace_powerpc-darwin-inl.h b/src/stacktrace_powerpc-darwin-inl.h
-new file mode 100644
-index 0000000..c4c2edb
---- /dev/null
-+++ b/src/stacktrace_powerpc-darwin-inl.h
-@@ -0,0 +1,158 @@
-+// Copyright (c) 2007, Google Inc.
-+// All rights reserved.
-+//
-+// Redistribution and use in source and binary forms, with or without
-+// modification, are permitted provided that the following conditions are
-+// met:
-+//
-+//     * Redistributions of source code must retain the above copyright
-+// notice, this list of conditions and the following disclaimer.
-+//     * Redistributions in binary form must reproduce the above
-+// copyright notice, this list of conditions and the following disclaimer
-+// in the documentation and/or other materials provided with the
-+// distribution.
-+//     * Neither the name of Google Inc. nor the names of its
-+// contributors may be used to endorse or promote products derived from
-+// this software without specific prior written permission.
-+//
-+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-+
-+// ---
-+// Produce stack trace.  ABI documentation reference can be found at:
-+// * PowerPC32 ABI: https://www.power.org/documentation/
-+// power-architecture-32-bit-abi-supplement-1-0-embeddedlinuxunified/
-+// * PowerPC64 ABI:
-+// http://www.linux-foundation.org/spec/ELF/ppc64/PPC-elf64abi-1.9.html#STACK
-+
-+#ifndef BASE_STACKTRACE_POWERPC_INL_H_
-+#define BASE_STACKTRACE_POWERPC_INL_H_
-+// Note: this file is included into stacktrace.cc more than once.
-+// Anything that should only be defined once should be here:
-+
-+#include <stdint.h>   // for uintptr_t
-+#include <stdlib.h>   // for NULL
-+#include <gperftools/stacktrace.h>
-+
-+// Given a pointer to a stack frame, locate and return the calling
-+// stackframe, or return NULL if no stackframe can be found. Perform sanity
-+// checks (the strictness of which is controlled by the boolean parameter
-+// "STRICT_UNWINDING") to reduce the chance that a bad pointer is returned.
-+template<bool STRICT_UNWINDING>
-+static void **NextStackFrame(void **old_sp) {
-+  void **new_sp = (void **) *old_sp;
-+
-+  // Check that the transition from frame pointer old_sp to frame
-+  // pointer new_sp isn't clearly bogus
-+  if (STRICT_UNWINDING) {
-+    // With the stack growing downwards, older stack frame must be
-+    // at a greater address that the current one.
-+    if (new_sp <= old_sp) return NULL;
-+    // Assume stack frames larger than 100,000 bytes are bogus.
-+    if ((uintptr_t)new_sp - (uintptr_t)old_sp > 100000) return NULL;
-+  } else {
-+    // In the non-strict mode, allow discontiguous stack frames.
-+    // (alternate-signal-stacks for example).
-+    if (new_sp == old_sp) return NULL;
-+    // And allow frames upto about 1MB.
-+    if ((new_sp > old_sp)
-+        && ((uintptr_t)new_sp - (uintptr_t)old_sp > 1000000)) return NULL;
-+  }
-+  if ((uintptr_t)new_sp & (sizeof(void *) - 1)) return NULL;
-+  return new_sp;
-+}
-+
-+// This ensures that GetStackTrace stes up the Link Register properly.
-+void StacktracePowerPCDummyFunction() __attribute__((noinline));
-+void StacktracePowerPCDummyFunction() { __asm__ volatile(""); }
-+#endif  // BASE_STACKTRACE_POWERPC_INL_H_
-+
-+// Note: this part of the file is included several times.
-+// Do not put globals below.
-+
-+// The following 4 functions are generated from the code below:
-+//   GetStack{Trace,Frames}()
-+//   GetStack{Trace,Frames}WithContext()
-+//
-+// These functions take the following args:
-+//   void** result: the stack-trace, as an array
-+//   int* sizes: the size of each stack frame, as an array
-+//               (GetStackFrames* only)
-+//   int max_depth: the size of the result (and sizes) array(s)
-+//   int skip_count: how many stack pointers to skip before storing in result
-+//   void* ucp: a ucontext_t* (GetStack{Trace,Frames}WithContext only)
-+int GET_STACK_TRACE_OR_FRAMES {
-+  void **sp;
-+  // Apple OS X uses an old version of gnu as -- both Darwin 7.9.0 (Panther)
-+  // and Darwin 8.8.1 (Tiger) use as 1.38.  This means we have to use a
-+  // different asm syntax.  I don't know quite the best way to discriminate
-+  // systems using the old as from the new one; I've gone with __APPLE__.
-+  // TODO(csilvers): use autoconf instead, to look for 'as --version' == 1 or 2
-+  __asm__ volatile ("mr %0,r1" : "=r" (sp));
-+
-+  // On PowerPC, the "Link Register" or "Link Record" (LR), is a stack
-+  // entry that holds the return address of the subroutine call (what
-+  // instruction we run after our function finishes).  This is the
-+  // same as the stack-pointer of our parent routine, which is what we
-+  // want here.  While the compiler will always(?) set up LR for
-+  // subroutine calls, it may not for leaf functions (such as this one).
-+  // This routine forces the compiler (at least gcc) to push it anyway.
-+  StacktracePowerPCDummyFunction();
-+
-+#if IS_STACK_FRAMES
-+  // Note we do *not* increment skip_count here for the SYSV ABI.  If
-+  // we did, the list of stack frames wouldn't properly match up with
-+  // the list of return addresses.  Note this means the top pc entry
-+  // is probably bogus for linux/ppc (and other SYSV-ABI systems).
-+#else
-+  // The LR save area is used by the callee, so the top entry is bogus.
-+  skip_count++;
-+#endif
-+
-+  int n = 0;
-+  while (sp && n < max_depth) {
-+    // The GetStackFrames routine is called when we are in some
-+    // informational context (the failure signal handler for example).
-+    // Use the non-strict unwinding rules to produce a stack trace
-+    // that is as complete as possible (even if it contains a few
-+    // bogus entries in some rare cases).
-+    void **next_sp = NextStackFrame<!IS_STACK_FRAMES>(sp);
-+
-+    if (skip_count > 0) {
-+      skip_count--;
-+    } else {
-+      // PowerPC has 3 main ABIs, which say where in the stack the
-+      // Link Register is.  For DARWIN and AIX (used by apple and
-+      // linux ppc64), it's in sp[2].  For SYSV (used by linux ppc),
-+      // it's in sp[1].
-+#if defined(__PPC64__)
-+      // This check is in case the compiler doesn't define _CALL_AIX/etc.
-+      result[n] = *(sp+2);
-+#elif defined(__linux)
-+      // This check is in case the compiler doesn't define _CALL_SYSV.
-+      result[n] = *(sp+1);
-+#endif
-+
-+#if IS_STACK_FRAMES
-+      if (next_sp > sp) {
-+        sizes[n] = (uintptr_t)next_sp - (uintptr_t)sp;
-+      } else {
-+        // A frame-size of 0 is used to indicate unknown frame size.
-+        sizes[n] = 0;
-+      }
-+#endif
-+      n++;
-+    }
-+    sp = next_sp;
-+  }
-+  return n;
-+}
-diff --git a/src/stacktrace_powerpc-linux-inl.h b/src/stacktrace_powerpc-linux-inl.h
-new file mode 100644
-index 0000000..5d16fa1
---- /dev/null
-+++ b/src/stacktrace_powerpc-linux-inl.h
-@@ -0,0 +1,231 @@
-+// -*- Mode: C++; c-basic-offset: 2; indent-tabs-mode: nil -*-
-+// Copyright (c) 2007, Google Inc.
-+// All rights reserved.
-+//
-+// Redistribution and use in source and binary forms, with or without
-+// modification, are permitted provided that the following conditions are
-+// met:
-+//
-+//     * Redistributions of source code must retain the above copyright
-+// notice, this list of conditions and the following disclaimer.
-+//     * Redistributions in binary form must reproduce the above
-+// copyright notice, this list of conditions and the following disclaimer
-+// in the documentation and/or other materials provided with the
-+// distribution.
-+//     * Neither the name of Google Inc. nor the names of its
-+// contributors may be used to endorse or promote products derived from
-+// this software without specific prior written permission.
-+//
-+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-+
-+// ---
-+// Author: Craig Silverstein
-+//
-+// Produce stack trace.  ABI documentation reference can be found at:
-+// * PowerPC32 ABI: https://www.power.org/documentation/
-+// power-architecture-32-bit-abi-supplement-1-0-embeddedlinuxunified/
-+// * PowerPC64 ABI:
-+// http://www.linux-foundation.org/spec/ELF/ppc64/PPC-elf64abi-1.9.html#STACK
-+
-+#ifndef BASE_STACKTRACE_POWERPC_INL_H_
-+#define BASE_STACKTRACE_POWERPC_INL_H_
-+// Note: this file is included into stacktrace.cc more than once.
-+// Anything that should only be defined once should be here:
-+
-+#include <stdint.h>   // for uintptr_t
-+#include <stdlib.h>   // for NULL
-+#include <gperftools/stacktrace.h>
-+#include <base/vdso_support.h>
-+
-+#if defined(HAVE_SYS_UCONTEXT_H)
-+#include <sys/ucontext.h>
-+#elif defined(HAVE_UCONTEXT_H)
-+#include <ucontext.h>  // for ucontext_t
-+#endif
-+typedef ucontext ucontext_t;
-+
-+// PowerPC64 Little Endian follows BE wrt. backchain, condition register,
-+// and LR save area, so no need to adjust the reading struct.
-+struct layout_ppc {
-+  struct layout_ppc *next;
-+#ifdef __PPC64__
-+  long condition_register;
-+#endif
-+  void *return_addr;
-+};
-+
-+// Signal callbacks are handled by the vDSO symbol:
-+//
-+// * PowerPC64 Linux (arch/powerpc/kernel/vdso64/sigtramp.S):
-+//   __kernel_sigtramp_rt64
-+// * PowerPC32 Linux (arch/powerpc/kernel/vdso32/sigtramp.S):
-+//   __kernel_sigtramp32
-+//   __kernel_sigtramp_rt32
-+//
-+// So a backtrace may need to specially handling if the symbol readed is
-+// the signal trampoline.
-+
-+// Given a pointer to a stack frame, locate and return the calling
-+// stackframe, or return NULL if no stackframe can be found. Perform sanity
-+// checks (the strictness of which is controlled by the boolean parameter
-+// "STRICT_UNWINDING") to reduce the chance that a bad pointer is returned.
-+template<bool STRICT_UNWINDING>
-+static layout_ppc *NextStackFrame(layout_ppc *current) {
-+  uintptr_t old_sp = (uintptr_t)(current);
-+  uintptr_t new_sp = (uintptr_t)(current->next);
-+
-+  // Check that the transition from frame pointer old_sp to frame
-+  // pointer new_sp isn't clearly bogus
-+  if (STRICT_UNWINDING) {
-+    // With the stack growing downwards, older stack frame must be
-+    // at a greater address that the current one.
-+    if (new_sp <= old_sp)
-+      return NULL;
-+    // Assume stack frames larger than 100,000 bytes are bogus.
-+    if (new_sp - old_sp > 100000)
-+      return NULL;
-+  } else {
-+    // In the non-strict mode, allow discontiguous stack frames.
-+    // (alternate-signal-stacks for example).
-+    if (new_sp == old_sp)
-+      return NULL;
-+    // And allow frames upto about 1MB.
-+    if ((new_sp > old_sp) && (new_sp - old_sp > 1000000))
-+      return NULL;
-+  }
-+  if (new_sp & (sizeof(void *) - 1))
-+    return NULL;
-+  return current->next;
-+}
-+
-+// This ensures that GetStackTrace stes up the Link Register properly.
-+void StacktracePowerPCDummyFunction() __attribute__((noinline));
-+void StacktracePowerPCDummyFunction() { __asm__ volatile(""); }
-+#endif  // BASE_STACKTRACE_POWERPC_INL_H_
-+
-+// Note: this part of the file is included several times.
-+// Do not put globals below.
-+
-+// Load instruction used on top-of-stack get.
-+#if defined(__PPC64__) || defined(__LP64__)
-+# define LOAD "ld"
-+#else
-+# define LOAD "lwz"
-+#endif
-+
-+// The following 4 functions are generated from the code below:
-+//   GetStack{Trace,Frames}()
-+//   GetStack{Trace,Frames}WithContext()
-+//
-+// These functions take the following args:
-+//   void** result: the stack-trace, as an array
-+//   int* sizes: the size of each stack frame, as an array
-+//               (GetStackFrames* only)
-+//   int max_depth: the size of the result (and sizes) array(s)
-+//   int skip_count: how many stack pointers to skip before storing in result
-+//   void* ucp: a ucontext_t* (GetStack{Trace,Frames}WithContext only)
-+static int GET_STACK_TRACE_OR_FRAMES {
-+  layout_ppc *current;
-+  int n;
-+
-+  // Get the address on top-of-stack
-+  current = reinterpret_cast<layout_ppc*> (__builtin_frame_address (0));
-+  // And ignore the current symbol
-+  current = current->next;
-+
-+  StacktracePowerPCDummyFunction();
-+
-+  n = 0;
-+  skip_count++; // skip parent's frame due to indirection in
-+                // stacktrace.cc
-+
-+  base::VDSOSupport vdso;
-+  base::ElfMemImage::SymbolInfo rt_sigreturn_symbol_info;
-+#ifdef __PPC64__
-+  const void *sigtramp64_vdso = 0;
-+  if (vdso.LookupSymbol("__kernel_sigtramp_rt64", "LINUX_2.6.15", STT_NOTYPE,
-+                        &rt_sigreturn_symbol_info))
-+    sigtramp64_vdso = rt_sigreturn_symbol_info.address;
-+#else
-+  const void *sigtramp32_vdso = 0;
-+  if (vdso.LookupSymbol("__kernel_sigtramp32", "LINUX_2.6.15", STT_NOTYPE,
-+                        &rt_sigreturn_symbol_info))
-+    sigtramp32_vdso = rt_sigreturn_symbol_info.address;
-+  const void *sigtramp32_rt_vdso = 0;
-+  if (vdso.LookupSymbol("__kernel_sigtramp_rt32", "LINUX_2.6.15", STT_NOTYPE,
-+                        &rt_sigreturn_symbol_info))
-+    sigtramp32_rt_vdso = rt_sigreturn_symbol_info.address;
-+#endif
-+
-+  while (current && n < max_depth) {
-+
-+    // The GetStackFrames routine is called when we are in some
-+    // informational context (the failure signal handler for example).
-+    // Use the non-strict unwinding rules to produce a stack trace
-+    // that is as complete as possible (even if it contains a few
-+    // bogus entries in some rare cases).
-+    layout_ppc *next = NextStackFrame<!IS_STACK_FRAMES>(current);
-+    if (skip_count > 0) {
-+      skip_count--;
-+    } else {
-+      result[n] = current->return_addr;
-+#ifdef __PPC64__
-+      if (sigtramp64_vdso && (sigtramp64_vdso == current->return_addr)) {
-+        struct signal_frame_64 {
-+          char dummy[128];
-+          ucontext_t uc;
-+        // We don't care about the rest, since the IP value is at 'uc' field.
-+        } *sigframe = reinterpret_cast<signal_frame_64*>(current);
-+        result[n] = (void*) sigframe->uc.uc_mcontext.gp_regs[PT_NIP];
-+      }
-+#else
-+      if (sigtramp32_vdso && (sigtramp32_vdso == current->return_addr)) {
-+        struct signal_frame_32 {
-+          char dummy[64];
-+          struct sigcontext sctx;
-+          mcontext_t mctx;
-+          // We don't care about the rest, since IP value is at 'mctx' field.
-+        } *sigframe = reinterpret_cast<signal_frame_32*>(current);
-+        result[n] = (void*) sigframe->mctx.gregs[PT_NIP];
-+      } else if (sigtramp32_rt_vdso && (sigtramp32_rt_vdso == current->return_addr)) {
-+        struct rt_signal_frame_32 {
-+          char dummy[64 + 16];
-+          siginfo_t info;
-+          struct ucontext uc;
-+          // We don't care about the rest, since IP value is at 'uc' field.A
-+        } *sigframe = reinterpret_cast<rt_signal_frame_32*>(current);
-+        result[n] = (void*) sigframe->uc.uc_mcontext.uc_regs->gregs[PT_NIP];
-+      }
-+#endif
-+
-+#if IS_STACK_FRAMES
-+      if (next > current) {
-+        sizes[n] = (uintptr_t)next - (uintptr_t)current;
-+      } else {
-+        // A frame-size of 0 is used to indicate unknown frame size.
-+        sizes[n] = 0;
-+      }
-+#endif
-+      n++;
-+    }
-+    current = next;
-+  }
-+
-+  // It's possible the second-last stack frame can't return
-+  // (that is, it's __libc_start_main), in which case
-+  // the CRT startup code will have set its LR to 'NULL'.
-+  if (n > 0 && result[n-1] == NULL)
-+    n--;
-+
-+  return n;
-+}

OBS-URL: https://build.opensuse.org/request/show/280951
OBS-URL: https://build.opensuse.org/package/show/devel:libraries:c_c++/gperftools?expand=0&rev=27
2015-01-13 07:30:23 +00:00
Ismail Dönmez
88168bf6d3 Accepting request 252716 from home:jengelh:branches:devel:libraries:c_c++
- Implement shlib packaging guidelines: split libraries
- Improve on RPM group classification

OBS-URL: https://build.opensuse.org/request/show/252716
OBS-URL: https://build.opensuse.org/package/show/devel:libraries:c_c++/gperftools?expand=0&rev=25
2014-09-29 10:56:28 +00:00
Cristian Rodríguez
9ceef68d03 Accepting request 249181 from home:oertel:branches:devel:libraries:c_c++
- set excludearch for s390 and s390x: not ported there

OBS-URL: https://build.opensuse.org/request/show/249181
OBS-URL: https://build.opensuse.org/package/show/devel:libraries:c_c++/gperftools?expand=0&rev=23
2014-09-15 03:58:11 +00:00
Stephan Kulow
a97dd8f334 Accepting request 237518 from home:k0da:ppc
- fix issue 628 (gperftools 2.2 fails to build on powerpc)
  missing_includes.patch

OBS-URL: https://build.opensuse.org/request/show/237518
OBS-URL: https://build.opensuse.org/package/show/devel:libraries:c_c++/gperftools?expand=0&rev=21
2014-06-16 12:18:26 +00:00
Ismail Dönmez
c4d02c4ef7 Accepting request 235130 from home:ganglia:perftools-2.2
Update to latest release, 2.2; Released 3 May 2014; removed patches that have been incorporated upstream.

OBS-URL: https://build.opensuse.org/request/show/235130
OBS-URL: https://build.opensuse.org/package/show/devel:libraries:c_c++/gperftools?expand=0&rev=19
2014-05-22 17:11:14 +00:00
Lars Vogdt
c9d7b8dfe3 Accepting request 186776 from home:ganglia:perftools-2.1
Update gperftools to allow building with older autoconf \(2.59\), so that gperftools can build on SLE10.

OBS-URL: https://build.opensuse.org/request/show/186776
OBS-URL: https://build.opensuse.org/package/show/devel:libraries:c_c++/gperftools?expand=0&rev=17
2013-08-12 16:58:17 +00:00
8c0d9fd470 Accepting request 184993 from home:ganglia:latest_perftools
- gperftools 2.1, released 30 July 2013.
  * fixes for building on newer platforms. Notably, there's now initial
    support for x32 ABI (--enable-minimal only at this time))
  * Some fixes for debug allocation on POWER/Linux 
  * new getNumericProperty stats for cache sizes
  * added HEAP_PROFILER_TIME_INTERVAL variable (see documentation)
  * added environment variable to control heap size (TCMALLOC_HEAP_LIMIT_MB)
  * added environment variable to disable release of memory back to OS
    (TCMALLOC_DISABLE_MEMORY_RELEASE)
  * cpu profiler can now be switched on and off by sending it a signal
    (specified in CPUPROFILESIGNAL)
  * (issue 491) fixed race-ful spinlock wake-ups
  * (issue 496) added some support for fork-ing of process that is using
    tcmalloc
  * (issue 368) improved memory fragmentation when large chunks of
    memory are allocated/freed

OBS-URL: https://build.opensuse.org/request/show/184993
OBS-URL: https://build.opensuse.org/package/show/devel:libraries:c_c++/gperftools?expand=0&rev=15
2013-07-31 10:21:11 +00:00
Ismail Dönmez
6ed2b425af Accepting request 146470 from home:k0da:ppc
- spinlock-rand.patch fixes an issue encountered on PPC with 
  undefined conversions from 'base::subtle::Atomic64*' to 'const 
  volatile Atomic32*'

OBS-URL: https://build.opensuse.org/request/show/146470
OBS-URL: https://build.opensuse.org/package/show/devel:libraries:c_c++/gperftools?expand=0&rev=13
2012-12-27 20:14:11 +00:00
Cristian Rodríguez
06ebd4bc3a Accepting request 128613 from home:a_jaeger:FactoryFix
Fix build with glibc 2.16

OBS-URL: https://build.opensuse.org/request/show/128613
OBS-URL: https://build.opensuse.org/package/show/devel:libraries:c_c++/gperftools?expand=0&rev=11
2012-07-22 19:24:56 +00:00
Ismail Dönmez
55855de169 Accepting request 120948 from home:babelworx:ldig:branches:devel:libraries:c_c++
license update: BSD-3-Clause
SPDX format

OBS-URL: https://build.opensuse.org/request/show/120948
OBS-URL: https://build.opensuse.org/package/show/devel:libraries:c_c++/gperftools?expand=0&rev=9
2012-05-14 14:32:35 +00:00
e7a46a2cff Accepting request 105696 from home:hmacht:branches:devel:libraries:c_c++
link against libunwind

OBS-URL: https://build.opensuse.org/request/show/105696
OBS-URL: https://build.opensuse.org/package/show/devel:libraries:c_c++/gperftools?expand=0&rev=8
2012-02-18 11:12:04 +00:00
Pavol Rusnak
bd878c7dad Accepting request 105593 from home:jengelh:branches:devel:libraries:c_c++
- Remove redundant tags/sections from specfile
- Simply file lists (why would mode 0775 be needed anyway?)

OBS-URL: https://build.opensuse.org/request/show/105593
OBS-URL: https://build.opensuse.org/package/show/devel:libraries:c_c++/gperftools?expand=0&rev=6
2012-02-17 08:07:18 +00:00
craig gardner
b641dd08c9 - Fix make target.
OBS-URL: https://build.opensuse.org/package/show/devel:libraries:c_c++/gperftools?expand=0&rev=5
2012-02-16 15:38:44 +00:00
Stephan Kulow
bdaaecddea - Remove redudant tags/sections
OBS-URL: https://build.opensuse.org/package/show/devel:libraries:c_c++/gperftools?expand=0&rev=2
2012-02-16 11:28:42 +00:00
craig gardner
22a70ad85f - gperftools 2.0, released 3 Feb 2012.
- Primarily renamed from google-perftools to gperftools, with ownership
  shifted from Google to the community.

- Version 1.9.1, released 23 Dec 2011.
  * google-perftools: version 1.9 release
  * Lightweight check for double-frees (blount)
  * BUGFIX: Fix pprof to exit properly if run with no args (dagitses)
  * Suggest ASan as a way to diagnose buggy code (ppluzhnikov)
  * Get rid of unused CACHELINE_SIZE (csilvers)
  * Replace atexit() calls with global dtors; helps freebsd (csilvers)
  * Disable heap-checker under AddressSanitizer (kcc)
  * Fix bug in powerpc stacktracing (ppluzhnikov)
  * PERF: Use exponential backoff waiting for spinlocks (m3b)
  * Fix 64-bit nm on 32-bit binaries in pprof (csilvers)
  * Add ProfileHandlerDisallowForever (rsc)
  * BUGFIX: Shell escape when forking in pprof (csilvers)
  * No longer combine overloaded functions in pprof (csilvers)
  * Fix address-normalizing bug in pprof (csilvers)
  * More consistently call abort() instead of exit() on failure (csilvers)
  * Allow NoGlobalLeaks to be safely called more than once (csilvers)
  * PORTING/BUGFIX: Fix ARM cycleclock to use volatile asm (dougkwan)
  * PORTING: 64-bit atomic ops for ARMv7 (dougkwan)
  * PORTING: Implement stacktrace for ARM (dougkwan)
  * PORTING: Fix malloc_hook_mmap_linux for ARM (dougkwan)
  * PORTING: Update linux_syscall_support.h for ARM/etc (evannier, sanek)
  * PORTING: Fix freebsd to work on x86_64 (chapp...@gmail.com)
  * PORTING: Added additional SYS_mmap fixes for FreeBSD (chappedm)
  * PORTING: Allow us to compile on OS X 10.6 and run on 10.5 (raltherr)
  * PORTING: Check for mingw compilers that *do* define timespec

OBS-URL: https://build.opensuse.org/package/show/devel:libraries:c_c++/gperftools?expand=0&rev=1
2012-02-07 18:33:51 +00:00