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 10b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov Copyright (C) 2000-2011 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 */ 89ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownextern Bool VG_(clo_trace_children); 90ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown/* String containing comma-separated patterns for executable names 91ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown that should not be traced into even when --trace-children=yes */ 92ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownextern HChar* VG_(clo_trace_children_skip); 93b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov/* The same as VG_(clo_trace_children), except that these patterns are 94b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov tested against the arguments for child processes, rather than the 95b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov executable name. */ 96b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovextern HChar* VG_(clo_trace_children_skip_by_arg); 97ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown/* After a fork, the child's output can become confusingly 98ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown intermingled with the parent's output. This is especially 99ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown problematic when VG_(clo_xml) is True. Setting 100ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown VG_(clo_child_silent_after_fork) causes children to fall silent 101ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown after fork() calls. Although note they become un-silent again 102ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown after the subsequent exec(). */ 103ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownextern Bool VG_(clo_child_silent_after_fork); 104ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 105ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown/* If the user specified --log-file=STR and/or --xml-file=STR, these 106ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown hold STR after expansion of the %p and %q templates. */ 107ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownextern Char* VG_(clo_log_fname_expanded); 108ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownextern Char* VG_(clo_xml_fname_expanded); 109ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 110f0cb39bc6abe181a0abdd1f6c778521ae8497277Evgeniy Stepanovextern Char* VG_(clo_log_fname_unexpanded); 111f0cb39bc6abe181a0abdd1f6c778521ae8497277Evgeniy Stepanovextern Char* VG_(clo_xml_fname_unexpanded); 112f0cb39bc6abe181a0abdd1f6c778521ae8497277Evgeniy Stepanov 113ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown/* Add timestamps to log messages? default: NO */ 114ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownextern Bool VG_(clo_time_stamp); 115ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 116ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown/* The file descriptor to read for input. default: 0 == stdin */ 117ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownextern Int VG_(clo_input_fd); 118ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 119ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown/* The number of suppression files specified. */ 120ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownextern Int VG_(clo_n_suppressions); 121ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown/* The names of the suppression files. */ 122ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownextern Char* VG_(clo_suppressions)[VG_CLO_MAX_SFILES]; 123ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 124ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown/* An array of strings harvested from --fullpath-after= flags. */ 125ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownextern Int VG_(clo_n_fullpath_after); 126ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownextern Char* VG_(clo_fullpath_after)[VG_CLO_MAX_FULLPATH_AFTER]; 127ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 128ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown/* DEBUG: print generated code? default: 00000000 ( == NO ) */ 129ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownextern UChar VG_(clo_trace_flags); 130ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown/* DEBUG: do bb profiling? default: 00000000 ( == NO ) */ 131ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownextern UChar VG_(clo_profile_flags); 132ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown/* DEBUG: if tracing codegen, be quiet until after this bb ( 0 ) */ 133ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownextern Int VG_(clo_trace_notbelow); 134ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown/* DEBUG: print system calls? default: NO */ 135ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownextern Bool VG_(clo_trace_syscalls); 136ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown/* DEBUG: print signal details? default: NO */ 137ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownextern Bool VG_(clo_trace_signals); 138ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown/* DEBUG: print symtab details? default: NO */ 139ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownextern Bool VG_(clo_trace_symtab); 140ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown/* DEBUG: restrict symtab etc details to object name pattern. Default: "*" */ 141ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownextern HChar* VG_(clo_trace_symtab_patt); 142ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown/* DEBUG: print call-frame-info details? default: NO */ 143ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownextern Bool VG_(clo_trace_cfi); 144ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown/* DEBUG: mimic /usr/bin/readelf --syms? default: NO */ 145ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownextern Bool VG_(clo_debug_dump_syms); 146ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown/* DEBUG: mimic /usr/bin/readelf --debug-dump=line? default: NO */ 147ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownextern Bool VG_(clo_debug_dump_line); 148ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown/* DEBUG: mimic /usr/bin/readelf --debug-dump=frames? default: NO */ 149ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownextern Bool VG_(clo_debug_dump_frames); 150ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown/* DEBUG: print redirection details? default: NO */ 151ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownextern Bool VG_(clo_trace_redir); 152ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown/* DEBUG: print thread scheduling events? default: NO */ 153ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownextern Bool VG_(clo_trace_sched); 154ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown/* DEBUG: do heap profiling? default: NO */ 155ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownextern Bool VG_(clo_profile_heap); 156ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown/* DEBUG: display gory details for the k'th most popular error. 157ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown default: Infinity. */ 158ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownextern Int VG_(clo_dump_error); 159ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown/* Engage miscellaneous weird hacks needed for some progs. */ 160ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownextern Char* VG_(clo_sim_hints); 161ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown/* Show symbols in the form 'name+offset' ? Default: NO */ 162ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownextern Bool VG_(clo_sym_offsets); 163ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown/* Read DWARF3 variable info even if tool doesn't ask for it? */ 164ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownextern Bool VG_(clo_read_var_info); 165f0cb39bc6abe181a0abdd1f6c778521ae8497277Evgeniy Stepanov 166f0cb39bc6abe181a0abdd1f6c778521ae8497277Evgeniy Stepanov/* Mountpoint for memfs */ 167f0cb39bc6abe181a0abdd1f6c778521ae8497277Evgeniy Stepanovextern Char* VG_(clo_memfs_malloc_path); 168f0cb39bc6abe181a0abdd1f6c778521ae8497277Evgeniy Stepanov/* Size of memfs page in Kbytes */ 169f0cb39bc6abe181a0abdd1f6c778521ae8497277Evgeniy Stepanovextern Int VG_(clo_memfs_page_size); 170f0cb39bc6abe181a0abdd1f6c778521ae8497277Evgeniy Stepanov 171ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 172ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown/* An array of strings harvested from --require-text-symbol= 173ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown flags. 174ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 175ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown Each string specifies a pair: a soname pattern and a text symbol 176ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown name pattern, separated by a colon. The patterns can be written 177ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown using the normal "?" and "*" wildcards. For example: 178ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown ":*libc.so*:foo?bar". 179ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 180ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown These flags take effect when reading debuginfo from objects. If an 181ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown object is loaded and the object's soname matches the soname 182ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown component of one of the specified pairs, then Valgrind will examine 183ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown all the text symbol names in the object. If none of them match the 184ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown symbol name component of that same specification, then the run is 185ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown aborted, with an error message. 186ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 187ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown The purpose of this is to support reliable usage of marked-up 188ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown libraries. For example, suppose we have a version of GCC's 189ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown libgomp.so which has been marked up with annotations to support 190ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown Helgrind. It is only too easy and confusing to load the 'wrong' 191ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown libgomp.so into the application. So the idea is: add a text symbol 192ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown in the marked-up library (eg), "annotated_for_helgrind_3_6", and 193ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown then give the flag 194ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 195ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown --require-text-symbol=:*libgomp*so*:annotated_for_helgrind_3_6 196ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 197ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown so that when libgomp.so is loaded, we scan the symbol table, and if 198ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown the symbol isn't present the run is aborted, rather than continuing 199ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown silently with the un-marked-up library. Note that you should put 200ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown the entire flag in quotes to stop shells messing up the * and ? 201ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown wildcards. */ 202ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownextern Int VG_(clo_n_req_tsyms); 203ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownextern HChar* VG_(clo_req_tsyms)[VG_CLO_MAX_REQ_TSYMS]; 204ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 205ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown/* Track open file descriptors? */ 206ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownextern Bool VG_(clo_track_fds); 207ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 208ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown/* Should we run __libc_freeres at exit? Sometimes causes crashes. 209ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown Default: YES. Note this is subservient to VG_(needs).libc_freeres; 210ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown if the latter says False, then the setting of VG_(clo_run_libc_freeres) 211ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown is ignored. Ie if a tool says no, I don't want this to run, that 212ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown cannot be overridden from the command line. */ 213ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownextern Bool VG_(clo_run_libc_freeres); 214ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 215ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown/* Should we show VEX emulation warnings? Default: NO */ 216ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownextern Bool VG_(clo_show_emwarns); 217ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 218ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown/* How much does the stack pointer have to change before tools 219ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown consider a stack switch to have happened? Default: 2000000 bytes 220ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown NB: must be host-word-sized to be correct (hence Word). */ 221ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownextern Word VG_(clo_max_stackframe); 222ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown/* How large should Valgrind allow the primary thread's guest stack to 223ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown be? */ 224ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownextern Word VG_(clo_main_stacksize); 225ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 226ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown/* Delay startup to allow GDB to be attached? Default: NO */ 227ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownextern Bool VG_(clo_wait_for_gdb); 228ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 229ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown/* To what extent should self-checking translations be made? These 230ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown are needed to deal with self-modifying code on uncooperative 231ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown platforms. */ 232ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Browntypedef 233ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown enum { 234ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown Vg_SmcNone, // never generate self-checking translations 235ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown Vg_SmcStack, // generate s-c-t's for code found in stacks 236ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown // (this is the default) 237b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov Vg_SmcAll, // make all translations self-checking. 238b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov Vg_SmcAllNonFile // make all translations derived from 239b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov // non-file-backed memory self checking 240ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown } 241ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown VgSmc; 242ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 243ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown/* Describe extent to which self-modifying-code should be 244ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown auto-detected. */ 245ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownextern VgSmc VG_(clo_smc_check); 246ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 247ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown/* String containing comma-separated names of minor kernel variants, 248ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown so they can be properly handled by m_syswrap. */ 249ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownextern HChar* VG_(clo_kernel_variant); 250ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 251ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown/* Darwin-specific: automatically run /usr/bin/dsymutil to update 252ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown .dSYM directories as necessary? */ 253ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownextern Bool VG_(clo_dsymutil); 254ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 255b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov/* NaCl nexe to read symbols from. Overrides the filename NaCl reports, if 256b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov any. */ 257b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovextern Char* VG_(clo_nacl_file); 258b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 259ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown/* Should we trace into this child executable (across execve etc) ? 260b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov This involves considering --trace-children=, 261b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov --trace-children-skip=, --trace-children-skip-by-arg=, and the name 262b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov of the executable. 'child_argv' must not include the name of the 263b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov executable itself; iow child_argv[0] must be the first arg, if any, 264b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov for the child. */ 265b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovextern Bool VG_(should_we_trace_this_child) ( HChar* child_exe_name, 266b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov HChar** child_argv ); 267ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 268ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#endif // __PUB_CORE_OPTIONS_H 269ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 270ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown/*--------------------------------------------------------------------*/ 271ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown/*--- end ---*/ 272ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown/*--------------------------------------------------------------------*/ 273