Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(58)

Side by Side Diff: third_party/tcmalloc/vendor/INSTALL

Issue 9701040: Revert 126715 - Update the tcmalloc vendor branch to r144 (gperftools 2.0). (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Created 8 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « third_party/tcmalloc/vendor/ChangeLog ('k') | third_party/tcmalloc/vendor/Makefile.am » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 Copyright 1994, 1995, 1996, 1999, 2000, 2001, 2002 Free Software 1 Copyright 1994, 1995, 1996, 1999, 2000, 2001, 2002 Free Software
2 Foundation, Inc. 2 Foundation, Inc.
3 3
4 This file is free documentation; the Free Software Foundation gives 4 This file is free documentation; the Free Software Foundation gives
5 unlimited permission to copy, distribute and modify it. 5 unlimited permission to copy, distribute and modify it.
6 6
7 7
8 Perftools-Specific Install Notes 8 Perftools-Specific Install Notes
9 ================================ 9 ================================
10 10
11 *** NOTE FOR 64-BIT LINUX SYSTEMS 11 *** NOTE FOR 64-BIT LINUX SYSTEMS
12 12
13 The glibc built-in stack-unwinder on 64-bit systems has some problems 13 The glibc built-in stack-unwinder on 64-bit systems has some problems
14 with the perftools libraries. (In particular, the cpu/heap profiler 14 with the perftools libraries. (In particular, the cpu/heap profiler
15 may be in the middle of malloc, holding some malloc-related locks when 15 may be in the middle of malloc, holding some malloc-related locks when
16 they invoke the stack unwinder. The built-in stack unwinder may call 16 they invoke the stack unwinder. The built-in stack unwinder may call
17 malloc recursively, which may require the thread to acquire a lock it 17 malloc recursively, which may require the thread to acquire a lock it
18 already holds: deadlock.) 18 already holds: deadlock.)
19 19
20 For that reason, if you use a 64-bit system, we strongly recommend you 20 For that reason, if you use a 64-bit system, we strongly recommend you
21 install libunwind before trying to configure or install gperftools. 21 install libunwind before trying to configure or install google
22 libunwind can be found at 22 perftools. libunwind can be found at
23 23
24 http://download.savannah.gnu.org/releases/libunwind/libunwind-0.99-beta.tar.g z 24 http://download.savannah.gnu.org/releases/libunwind/libunwind-0.99-beta.tar.g z
25 25
26 Even if you already have libunwind installed, you should check the 26 Even if you already have libunwind installed, you should check the
27 version. Versions older than this will not work properly; too-new 27 version. Versions older than this will not work properly; too-new
28 versions introduce new code that does not work well with perftools 28 versions introduce new code that does not work well with perftools
29 (because libunwind can call malloc, which will lead to deadlock). 29 (because libunwind can call malloc, which will lead to deadlock).
30 30
31 There have been reports of crashes with libunwind 0.99 (see 31 CAUTION: if you install libunwind from the url above, be aware that
32 http://code.google.com/p/gperftools/issues/detail?id=374). 32 you may have trouble if you try to statically link your binary with
33 Alternately, you can use a more recent libunwind (e.g. 1.0.1) at the 33 perftools: that is, if you link with 'gcc -static -lgcc_eh ...'. This
34 cost of adding a bit of boilerplate to your code. For details, see 34 is because both libunwind and libgcc implement the same C++ exception
35 http://groups.google.com/group/google-perftools/msg/2686d9f24ac4365f 35 handling APIs, but they implement them differently on some platforms.
36 This is not likely to be a problem on ia64, but may be on x86-64.
36 37
37 CAUTION: if you install libunwind from the url above, be aware that 38 Also, if you link binaries statically, make sure that you add
38 you may have trouble if you try to statically link your binary with 39 -Wl,--eh-frame-hdr to your linker options. This is required so that
39 perftools: that is, if you link with 'gcc -static -lgcc_eh ...'. 40 libunwind can find the information generated by the compiler required
40 This is because both libunwind and libgcc implement the same C++ 41 for stack unwinding.
41 exception handling APIs, but they implement them differently on
42 some platforms. This is not likely to be a problem on ia64, but
43 may be on x86-64.
44 42
45 Also, if you link binaries statically, make sure that you add 43 Using -static is rare, though, so unless you know this will affect you
46 -Wl,--eh-frame-hdr to your linker options. This is required so that 44 it probably won't.
47 libunwind can find the information generated by the compiler
48 required for stack unwinding.
49
50 Using -static is rare, though, so unless you know this will affect
51 you it probably won't.
52 45
53 If you cannot or do not wish to install libunwind, you can still try 46 If you cannot or do not wish to install libunwind, you can still try
54 to use the built-in stack unwinder. The built-in stack unwinder 47 to use the built-in stack unwinder. The built-in stack unwinder
55 requires that your application, the tcmalloc library, and system 48 requires that your application, the tcmalloc library, and system
56 libraries like libc, all be compiled with a frame pointer. This is 49 libraries like libc, all be compiled with a frame pointer. This is
57 *not* the default for x86-64. 50 *not* the default for x86-64.
58 51
59 If you are on x86-64 system, know that you have a set of system 52 If you are on x86-64 system, know that you have a set of system
60 libraries with frame-pointers enabled, and compile all your 53 libraries with frame-pointers enabled, and compile all your
61 applications with -fno-omit-frame-pointer, then you can enable the 54 applications with -fno-omit-frame-pointer, then you can enable the
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after
137 asking for trouble in any case: some data will be allocated with one 130 asking for trouble in any case: some data will be allocated with one
138 malloc, some with another. If, for some reason, you *do* need to use 131 malloc, some with another. If, for some reason, you *do* need to use
139 dlopen on tcmalloc, the easiest way is to use a version of tcmalloc 132 dlopen on tcmalloc, the easiest way is to use a version of tcmalloc
140 with TLS turned off; see the ___tls_get_addr note above. 133 with TLS turned off; see the ___tls_get_addr note above.
141 134
142 135
143 *** COMPILING ON NON-LINUX SYSTEMS 136 *** COMPILING ON NON-LINUX SYSTEMS
144 137
145 Perftools has been tested on the following systems: 138 Perftools has been tested on the following systems:
146 FreeBSD 6.0 (x86) 139 FreeBSD 6.0 (x86)
147 FreeBSD 8.1 (x86_64)
148 Linux CentOS 5.5 (x86_64)
149 Linux Debian 4.0 (PPC)
150 Linux Debian 5.0 (x86)
151 Linux Fedora Core 3 (x86) 140 Linux Fedora Core 3 (x86)
152 Linux Fedora Core 4 (x86) 141 Linux Fedora Core 4 (x86)
153 Linux Fedora Core 5 (x86) 142 Linux Fedora Core 5 (x86)
154 Linux Fedora Core 6 (x86) 143 Linux Fedora Core 6 (x86)
155 Linux Fedora Core 13 (x86_64)
156 Linux Fedora Core 14 (x86_64)
157 Linux RedHat 9 (x86)
158 Linux Slackware 13 (x86_64)
159 Linux Ubuntu 6.06.1 (x86) 144 Linux Ubuntu 6.06.1 (x86)
160 Linux Ubuntu 6.06.1 (x86_64) 145 Linux Ubuntu 6.06.1 (x86_64)
161 Linux Ubuntu 10.04 (x86) 146 Linux RedHat 9 (x86)
162 Linux Ubuntu 10.10 (x86_64) 147 Linux Debian 4.0 (PPC)
163 Mac OS X 10.3.9 (Panther) (PowerPC) 148 Mac OS X 10.3.9 (Panther) (PowerPC)
164 Mac OS X 10.4.8 (Tiger) (PowerPC) 149 Mac OS X 10.4.8 (Tiger) (PowerPC)
165 Mac OS X 10.4.8 (Tiger) (x86) 150 Mac OS X 10.4.8 (Tiger) (x86)
166 Mac OS X 10.5 (Leopard) (x86) 151 Mac OS X 10.5 (Leopard) (x86)
167 Mac OS X 10.6 (Snow Leopard) (x86) 152 Solaris 10 (x86)
168 Solaris 10 (x86_64) 153 Windows XP, Visual Studio 2003 (VC++ 7) (x86)
169 Windows XP, Visual Studio 2003 (VC++ 7.1) (x86)
170 Windows XP, Visual Studio 2005 (VC++ 8) (x86) 154 Windows XP, Visual Studio 2005 (VC++ 8) (x86)
171 Windows XP, Visual Studio 2005 (VC++ 9) (x86)
172 Windows XP, Visual Studio 2005 (VC++ 10) (x86)
173 Windows XP, MinGW 5.1.3 (x86) 155 Windows XP, MinGW 5.1.3 (x86)
174 Windows XP, Cygwin 5.1 (x86) 156 Windows XP, Cygwin 5.1 (x86)
175 157
176 It works in its full generality on the Linux systems 158 It works in its full generality on the Linux systems
177 tested (though see 64-bit notes above). Portions of perftools work on 159 tested (though see 64-bit notes above). Portions of perftools work on
178 the other systems. The basic memory-allocation library, 160 the other systems. The basic memory-allocation library,
179 tcmalloc_minimal, works on all systems. The cpu-profiler also works 161 tcmalloc_minimal, works on all systems. The cpu-profiler also works
180 fairly widely. However, the heap-profiler and heap-checker are not 162 fairly widely. However, the heap-profiler and heap-checker are not
181 yet as widely supported. In general, the 'configure' script will 163 yet as widely supported. In general, the 'configure' script will
182 detect what OS you are building for, and only build the components 164 detect what OS you are building for, and only build the components
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after
270 % PATH=${PATH}:/usr/sfw/bin/:/usr/ccs/bin make [...] 252 % PATH=${PATH}:/usr/sfw/bin/:/usr/ccs/bin make [...]
271 253
272 Again, the binaries and libraries that successfully build are 254 Again, the binaries and libraries that successfully build are
273 exactly the same as for FreeBSD. (However, while libprofiler.so can 255 exactly the same as for FreeBSD. (However, while libprofiler.so can
274 be used to generate profiles, pprof is not very successful at 256 be used to generate profiles, pprof is not very successful at
275 reading them -- necessary helper programs like nm don't seem 257 reading them -- necessary helper programs like nm don't seem
276 to be installed by default on Solaris, or perhaps are only 258 to be installed by default on Solaris, or perhaps are only
277 installed as part of the Sun C++ compiler package.) See that 259 installed as part of the Sun C++ compiler package.) See that
278 section for a list of binaries, and instructions on building them. 260 section for a list of binaries, and instructions on building them.
279 261
280 ** Windows (MSVC, Cygwin, and MinGW): 262 ** Windows:
281 263
282 Work on Windows is rather preliminary: we haven't found a good way 264 Work on Windows is rather preliminary: we haven't found a good way
283 to get stack traces in release mode on windows (that is, when FPO 265 to get stack traces in release mode on windows (that is, when FPO
284 is enabled), so the heap profiling may not be reliable in that 266 is enabled), so the heap profiling may not be reliable in that
285 case. Also, heap-checking and CPU profiling do not yet work at 267 case. Also, heap-checking and CPU profiling do not yet work at
286 all. But as in other ports, the basic tcmalloc library 268 all. But as in other ports, the basic tcmalloc library
287 functionality, overriding malloc and new and such (and even 269 functionality, overriding malloc and new and such (and even
288 windows-specific functions like _aligned_malloc!), is working fine, 270 windows-specific functions like _aligned_malloc!), is working fine,
289 at least with VC++ 7.1 (Visual Studio 2003) through VC++ 10.0, 271 at least with VC++ 7.1 (Visual Studio 2003) and VC++ 8.0
290 in both debug and release modes. See README.windows for 272 (Visual Studio 2005), in both debug and release modes. See
291 instructions on how to install on Windows using Visual Studio. 273 README.windows for instructions on how to install on Windows using
274 Visual Studio.
292 275
293 Cygwin can compile some but not all of perftools. Furthermore, 276 Cygwin can compile some but not all of perftools. Furthermore,
294 there is a problem with exception-unwinding in cygwin (it can call 277 there is a problem with exception-unwinding in cygwin (it can call
295 malloc, which can call the exception-unwinding-setup code, which 278 malloc, which can call the exception-unwinding-setup code, which
296 can lead to an infinite loop). I've comitted a workaround to the 279 can lead to an infinite loop). I've comitted a workaround to the
297 exception unwinding problem, but it only works in debug mode and 280 exception unwinding problem, but it only works in debug mode and
298 when statically linking in tcmalloc. I hope to have a more proper 281 when statically linking in tcmalloc. I hope to have a more proper
299 fix in a later release. To configure under cygwin, run 282 fix in a later release. To configure under cygwin, run
300 283
301 ./configure --disable-shared CXXFLAGS=-g && make 284 ./configure --disable-shared CXXFLAGS=-g && make
(...skipping 228 matching lines...) Expand 10 before | Expand all | Expand 10 after
530 Do not print messages saying which checks are being made. To 513 Do not print messages saying which checks are being made. To
531 suppress all normal output, redirect it to `/dev/null' (any error 514 suppress all normal output, redirect it to `/dev/null' (any error
532 messages will still be shown). 515 messages will still be shown).
533 516
534 `--srcdir=DIR' 517 `--srcdir=DIR'
535 Look for the package's source code in directory DIR. Usually 518 Look for the package's source code in directory DIR. Usually
536 `configure' can determine that directory automatically. 519 `configure' can determine that directory automatically.
537 520
538 `configure' also accepts some other, not widely useful, options. Run 521 `configure' also accepts some other, not widely useful, options. Run
539 `configure --help' for more details. 522 `configure --help' for more details.
OLDNEW
« no previous file with comments | « third_party/tcmalloc/vendor/ChangeLog ('k') | third_party/tcmalloc/vendor/Makefile.am » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698