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

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

Issue 9316021: Update the tcmalloc vendor branch to r144 (gperftools 2.0). (Closed) Base URL: http://git.chromium.org/git/chromium.git@trunk
Patch Set: Reuploading 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 google 21 install libunwind before trying to configure or install gperftools.
22 perftools. libunwind can be found at 22 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 CAUTION: if you install libunwind from the url above, be aware that 31 There have been reports of crashes with libunwind 0.99 (see
32 you may have trouble if you try to statically link your binary with 32 http://code.google.com/p/gperftools/issues/detail?id=374).
33 perftools: that is, if you link with 'gcc -static -lgcc_eh ...'. This 33 Alternately, you can use a more recent libunwind (e.g. 1.0.1) at the
34 is because both libunwind and libgcc implement the same C++ exception 34 cost of adding a bit of boilerplate to your code. For details, see
35 handling APIs, but they implement them differently on some platforms. 35 http://groups.google.com/group/google-perftools/msg/2686d9f24ac4365f
36 This is not likely to be a problem on ia64, but may be on x86-64.
37 36
38 Also, if you link binaries statically, make sure that you add 37 CAUTION: if you install libunwind from the url above, be aware that
39 -Wl,--eh-frame-hdr to your linker options. This is required so that 38 you may have trouble if you try to statically link your binary with
40 libunwind can find the information generated by the compiler required 39 perftools: that is, if you link with 'gcc -static -lgcc_eh ...'.
41 for stack unwinding. 40 This is because both libunwind and libgcc implement the same C++
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.
42 44
43 Using -static is rare, though, so unless you know this will affect you 45 Also, if you link binaries statically, make sure that you add
44 it probably won't. 46 -Wl,--eh-frame-hdr to your linker options. This is required so that
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.
45 52
46 If you cannot or do not wish to install libunwind, you can still try 53 If you cannot or do not wish to install libunwind, you can still try
47 to use the built-in stack unwinder. The built-in stack unwinder 54 to use the built-in stack unwinder. The built-in stack unwinder
48 requires that your application, the tcmalloc library, and system 55 requires that your application, the tcmalloc library, and system
49 libraries like libc, all be compiled with a frame pointer. This is 56 libraries like libc, all be compiled with a frame pointer. This is
50 *not* the default for x86-64. 57 *not* the default for x86-64.
51 58
52 If you are on x86-64 system, know that you have a set of system 59 If you are on x86-64 system, know that you have a set of system
53 libraries with frame-pointers enabled, and compile all your 60 libraries with frame-pointers enabled, and compile all your
54 applications with -fno-omit-frame-pointer, then you can enable the 61 applications with -fno-omit-frame-pointer, then you can enable the
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after
130 asking for trouble in any case: some data will be allocated with one 137 asking for trouble in any case: some data will be allocated with one
131 malloc, some with another. If, for some reason, you *do* need to use 138 malloc, some with another. If, for some reason, you *do* need to use
132 dlopen on tcmalloc, the easiest way is to use a version of tcmalloc 139 dlopen on tcmalloc, the easiest way is to use a version of tcmalloc
133 with TLS turned off; see the ___tls_get_addr note above. 140 with TLS turned off; see the ___tls_get_addr note above.
134 141
135 142
136 *** COMPILING ON NON-LINUX SYSTEMS 143 *** COMPILING ON NON-LINUX SYSTEMS
137 144
138 Perftools has been tested on the following systems: 145 Perftools has been tested on the following systems:
139 FreeBSD 6.0 (x86) 146 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)
140 Linux Fedora Core 3 (x86) 151 Linux Fedora Core 3 (x86)
141 Linux Fedora Core 4 (x86) 152 Linux Fedora Core 4 (x86)
142 Linux Fedora Core 5 (x86) 153 Linux Fedora Core 5 (x86)
143 Linux Fedora Core 6 (x86) 154 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)
144 Linux Ubuntu 6.06.1 (x86) 159 Linux Ubuntu 6.06.1 (x86)
145 Linux Ubuntu 6.06.1 (x86_64) 160 Linux Ubuntu 6.06.1 (x86_64)
146 Linux RedHat 9 (x86) 161 Linux Ubuntu 10.04 (x86)
147 Linux Debian 4.0 (PPC) 162 Linux Ubuntu 10.10 (x86_64)
148 Mac OS X 10.3.9 (Panther) (PowerPC) 163 Mac OS X 10.3.9 (Panther) (PowerPC)
149 Mac OS X 10.4.8 (Tiger) (PowerPC) 164 Mac OS X 10.4.8 (Tiger) (PowerPC)
150 Mac OS X 10.4.8 (Tiger) (x86) 165 Mac OS X 10.4.8 (Tiger) (x86)
151 Mac OS X 10.5 (Leopard) (x86) 166 Mac OS X 10.5 (Leopard) (x86)
152 Solaris 10 (x86) 167 Mac OS X 10.6 (Snow Leopard) (x86)
153 Windows XP, Visual Studio 2003 (VC++ 7) (x86) 168 Solaris 10 (x86_64)
169 Windows XP, Visual Studio 2003 (VC++ 7.1) (x86)
154 Windows XP, Visual Studio 2005 (VC++ 8) (x86) 170 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)
155 Windows XP, MinGW 5.1.3 (x86) 173 Windows XP, MinGW 5.1.3 (x86)
156 Windows XP, Cygwin 5.1 (x86) 174 Windows XP, Cygwin 5.1 (x86)
157 175
158 It works in its full generality on the Linux systems 176 It works in its full generality on the Linux systems
159 tested (though see 64-bit notes above). Portions of perftools work on 177 tested (though see 64-bit notes above). Portions of perftools work on
160 the other systems. The basic memory-allocation library, 178 the other systems. The basic memory-allocation library,
161 tcmalloc_minimal, works on all systems. The cpu-profiler also works 179 tcmalloc_minimal, works on all systems. The cpu-profiler also works
162 fairly widely. However, the heap-profiler and heap-checker are not 180 fairly widely. However, the heap-profiler and heap-checker are not
163 yet as widely supported. In general, the 'configure' script will 181 yet as widely supported. In general, the 'configure' script will
164 detect what OS you are building for, and only build the components 182 detect what OS you are building for, and only build the components
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after
252 % PATH=${PATH}:/usr/sfw/bin/:/usr/ccs/bin make [...] 270 % PATH=${PATH}:/usr/sfw/bin/:/usr/ccs/bin make [...]
253 271
254 Again, the binaries and libraries that successfully build are 272 Again, the binaries and libraries that successfully build are
255 exactly the same as for FreeBSD. (However, while libprofiler.so can 273 exactly the same as for FreeBSD. (However, while libprofiler.so can
256 be used to generate profiles, pprof is not very successful at 274 be used to generate profiles, pprof is not very successful at
257 reading them -- necessary helper programs like nm don't seem 275 reading them -- necessary helper programs like nm don't seem
258 to be installed by default on Solaris, or perhaps are only 276 to be installed by default on Solaris, or perhaps are only
259 installed as part of the Sun C++ compiler package.) See that 277 installed as part of the Sun C++ compiler package.) See that
260 section for a list of binaries, and instructions on building them. 278 section for a list of binaries, and instructions on building them.
261 279
262 ** Windows: 280 ** Windows (MSVC, Cygwin, and MinGW):
263 281
264 Work on Windows is rather preliminary: we haven't found a good way 282 Work on Windows is rather preliminary: we haven't found a good way
265 to get stack traces in release mode on windows (that is, when FPO 283 to get stack traces in release mode on windows (that is, when FPO
266 is enabled), so the heap profiling may not be reliable in that 284 is enabled), so the heap profiling may not be reliable in that
267 case. Also, heap-checking and CPU profiling do not yet work at 285 case. Also, heap-checking and CPU profiling do not yet work at
268 all. But as in other ports, the basic tcmalloc library 286 all. But as in other ports, the basic tcmalloc library
269 functionality, overriding malloc and new and such (and even 287 functionality, overriding malloc and new and such (and even
270 windows-specific functions like _aligned_malloc!), is working fine, 288 windows-specific functions like _aligned_malloc!), is working fine,
271 at least with VC++ 7.1 (Visual Studio 2003) and VC++ 8.0 289 at least with VC++ 7.1 (Visual Studio 2003) through VC++ 10.0,
272 (Visual Studio 2005), in both debug and release modes. See 290 in both debug and release modes. See README.windows for
273 README.windows for instructions on how to install on Windows using 291 instructions on how to install on Windows using Visual Studio.
274 Visual Studio.
275 292
276 Cygwin can compile some but not all of perftools. Furthermore, 293 Cygwin can compile some but not all of perftools. Furthermore,
277 there is a problem with exception-unwinding in cygwin (it can call 294 there is a problem with exception-unwinding in cygwin (it can call
278 malloc, which can call the exception-unwinding-setup code, which 295 malloc, which can call the exception-unwinding-setup code, which
279 can lead to an infinite loop). I've comitted a workaround to the 296 can lead to an infinite loop). I've comitted a workaround to the
280 exception unwinding problem, but it only works in debug mode and 297 exception unwinding problem, but it only works in debug mode and
281 when statically linking in tcmalloc. I hope to have a more proper 298 when statically linking in tcmalloc. I hope to have a more proper
282 fix in a later release. To configure under cygwin, run 299 fix in a later release. To configure under cygwin, run
283 300
284 ./configure --disable-shared CXXFLAGS=-g && make 301 ./configure --disable-shared CXXFLAGS=-g && make
(...skipping 228 matching lines...) Expand 10 before | Expand all | Expand 10 after
513 Do not print messages saying which checks are being made. To 530 Do not print messages saying which checks are being made. To
514 suppress all normal output, redirect it to `/dev/null' (any error 531 suppress all normal output, redirect it to `/dev/null' (any error
515 messages will still be shown). 532 messages will still be shown).
516 533
517 `--srcdir=DIR' 534 `--srcdir=DIR'
518 Look for the package's source code in directory DIR. Usually 535 Look for the package's source code in directory DIR. Usually
519 `configure' can determine that directory automatically. 536 `configure' can determine that directory automatically.
520 537
521 `configure' also accepts some other, not widely useful, options. Run 538 `configure' also accepts some other, not widely useful, options. Run
522 `configure --help' for more details. 539 `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