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

Side by Side Diff: tools/valgrind/build-valgrind-for-chromium.sh

Issue 216048: Increase valgrind's redzone from 16 to 64 bytes.... (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: '' Created 11 years, 3 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 | « no previous file | tools/valgrind/chrome_tests.sh » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 #!/bin/sh 1 #!/bin/sh
2 2
3 # Copyright (c) 2009 The Chromium Authors. All rights reserved. 3 # Copyright (c) 2009 The Chromium Authors. All rights reserved.
4 # Use of this source code is governed by a BSD-style license that can be 4 # Use of this source code is governed by a BSD-style license that can be
5 # found in the LICENSE file. 5 # found in the LICENSE file.
6 6
7 # Script to build valgrind for use with chromium 7 # Script to build valgrind for use with chromium
8 # 8 #
9 # Can also be used to just prepare patched source tarball with MAKE_TARBALL=yes 9 # Can also be used to just prepare patched source tarball with MAKE_TARBALL=yes
10 # or to just build from a patched source tarball with USE_TARBALL=yes. 10 # or to just build from a patched source tarball with USE_TARBALL=yes.
11 # These are useful when configuring jailed buildbots which are not allowed to 11 # These are useful when configuring jailed buildbots which are not allowed to
12 # fetch valgrind source via svn. Most users won't need those options. 12 # fetch valgrind source via svn. Most users won't need those options.
13 13
14 # Checkout by date doesn't work unless you specify the friggin' timezone 14 # Checkout by date doesn't work unless you specify the friggin' timezone
15 VALGRIND_SVN_REV=10880 15 VALGRIND_SVN_REV=10880
16 # And svn isn't smart enough to figure out what rev of the linked tree to get 16 # And svn isn't smart enough to figure out what rev of the linked tree to get
17 VEX_SVN_REV=1914 17 VEX_SVN_REV=1914
18 # and TSAN may be out of sync, so you have to check that out by rev anyway 18 # and TSAN may be out of sync, so you have to check that out by rev anyway
19 TSAN_SVN_REV=1129 19 TSAN_SVN_REV=1129
20 20
21 # suffix for build and install dir to denote our set of patches (may be empty)
22 PATCHLEVEL=-redzone
23
24 DIRNAME=valgrind-${VALGRIND_SVN_REV}${PATCHLEVEL}
25
21 THISDIR=$(dirname "${0}") 26 THISDIR=$(dirname "${0}")
22 THISDIR=$(cd "${THISDIR}" && /bin/pwd) 27 THISDIR=$(cd "${THISDIR}" && /bin/pwd)
23 28
24 case "x${1}" in 29 case "x${1}" in
25 x|x/*) ;; 30 x|x/*) ;;
26 *) 31 *)
27 echo "Usage: sh build-valgrind-for-chromium.sh [prefix]" 32 echo "Usage: sh build-valgrind-for-chromium.sh [prefix]"
28 echo "Prefix is optional, but if present, must be the absolute path to where" 33 echo "Prefix is optional, but if present, must be the absolute path to where"
29 echo "you want to install valgrind's bin, include, and lib directories." 34 echo "you want to install valgrind's bin, include, and lib directories."
30 echo "Prefix defaults to /usr/local/valgrind-${VALGRIND_SVN_REV}, where" 35 echo "Prefix defaults to /usr/local/$DIRNAME."
31 echo "${VALGRIND_SVN_REV} is the revision used when retrieving valgrind from s vn."
32 echo "Will use sudo to do the install if you don't own the parent of prefix." 36 echo "Will use sudo to do the install if you don't own the parent of prefix."
33 exit 1 37 exit 1
34 ;; 38 ;;
35 esac 39 esac
36 40
37 set -x 41 set -x
38 set -e 42 set -e
39 43
40 if test "x${USE_TARBALL}" = "xyes" && test "x${MAKE_TARBALL}" = "xyes" 44 if test "x${USE_TARBALL}" = "xyes" && test "x${MAKE_TARBALL}" = "xyes"
41 then 45 then
42 echo Set only one of MAKE_TARBALL or USE_TARBALL to yes 46 echo Set only one of MAKE_TARBALL or USE_TARBALL to yes
43 exit 1 47 exit 1
44 fi 48 fi
45 49
46 # Clean checkout our untar 50 # Clean checkout our untar
47 rm -rf "valgrind-${VALGRIND_SVN_REV}" 51 test -d "$DIRNAME" && rm -rf ./"$DIRNAME"
48 mkdir -p "valgrind-${VALGRIND_SVN_REV}" 52 mkdir -p "$DIRNAME"
49 53
50 if test "x${USE_TARBALL}" != "xyes" 54 if test "x${USE_TARBALL}" != "xyes"
51 then 55 then
52 # Check out latest version that following patches known to apply against 56 # Check out latest version that following patches known to apply against
53 svn co -r "${VALGRIND_SVN_REV}" "svn://svn.valgrind.org/valgrind/trunk" "valgr ind-${VALGRIND_SVN_REV}" 57 svn co -r "${VALGRIND_SVN_REV}" "svn://svn.valgrind.org/valgrind/trunk" "$DIRN AME"
54 58
55 cd "valgrind-${VALGRIND_SVN_REV}" 59 cd "$DIRNAME"
56 60
57 # Make sure svn gets the right version of the external VEX repo, too 61 # Make sure svn gets the right version of the external VEX repo, too
58 svn update -r "${VEX_SVN_REV}" VEX/ 62 svn update -r "${VEX_SVN_REV}" VEX/
59 63
60 # Work around bug https://bugs.kde.org/show_bug.cgi?id=162848 64 # Work around bug https://bugs.kde.org/show_bug.cgi?id=162848
61 # "fork() not handled properly" 65 # "fork() not handled properly"
62 patch -p0 < "${THISDIR}/fork.patch" 66 patch -p0 < "${THISDIR}/fork.patch"
63 67
64 # Add feature bug https://bugs.kde.org/show_bug.cgi?id=201170 68 # Add feature bug https://bugs.kde.org/show_bug.cgi?id=201170
65 # "Want --show-possible option so I can ignore the bazillion possible leaks... " 69 # "Want --show-possible option so I can ignore the bazillion possible leaks... "
66 patch -p0 < "${THISDIR}/possible.patch" 70 patch -p0 < "${THISDIR}/possible.patch"
67 71
68 # Add feature bug https://bugs.kde.org/show_bug.cgi?id=205000 72 # Add feature bug https://bugs.kde.org/show_bug.cgi?id=205000
69 # "Need library load address in log files" 73 # "Need library load address in log files"
70 patch -p0 < "${THISDIR}/xml-loadadr.patch" 74 patch -p0 < "${THISDIR}/xml-loadadr.patch"
71 75
76 # Make red zone 64 bytes bigger to catch more buffer overruns
77 patch -p0 < "${THISDIR}/redzone.patch"
78
72 if [ "${INSTALL_TSAN}" = "yes" ] 79 if [ "${INSTALL_TSAN}" = "yes" ]
73 then 80 then
74 # Add ThreadSanitier to the installation. 81 # Add ThreadSanitier to the installation.
75 # ThreadSanitizer is an experimental dynamic data race detector. 82 # ThreadSanitizer is an experimental dynamic data race detector.
76 # See http://code.google.com/p/data-race-test/wiki/ThreadSanitizer 83 # See http://code.google.com/p/data-race-test/wiki/ThreadSanitizer
77 svn checkout -r "${TSAN_SVN_REV}" http://data-race-test.googlecode.com/svn/t runk/tsan tsan 84 svn checkout -r "${TSAN_SVN_REV}" http://data-race-test.googlecode.com/svn/t runk/tsan tsan
78 mkdir tsan/tests 85 mkdir tsan/tests
79 touch tsan/tests/Makefile.am 86 touch tsan/tests/Makefile.am
80 patch -p 0 < tsan/valgrind.patch 87 patch -p 0 < tsan/valgrind.patch
81 fi 88 fi
82 89
83 sh autogen.sh 90 sh autogen.sh
84 if test -L install-sh 91 if test -L install-sh
85 then 92 then
86 # replace symlink with actual contents! 93 # replace symlink with actual contents!
87 cp install-sh install-sh.new 94 cp install-sh install-sh.new
88 mv install-sh.new install-sh 95 mv -f install-sh.new install-sh
89 chmod +x install-sh 96 chmod +x install-sh
90 fi 97 fi
91 98
92 # MacOSX before Snow Leopoard needs newer gdb to be able to handle -O1 chrome 99 # MacOSX before Snow Leopoard needs newer gdb to be able to handle -O1 chrome
93 # Kludgily download and unpack the sources in a subdirectory. 100 # Kludgily download and unpack the sources in a subdirectory.
94 if test `uname` = Darwin || test "x${MAKE_TARBALL}" = "xyes" 101 if test `uname` = Darwin || test "x${MAKE_TARBALL}" = "xyes"
95 then 102 then
96 curl http://www.opensource.apple.com/tarballs/gdb/gdb-1344.tar.gz | tar -xzf - 103 curl http://www.opensource.apple.com/tarballs/gdb/gdb-1344.tar.gz | tar -xzf -
97 fi 104 fi
98 cd .. 105 cd ..
99 106
100 fi 107 fi
101 108
102 if test "x${MAKE_TARBALL}" = "xyes" 109 if test "x${MAKE_TARBALL}" = "xyes"
103 then 110 then
104 tar -czvf "valgrind-${VALGRIND_SVN_REV}.tgz" "valgrind-${VALGRIND_SVN_REV}" 111 tar -czvf "$DIRNAME".tgz "$DIRNAME"
105 fi 112 fi
106 113
107 if test "x${USE_TARBALL}" = "xyes" 114 if test "x${USE_TARBALL}" = "xyes"
108 then 115 then
109 tar -xzvf "valgrind-${VALGRIND_SVN_REV}.tgz" 116 tar -xzvf "$DIRNAME".tgz
110 fi 117 fi
111 118
112 if test "x${MAKE_TARBALL}" != "xyes" 119 if test "x${MAKE_TARBALL}" != "xyes"
113 then 120 then
114 cd "valgrind-${VALGRIND_SVN_REV}" 121 cd "$DIRNAME"
115 122
116 OVERRIDE_LD_DIR="${THISDIR}/override_ld" 123 OVERRIDE_LD_DIR="${THISDIR}/override_ld"
117 if ld --version | grep gold 124 if ld --version | grep gold
118 then 125 then
119 # build/install-build-deps leaves original ld around, try using that 126 # build/install-build-deps leaves original ld around, try using that
120 if test -x /usr/bin/ld.orig 127 if test -x /usr/bin/ld.orig
121 then 128 then
122 echo "Using /usr/bin/ld.orig instead of gold to link valgrind" 129 echo "Using /usr/bin/ld.orig instead of gold to link valgrind"
123 test -d "${OVERRIDE_LD_DIR}" && rm -rf "${OVERRIDE_LD_DIR}" 130 test -d "${OVERRIDE_LD_DIR}" && rm -rf "${OVERRIDE_LD_DIR}"
124 mkdir "${OVERRIDE_LD_DIR}" 131 mkdir "${OVERRIDE_LD_DIR}"
125 ln -s /usr/bin/ld.orig "${OVERRIDE_LD_DIR}/ld" 132 ln -s /usr/bin/ld.orig "${OVERRIDE_LD_DIR}/ld"
126 PATH="${OVERRIDE_LD_DIR}:${PATH}" 133 PATH="${OVERRIDE_LD_DIR}:${PATH}"
127 # Ubuntu diverts original ld to ld.single when it installs binutils-gold 134 # Ubuntu diverts original ld to ld.single when it installs binutils-gold
128 elif test -x /usr/bin/ld.single 135 elif test -x /usr/bin/ld.single
129 then 136 then
130 echo "Using /usr/bin/ld.single instead of gold to link valgrind" 137 echo "Using /usr/bin/ld.single instead of gold to link valgrind"
131 test -d "${OVERRIDE_LD_DIR}" && rm -rf "${OVERRIDE_LD_DIR}" 138 test -d "${OVERRIDE_LD_DIR}" && rm -rf "${OVERRIDE_LD_DIR}"
132 mkdir "${OVERRIDE_LD_DIR}" 139 mkdir "${OVERRIDE_LD_DIR}"
133 ln -s /usr/bin/ld.single "${OVERRIDE_LD_DIR}/ld" 140 ln -s /usr/bin/ld.single "${OVERRIDE_LD_DIR}/ld"
134 PATH="${OVERRIDE_LD_DIR}:${PATH}" 141 PATH="${OVERRIDE_LD_DIR}:${PATH}"
135 else 142 else
136 echo "Cannot build valgrind with gold. Please switch to normal /usr/bin/l d, rerun this script, then switch back to gold." 143 echo "Cannot build valgrind with gold. Please switch to normal /usr/bin/l d, rerun this script, then switch back to gold."
137 exit 1 144 exit 1
138 fi 145 fi
139 fi 146 fi
140 147
141 # Desired parent directory for valgrind's bin, include, etc. 148 # Desired parent directory for valgrind's bin, include, etc.
142 PREFIX="${1:-/usr/local/valgrind-${VALGRIND_SVN_REV}}" 149 PREFIX="${1:-/usr/local/$DIRNAME}"
143 parent_of_prefix=$(dirname "${PREFIX}") 150 parent_of_prefix=$(dirname "${PREFIX}")
144 if test ! -d "${parent_of_prefix}" 151 if test ! -d "${parent_of_prefix}"
145 then 152 then
146 echo "Directory ${parent_of_prefix} does not exist" 153 echo "Directory ${parent_of_prefix} does not exist"
147 exit 1 154 exit 1
148 fi 155 fi
149 156
150 ./configure --prefix="${PREFIX}" 157 ./configure --prefix="${PREFIX}"
151 make -j4 158 make -j4
152 159
(...skipping 23 matching lines...) Expand all
176 if test -w "${parent_of_prefix}" 183 if test -w "${parent_of_prefix}"
177 then 184 then
178 make install 185 make install
179 else 186 else
180 sudo make install 187 sudo make install
181 fi 188 fi
182 ;; 189 ;;
183 esac 190 esac
184 cd .. 191 cd ..
185 fi 192 fi
OLDNEW
« no previous file with comments | « no previous file | tools/valgrind/chrome_tests.sh » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698