1ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 2ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown/*--------------------------------------------------------------------*/ 3ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown/*--- Command line options. pub_core_options.h ---*/ 4ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown/*--------------------------------------------------------------------*/ 5ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 6ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown/* 7ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown This file is part of Valgrind, a dynamic binary instrumentation 8ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown framework. 9ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 10663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng Copyright (C) 2000-2012 Julian Seward 11ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown jseward@acm.org 12ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 13ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown This program is free software; you can redistribute it and/or 14ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown modify it under the terms of the GNU General Public License as 15ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown published by the Free Software Foundation; either version 2 of the 16ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown License, or (at your option) any later version. 17ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 18ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown This program is distributed in the hope that it will be useful, but 19ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown WITHOUT ANY WARRANTY; without even the implied warranty of 20ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 21ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown General Public License for more details. 22ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 23ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown You should have received a copy of the GNU General Public License 24ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown along with this program; if not, write to the Free Software 25ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 26ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 02111-1307, USA. 27ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 28ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown The GNU General Public License is contained in the file COPYING. 29ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown*/ 30ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 31ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#ifndef __PUB_CORE_OPTIONS_H 32ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define __PUB_CORE_OPTIONS_H 33ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 34ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown//-------------------------------------------------------------------- 35ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown// PURPOSE: This module holds the variables for all command line options, 36ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown// plus some functions and macros for manipulating them. Almost every 37ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown// other module imports this one, if only for VG_(clo_verbosity). 38ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown//-------------------------------------------------------------------- 39ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 40ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#include "pub_tool_options.h" 41ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 42ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown/* The max number of suppression files. */ 43ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VG_CLO_MAX_SFILES 100 44ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 45ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown/* The max number of --require-text-symbol= specification strings. */ 46ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VG_CLO_MAX_REQ_TSYMS 100 47ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 48ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown/* The max number of --fullpath-after= parameters. */ 49ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VG_CLO_MAX_FULLPATH_AFTER 100 50ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 51ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown/* Should we stop collecting errors if too many appear? default: YES */ 52ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownextern Bool VG_(clo_error_limit); 53ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown/* Alternative exit code to hand to parent if errors were found. 54ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown default: 0 (no, return the application's exit code in the normal 55ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown way. */ 56ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownextern Int VG_(clo_error_exitcode); 57b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 58b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovtypedef 59b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov enum { 60b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov Vg_VgdbNo, // Do not activate gdbserver. 61b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov Vg_VgdbYes, // Activate gdbserver (default). 62b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov Vg_VgdbFull, // ACtivate gdbserver in full mode, allowing 63b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov // a precise handling of watchpoints and single stepping 64b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov // at any moment. 65b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov } 66b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov VgVgdb; 67b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov/* if != Vg_VgdbNo, allows valgrind to serve vgdb/gdb. */ 68b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovextern VgVgdb VG_(clo_vgdb); 69b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov/* if > 0, checks every VG_(clo_vgdb_poll) BBS if vgdb wants to be served. */ 70b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovextern Int VG_(clo_vgdb_poll); 71b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov/* prefix for the named pipes (FIFOs) used by vgdb/gdb to communicate with valgrind */ 72b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovextern HChar* VG_(clo_vgdb_prefix); 73b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov/* if True, gdbserver in valgrind will expose a target description containing 74b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov shadow registers */ 75b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovextern Bool VG_(clo_vgdb_shadow_registers); 76b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 77ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown/* Enquire about whether to attach to a debugger at errors? default: NO */ 78ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownextern Bool VG_(clo_db_attach); 79ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown/* The debugger command? default: whatever gdb ./configure found */ 80ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownextern Char* VG_(clo_db_command); 81ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown/* Generating a suppression for each error? default: 0 (NO) 82ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown Other values: 1 (yes, but ask user), 2 (yes, don't ask user) */ 83ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownextern Int VG_(clo_gen_suppressions); 84ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown/* Sanity-check level: 0 = none, 1 (default), > 1 = expensive. */ 85ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownextern Int VG_(clo_sanity_level); 86ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown/* Automatically attempt to demangle C++ names? default: YES */ 87ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownextern Bool VG_(clo_demangle); 88ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown/* Simulate child processes? default: NO */ 89663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng/* Soname synonyms : a string containing a list of pairs 90663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng xxxxx=yyyyy separated by commas. 91663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng E.g. --soname-synonyms=somalloc=libtcmalloc*.so*,solibtruc=NONE */ 92663860b1408516d02ebfcb3a9999a134e6cfb223Ben Chengextern HChar* VG_(clo_soname_synonyms); 93ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownextern Bool VG_(clo_trace_children); 94ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown/* String containing comma-separated patterns for executable names 95ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown that should not be traced into even when --trace-children=yes */ 96ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownextern HChar* VG_(clo_trace_children_skip); 97b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov/* The same as VG_(clo_trace_children), except that these patterns are 98b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov tested against the arguments for child processes, rather than the 99b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov executable name. */ 100b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovextern HChar* VG_(clo_trace_children_skip_by_arg); 101ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown/* After a fork, the child's output can become confusingly 102ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown intermingled with the parent's output. This is especially 103ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown problematic when VG_(clo_xml) is True. Setting 104ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown VG_(clo_child_silent_after_fork) causes children to fall silent 105ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown after fork() calls. Although note they become un-silent again 106ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown after the subsequent exec(). */ 107ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownextern Bool VG_(clo_child_silent_after_fork); 108ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 109ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown/* If the user specified --log-file=STR and/or --xml-file=STR, these 110ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown hold STR after expansion of the %p and %q templates. */ 111ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownextern Char* VG_(clo_log_fname_expanded); 112ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownextern Char* VG_(clo_xml_fname_expanded); 113ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 114ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown/* Add timestamps to log messages? default: NO */ 115ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownextern Bool VG_(clo_time_stamp); 116ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 117ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown/* The file descriptor to read for input. default: 0 == stdin */ 118ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownextern Int VG_(clo_input_fd); 119ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 120ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown/* The number of suppression files specified. */ 121ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownextern Int VG_(clo_n_suppressions); 122ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown/* The names of the suppression files. */ 123ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownextern Char* VG_(clo_suppressions)[VG_CLO_MAX_SFILES]; 124ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 125ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown/* An array of strings harvested from --fullpath-after= flags. */ 126ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownextern Int VG_(clo_n_fullpath_after); 127ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownextern Char* VG_(clo_fullpath_after)[VG_CLO_MAX_FULLPATH_AFTER]; 128ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 129ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown/* DEBUG: print generated code? default: 00000000 ( == NO ) */ 130ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownextern UChar VG_(clo_trace_flags); 131ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown/* DEBUG: do bb profiling? default: 00000000 ( == NO ) */ 132ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownextern UChar VG_(clo_profile_flags); 133663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng/* DEBUG: if tracing codegen, be quiet until after this bb */ 134ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownextern Int VG_(clo_trace_notbelow); 135663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng/* DEBUG: if tracing codegen, be quiet after this bb */ 136663860b1408516d02ebfcb3a9999a134e6cfb223Ben Chengextern Int VG_(clo_trace_notabove); 137ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown/* DEBUG: print system calls? default: NO */ 138ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownextern Bool VG_(clo_trace_syscalls); 139ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown/* DEBUG: print signal details? default: NO */ 140ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownextern Bool VG_(clo_trace_signals); 141ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown/* DEBUG: print symtab details? default: NO */ 142ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownextern Bool VG_(clo_trace_symtab); 143ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown/* DEBUG: restrict symtab etc details to object name pattern. Default: "*" */ 144ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownextern HChar* VG_(clo_trace_symtab_patt); 145ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown/* DEBUG: print call-frame-info details? default: NO */ 146ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownextern Bool VG_(clo_trace_cfi); 147ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown/* DEBUG: mimic /usr/bin/readelf --syms? default: NO */ 148ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownextern Bool VG_(clo_debug_dump_syms); 149ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown/* DEBUG: mimic /usr/bin/readelf --debug-dump=line? default: NO */ 150ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownextern Bool VG_(clo_debug_dump_line); 151ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown/* DEBUG: mimic /usr/bin/readelf --debug-dump=frames? default: NO */ 152ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownextern Bool VG_(clo_debug_dump_frames); 153ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown/* DEBUG: print redirection details? default: NO */ 154ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownextern Bool VG_(clo_trace_redir); 155663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng/* Enable fair scheduling on multicore systems? default: NO */ 156663860b1408516d02ebfcb3a9999a134e6cfb223Ben Chengenum FairSchedType { disable_fair_sched, enable_fair_sched, try_fair_sched }; 157663860b1408516d02ebfcb3a9999a134e6cfb223Ben Chengextern enum FairSchedType VG_(clo_fair_sched); 158ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown/* DEBUG: print thread scheduling events? default: NO */ 159ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownextern Bool VG_(clo_trace_sched); 160ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown/* DEBUG: do heap profiling? default: NO */ 161ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownextern Bool VG_(clo_profile_heap); 162663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define MAX_REDZONE_SZB 128 163663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng// Maximum for the default values for core arenas and for client 164663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng// arena given by the tool. 165663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng// 128 is no special figure, just something not too big 166663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define MAX_CLO_REDZONE_SZB 4096 167663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng// We allow the user to increase the redzone size to 4Kb : 168663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng// This allows "off by one" in an array of pages to be detected. 169663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define CORE_REDZONE_DEFAULT_SZB 4 170663860b1408516d02ebfcb3a9999a134e6cfb223Ben Chengextern Int VG_(clo_core_redzone_size); 171663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng// VG_(clo_redzone_size) has default value -1, indicating to keep 172663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng// the tool provided value. 173663860b1408516d02ebfcb3a9999a134e6cfb223Ben Chengextern Int VG_(clo_redzone_size); 174ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown/* DEBUG: display gory details for the k'th most popular error. 175ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown default: Infinity. */ 176ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownextern Int VG_(clo_dump_error); 177ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown/* Engage miscellaneous weird hacks needed for some progs. */ 178ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownextern Char* VG_(clo_sim_hints); 179ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown/* Show symbols in the form 'name+offset' ? Default: NO */ 180ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownextern Bool VG_(clo_sym_offsets); 181ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown/* Read DWARF3 variable info even if tool doesn't ask for it? */ 182ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownextern Bool VG_(clo_read_var_info); 183663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng/* Which prefix to strip from full source file paths, if any. */ 184663860b1408516d02ebfcb3a9999a134e6cfb223Ben Chengextern Char* VG_(clo_prefix_to_strip); 185ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 186ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown/* An array of strings harvested from --require-text-symbol= 187ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown flags. 188ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 189ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown Each string specifies a pair: a soname pattern and a text symbol 190ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown name pattern, separated by a colon. The patterns can be written 191ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown using the normal "?" and "*" wildcards. For example: 192ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown ":*libc.so*:foo?bar". 193ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 194ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown These flags take effect when reading debuginfo from objects. If an 195ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown object is loaded and the object's soname matches the soname 196ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown component of one of the specified pairs, then Valgrind will examine 197ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown all the text symbol names in the object. If none of them match the 198ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown symbol name component of that same specification, then the run is 199ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown aborted, with an error message. 200ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 201ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown The purpose of this is to support reliable usage of marked-up 202ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown libraries. For example, suppose we have a version of GCC's 203ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown libgomp.so which has been marked up with annotations to support 204ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown Helgrind. It is only too easy and confusing to load the 'wrong' 205ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown libgomp.so into the application. So the idea is: add a text symbol 206ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown in the marked-up library (eg), "annotated_for_helgrind_3_6", and 207ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown then give the flag 208ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 209ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown --require-text-symbol=:*libgomp*so*:annotated_for_helgrind_3_6 210ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 211ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown so that when libgomp.so is loaded, we scan the symbol table, and if 212ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown the symbol isn't present the run is aborted, rather than continuing 213ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown silently with the un-marked-up library. Note that you should put 214ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown the entire flag in quotes to stop shells messing up the * and ? 215ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown wildcards. */ 216ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownextern Int VG_(clo_n_req_tsyms); 217ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownextern HChar* VG_(clo_req_tsyms)[VG_CLO_MAX_REQ_TSYMS]; 218ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 219ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown/* Track open file descriptors? */ 220ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownextern Bool VG_(clo_track_fds); 221ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 222ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown/* Should we run __libc_freeres at exit? Sometimes causes crashes. 223ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown Default: YES. Note this is subservient to VG_(needs).libc_freeres; 224ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown if the latter says False, then the setting of VG_(clo_run_libc_freeres) 225ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown is ignored. Ie if a tool says no, I don't want this to run, that 226ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown cannot be overridden from the command line. */ 227ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownextern Bool VG_(clo_run_libc_freeres); 228ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 229ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown/* Should we show VEX emulation warnings? Default: NO */ 230ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownextern Bool VG_(clo_show_emwarns); 231ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 232ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown/* How much does the stack pointer have to change before tools 233ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown consider a stack switch to have happened? Default: 2000000 bytes 234ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown NB: must be host-word-sized to be correct (hence Word). */ 235ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownextern Word VG_(clo_max_stackframe); 236ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown/* How large should Valgrind allow the primary thread's guest stack to 237ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown be? */ 238ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownextern Word VG_(clo_main_stacksize); 239ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 240ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown/* Delay startup to allow GDB to be attached? Default: NO */ 241ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownextern Bool VG_(clo_wait_for_gdb); 242ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 243ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown/* To what extent should self-checking translations be made? These 244ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown are needed to deal with self-modifying code on uncooperative 245ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown platforms. */ 246ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Browntypedef 247ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown enum { 248ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown Vg_SmcNone, // never generate self-checking translations 249ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown Vg_SmcStack, // generate s-c-t's for code found in stacks 250ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown // (this is the default) 251b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov Vg_SmcAll, // make all translations self-checking. 252b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov Vg_SmcAllNonFile // make all translations derived from 253b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov // non-file-backed memory self checking 254ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown } 255ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown VgSmc; 256ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 257ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown/* Describe extent to which self-modifying-code should be 258ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown auto-detected. */ 259ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownextern VgSmc VG_(clo_smc_check); 260ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 261ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown/* String containing comma-separated names of minor kernel variants, 262ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown so they can be properly handled by m_syswrap. */ 263ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownextern HChar* VG_(clo_kernel_variant); 264ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 265ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown/* Darwin-specific: automatically run /usr/bin/dsymutil to update 266ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown .dSYM directories as necessary? */ 267ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownextern Bool VG_(clo_dsymutil); 268ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 269ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown/* Should we trace into this child executable (across execve etc) ? 270b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov This involves considering --trace-children=, 271b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov --trace-children-skip=, --trace-children-skip-by-arg=, and the name 272b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov of the executable. 'child_argv' must not include the name of the 273b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov executable itself; iow child_argv[0] must be the first arg, if any, 274b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov for the child. */ 275b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovextern Bool VG_(should_we_trace_this_child) ( HChar* child_exe_name, 276b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov HChar** child_argv ); 277ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 278ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#endif // __PUB_CORE_OPTIONS_H 279ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 280ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown/*--------------------------------------------------------------------*/ 281ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown/*--- end ---*/ 282ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown/*--------------------------------------------------------------------*/ 283