(List (= scope= flags=1 words=[] bindings=[('THISDIR', {[ComSub (Com {[LIT_CHARS dirname]} {[VarSub 0]})]})]) (= scope= flags=0 words=[] bindings=[('ARGV_COPY', {[DQ [VarSub @]]})]) (= scope= flags=0 words=[] bindings=[('tool', {[DQ [LIT_CHARS memcheck]]})]) (While (DParen {A Atom NODE_ARITH_WORD {[DQ [VarSub #]]}}) (List (If (DBracket {B2 BINARY_STRING_EQUAL {[DQ [VarSub 1]]} {[DQ [LIT_CHARS --tool]]}}) (List (= scope= flags=0 words=[] bindings=[('tool', {[DQ [VarSub 2]]})]) (Com {[LIT_CHARS shift]}) ) (DBracket {B2 BINARY_STRING_TILDE_EQUAL {[DQ [VarSub 1]]} {[LIT_CHARS --tool] [LIT_OTHER "="] [LIT_CHARS "("] [LIT_CHARS .] [LIT_OTHER "*"] [LIT_CHARS ")"]}}) (= scope= flags=0 words=[] bindings=[('tool', {[DQ [VarSub BASH_REMATCH bracket_op=(Index {A Atom NODE_ARITH_WORD {[AS_NUM_LITERAL 1]}})]]})]) ) (Com {[LIT_CHARS shift]}) ) ) (= scope= flags=0 words=[] bindings=[('NEEDS_VALGRIND', {[LIT_CHARS 0]})]) (= scope= flags=0 words=[] bindings=[('NEEDS_DRMEMORY', {[LIT_CHARS 0]})]) (Case to_match={[DQ [VarSub tool]]}, pat_word_list=[[{[DQ [LIT_CHARS memcheck]]}], [{[DQ [LIT_CHARS tsan]]}, {[DQ [LIT_CHARS tsan_rv]]}], [{[DQ [LIT_CHARS drmemory]]}, {[DQ [LIT_CHARS drmemory_light]]}, {[DQ [LIT_CHARS drmemory_full]]}, {[DQ [LIT_CHARS drmemory_pattern]]}]] (= scope= flags=0 words=[] bindings=[('NEEDS_VALGRIND', {[LIT_CHARS 1]})]) (If (Com {[LIT_OTHER "["]} {[DQ [ComSub (Com {[LIT_CHARS uname]} {[LIT_CHARS -s]})]]} {[LIT_OTHER "="] [LIT_OTHER "="]} {[LIT_CHARS CYGWIN] [LIT_OTHER "*"]} {[LIT_OTHER "]"]}) (= scope= flags=0 words=[] bindings=[('NEEDS_PIN', {[LIT_CHARS 1]})]) (ElseTrue) (= scope= flags=0 words=[] bindings=[('NEEDS_VALGRIND', {[LIT_CHARS 1]})]) ) (= scope= flags=0 words=[] bindings=[('NEEDS_DRMEMORY', {[LIT_CHARS 1]})]) ) (If (Com {[LIT_OTHER "["]} {[DQ [VarSub NEEDS_VALGRIND]]} {[LIT_OTHER "="] [LIT_OTHER "="]} {[DQ [LIT_CHARS 1]]} {[LIT_OTHER "]"]}) (List (= scope= flags=1 words=[] bindings=[('CHROME_VALGRIND', {[ComSub (Com {[LIT_CHARS sh]} {[VarSub THISDIR] [LIT_CHARS /locate_valgrind.sh]})]})]) (If (Com {[LIT_OTHER "["]} {[DQ [VarSub CHROME_VALGRIND]]} {[LIT_OTHER "="]} {[DQ ]} {[LIT_OTHER "]"]}) (Com {[LIT_CHARS exit]} {[LIT_CHARS 1]}) ) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "Using valgrind binaries from "][VarSub CHROME_VALGRIND]]}) (= scope= flags=0 words=[] bindings=[('PATH', {[DQ [VarSub CHROME_VALGRIND][LIT_CHARS "/bin:"][VarSub PATH]]})]) (= scope= flags=1 words=[] bindings=[('VALGRIND_LIB', {[DQ [VarSub CHROME_VALGRIND][LIT_CHARS /lib/valgrind]]})]) (= scope= flags=1 words=[] bindings=[('VALGRIND_LIB_INNER', {[DQ [VarSub CHROME_VALGRIND][LIT_CHARS /lib/valgrind]]})]) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "Cleanup /tmp from Valgrind stuff"]]}) (Pipeline (Com {[LIT_CHARS find]} {[LIT_CHARS /tmp]} {[LIT_CHARS -maxdepth]} {[LIT_CHARS 1]} {[\ LIT_ESCAPED_CHAR "\\("]} {[LIT_CHARS -name]} {[DQ [LIT_CHARS "vgdb-pipe-*"]]} {[LIT_CHARS -or]} {[LIT_CHARS -name]} {[DQ [LIT_CHARS "vg_logs_*"]]} {[LIT_CHARS -or]} {[LIT_CHARS -name]} {[DQ [LIT_CHARS "valgrind.*"]]} {[\ LIT_ESCAPED_CHAR "\\)"]} {[LIT_CHARS -mtime]} {[LIT_OTHER "+"] [LIT_CHARS 1]} {[LIT_CHARS -print0]}) (Com {[LIT_CHARS xargs]} {[LIT_CHARS -0]} {[LIT_CHARS rm]} {[LIT_CHARS -rf]}) ) ) ) (If (Com {[LIT_OTHER "["]} {[DQ [VarSub NEEDS_DRMEMORY]]} {[LIT_OTHER "="] [LIT_OTHER "="]} {[DQ [LIT_CHARS 1]]} {[LIT_OTHER "]"]}) (If (Com {[LIT_OTHER "["]} {[LIT_CHARS -z]} {[DQ [VarSub DRMEMORY_COMMAND]]} {[LIT_OTHER "]"]}) (List (= scope= flags=0 words=[] bindings=[('DRMEMORY_PATH', {[DQ [VarSub THISDIR][LIT_CHARS /../../third_party/drmemory]]})]) (= scope= flags=0 words=[] bindings=[('DRMEMORY_SFX', {[DQ [VarSub DRMEMORY_PATH][LIT_CHARS /drmemory-windows-sfx.exe]]})]) (If (Com {[LIT_OTHER "["]} {[LIT_OTHER "!"]} {[LIT_CHARS -f]} {[DQ [VarSub DRMEMORY_SFX]]} {[LIT_OTHER "]"]}) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "Can't find Dr. Memory executables."]]}) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "See http://www.chromium.org/developers/how-tos/using-valgrind/dr-memory"]]}) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "for the instructions on how to get them."]]}) (Com {[LIT_CHARS exit]} {[LIT_CHARS 1]}) ) ) (Com {[LIT_CHARS chmod]} {[LIT_OTHER "+"] [LIT_CHARS x]} {[DQ [VarSub DRMEMORY_SFX]]}) (Com {[DQ [VarSub DRMEMORY_SFX]]} {[LIT_CHARS -o] [DQ [VarSub DRMEMORY_PATH][LIT_CHARS /unpacked]]} {[LIT_CHARS -y]}) (= scope= flags=1 words=[] bindings=[('DRMEMORY_COMMAND', {[DQ [VarSub DRMEMORY_PATH][LIT_CHARS /unpacked/bin/drmemory.exe]]})]) ) ) ) (If (Com {[LIT_OTHER "["]} {[DQ [VarSub NEEDS_PIN]]} {[LIT_OTHER "="] [LIT_OTHER "="]} {[DQ [LIT_CHARS 1]]} {[LIT_OTHER "]"]}) (If (Com {[LIT_OTHER "["]} {[LIT_CHARS -z]} {[DQ [VarSub PIN_COMMAND]]} {[LIT_OTHER "]"]}) (List (= scope= flags=0 words=[] bindings=[('TSAN_PATH', {[DQ [VarSub THISDIR][LIT_CHARS /../../third_party/tsan]]})]) (= scope= flags=0 words=[] bindings=[('TSAN_SFX', {[DQ [VarSub TSAN_PATH][LIT_CHARS /tsan-x86-windows-sfx.exe]]})]) (Com {[LIT_CHARS echo]} {[DQ [VarSub TSAN_SFX]]}) (If (Com {[LIT_OTHER "["]} {[LIT_OTHER "!"]} {[LIT_CHARS -f]} {[VarSub TSAN_SFX]} {[LIT_OTHER "]"]}) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "Can't find ThreadSanitizer executables."]]}) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "See http://www.chromium.org/developers/how-tos/using-valgrind/threadsanitizer/threadsanitizer-on-windows"]]}) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "for the instructions on how to get them."]]}) (Com {[LIT_CHARS exit]} {[LIT_CHARS 1]}) ) ) (Com {[LIT_CHARS chmod]} {[LIT_OTHER "+"] [LIT_CHARS x]} {[DQ [VarSub TSAN_SFX]]}) (Com {[DQ [VarSub TSAN_SFX]]} {[LIT_CHARS -o] [DQ [VarSub TSAN_PATH]] [LIT_CHARS /unpacked]} {[LIT_CHARS -y]}) (= scope= flags=1 words=[] bindings=[('PIN_COMMAND', {[DQ [VarSub TSAN_PATH][LIT_CHARS /unpacked/tsan-x86-windows/tsan.bat]]})]) ) ) ) (Com {[LIT_CHARS python]} {[DQ [VarSub THISDIR][LIT_CHARS /chrome_tests.py]]} {[VarSub ARGV_COPY]} more_env=[('PYTHONPATH', {[VarSub THISDIR] [LIT_CHARS /../python/google]})] ) )