diff options
author | csilvers <csilvers@6b5cf1ce-ec42-a296-1ba9-69fdba395a50> | 2008-12-13 01:35:42 +0000 |
---|---|---|
committer | csilvers <csilvers@6b5cf1ce-ec42-a296-1ba9-69fdba395a50> | 2008-12-13 01:35:42 +0000 |
commit | 6fa2a2574ce1c15ac12293e24691d69a41972e54 (patch) | |
tree | 606da4a80de5c91721969ade70c4d9a87cb1604a /INSTALL | |
parent | 16191f87ff8dc78295c0f617060460664fc444bd (diff) | |
download | gperftools-6fa2a2574ce1c15ac12293e24691d69a41972e54.tar.gz |
Thu Dec 11 16:01:32 2008 Google Inc. <opensource@google.com>
* google-perftools: version 1.0rc1 release
* Replace API for selectively disabling heap-checker in code (sanjay)
* Add a pre-mmap hook (daven, adlr)
* Add MallocExtension interface to set memory-releasing rate (fikes)
* Augment pprof to allow any string ending in /pprof/profile (csilvers)
* PORTING: Rewrite -- and fix -- malloc patching for windows (dvitek)
* PORTING: Add nm-pdb and addr2line-pdb for use by pprof (dvitek)
* PORTING: Improve cygwin and mingw support (jperkins, csilvers)
* PORTING: Fix pprof for mac os x, other pprof improvements (csilvers)
* PORTING: Fix some PPC bugs in our locking code (anton.blanchard)
* A new unittest, smapling_test, to verify tcmalloc-profiles (csilvers)
* Turn off TLS for gcc < 4.1.2, due to a TLS + -fPIC bug (csilvers)
* Prefer __builtin_frame_address to assembly for stacktraces (nlewycky)
* Separate tcmalloc.cc out into multiple files -- finally! (kash)
* Make our locking code work with -fPIC on 32-bit x86 (aruns)
* Fix an initialization-ordering bug for tcmalloc/profiling (csilvers)
* Use "initial exec" model of TLS to speed up tcmalloc (csilvers)
* Enforce 16-byte alignment for tcmalloc, for SSE (sanjay)
git-svn-id: http://gperftools.googlecode.com/svn/trunk@60 6b5cf1ce-ec42-a296-1ba9-69fdba395a50
Diffstat (limited to 'INSTALL')
-rw-r--r-- | INSTALL | 53 |
1 files changed, 42 insertions, 11 deletions
@@ -57,6 +57,7 @@ Even with the use of libunwind, there are still known problems with stack unwinding on 64-bit systems, particularly x86-64. See the "64-BIT ISSUES" section in README. + *** NOTE FOR ___tls_get_addr ERROR When compiling perftools on some old systems, like RedHat 8, you may @@ -66,11 +67,23 @@ get an error like this: This means that you have a system where some parts are updated enough to support Thread Local Storage, but others are not. The perftools configure script can't always detect this kind of case, leading to -that error. To fix it, just uncomment the line +that error. To fix it, just comment out the line #define HAVE_TLS 1 in your config.h file before building. +*** TCMALLOC AND DLOPEN + +To improve performance, we use the "initial exec" model of Thread +Local Storage in tcmalloc. The price for this is the library will not +work correctly if it is loaded via dlopen(). This should not be a +problem, since loading a malloc-replacement library via dlopen is +asking for trouble in any case: some data will be allocated with one +malloc, some with another. If, for some reason, you *do* need to use +dlopen on tcmalloc, the easiest way is to use a version of tcmalloc +with TLS turned off; see the ___tls_get_addr note above. + + *** COMPILING ON NON-LINUX SYSTEMS Perftools has been tested on the following systems: @@ -91,6 +104,7 @@ Perftools has been tested on the following systems: Windows XP, Visual Studio 2003 (VC++ 7) (x86) Windows XP, Visual Studio 2005 (VC++ 8) (x86) Windows XP, MinGW 5.1.3 (x86) + Windows XP, Cygwin 5.1 (x86) It works in its full generality on the Linux systems tested (though see 64-bit notes above). Portions of perftools work on @@ -172,16 +186,33 @@ above, by linking in libtcmalloc_minimal. ** Windows: - Work on Windows is rather preliminary: we have to #define a special - symbol that turns off the stacktrace functionality, since that is - not yet implemented (see TODOs in src/windows/port.cc if you're - interested in playing around with this). But as in other ports, - the basic tcmalloc library functionality, overriding malloc and new - and such, is working fine at least with VC++ 8.0 (Visual Studio - 2005) when compiled in debug mode. See README.windows for - instructions on how to install on Windows using Visual Studio. - - This Windows functionality is also available using MinGW and Msys. + Work on Windows is rather preliminary: we haven't found a good way + to get stack traces in release mode on windows (that is, when FPO + is enabled), so the heap profiling may not be reliable in that + case. Also, heap-checking and CPU profiling do not yet work at + all. But as in other ports, the basic tcmalloc library + functionality, overriding malloc and new and such (and even + windows-specific functions like _aligned_malloc!), is working fine, + at least with VC++ 8.0 (Visual Studio 2005), in both debug and + release modes. See README.windows for instructions on how to + install on Windows using Visual Studio. + + Cygwin can compile some but not all of perftools. Furthermore, + there is a problem with exception-unwinding in cygwin (it can call + malloc, which can call the exception-unwinding-setup code, which + can lead to an infinite loop). I've comitted a workaround to the + exception unwinding problem, but it only works in debug mode. I + hope to have a more proper fix in a later release. To configure + under cygwin, run + ./configure CXXFLAGS=-g && make -k + Most of cygwin will compile (cygwin doesn't allow weak symbols, so + the heap-checker and a few other pieces of functionality will not + compile). 'make -k' will compile those libraries and tests that + can be compiled. You can run + ./tcmalloc_minimal_unittest + to make sure the basic functionality is working. + + This Windows functionality is also available using MinGW and Msys, In this case, you can use the regular './configure && make' process. 'make install' should also work. The Makefile will limit itself to those libraries and binaries that work on windows. |