blob: 88eeaf4d09c5f57642df0f96f192e2b6b7b669e2 [file] [log] [blame]
njn20242342005-05-16 23:31:24 +00001
2/*--------------------------------------------------------------------*/
3/*--- Command line options. pub_core_options.h ---*/
4/*--------------------------------------------------------------------*/
5
6/*
7 This file is part of Valgrind, a dynamic binary instrumentation
8 framework.
9
Elliott Hughesed398002017-06-21 14:41:24 -070010 Copyright (C) 2000-2017 Julian Seward
njn20242342005-05-16 23:31:24 +000011 jseward@acm.org
12
13 This program is free software; you can redistribute it and/or
14 modify it under the terms of the GNU General Public License as
15 published by the Free Software Foundation; either version 2 of the
16 License, or (at your option) any later version.
17
18 This program is distributed in the hope that it will be useful, but
19 WITHOUT ANY WARRANTY; without even the implied warranty of
20 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
21 General Public License for more details.
22
23 You should have received a copy of the GNU General Public License
24 along with this program; if not, write to the Free Software
25 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
26 02111-1307, USA.
27
28 The GNU General Public License is contained in the file COPYING.
29*/
30
31#ifndef __PUB_CORE_OPTIONS_H
32#define __PUB_CORE_OPTIONS_H
33
34//--------------------------------------------------------------------
35// PURPOSE: This module holds the variables for all command line options,
36// plus some functions and macros for manipulating them. Almost every
37// other module imports this one, if only for VG_(clo_verbosity).
38//--------------------------------------------------------------------
njn20242342005-05-16 23:31:24 +000039#include "pub_tool_options.h"
florian79316272014-10-07 18:36:28 +000040#include "pub_core_xarray.h"
sewardj14cdbf82010-10-12 00:44:05 +000041
Elliott Hughesed398002017-06-21 14:41:24 -070042/* Valgrind tool name. Defaults to "memcheck". */
43extern const HChar *VG_(clo_toolname);
44
njn20242342005-05-16 23:31:24 +000045/* Should we stop collecting errors if too many appear? default: YES */
46extern Bool VG_(clo_error_limit);
sewardjb9779082006-05-12 23:50:15 +000047/* Alternative exit code to hand to parent if errors were found.
48 default: 0 (no, return the application's exit code in the normal
49 way. */
50extern Int VG_(clo_error_exitcode);
sewardj3b290482011-05-06 21:02:55 +000051
philippe7b3d3562014-11-12 19:43:29 +000052/* Markers used to mark the begin/end of an error, when errors are
53 printed in textual (non xml) format.
54 [0] is the error begin marker, [1] is the error end marker.
55 default: no markers. */
56extern HChar *VG_(clo_error_markers)[2];
57
sewardj3b290482011-05-06 21:02:55 +000058typedef
59 enum {
60 Vg_VgdbNo, // Do not activate gdbserver.
61 Vg_VgdbYes, // Activate gdbserver (default).
62 Vg_VgdbFull, // ACtivate gdbserver in full mode, allowing
63 // a precise handling of watchpoints and single stepping
64 // at any moment.
65 }
66 VgVgdb;
67/* if != Vg_VgdbNo, allows valgrind to serve vgdb/gdb. */
68extern VgVgdb VG_(clo_vgdb);
69/* if > 0, checks every VG_(clo_vgdb_poll) BBS if vgdb wants to be served. */
70extern Int VG_(clo_vgdb_poll);
philippecffe2a52014-01-11 13:56:48 +000071
philippe180a7502014-04-20 13:41:10 +000072/* Specify when Valgrind gdbserver stops the execution and wait
73 for a GDB to connect. */
74typedef
75 enum { // Stop :
76 VgdbStopAt_Startup, // just before the client starts to execute.
77 VgdbStopAt_Exit, // just before the client exits.
78 VgdbStopAt_ValgrindAbExit // on abnormal valgrind exit.
79 }
80 VgdbStopAt;
81// Build mask to check or set VgdbStop_At a membership
82#define VgdbStopAt2S(a) (1 << (a))
83// VgdbStopAt a is member of the Set s ?
84#define VgdbStopAtiS(a,s) ((s) & VgdbStopAt2S(a))
philippe180a7502014-04-20 13:41:10 +000085extern UInt VG_(clo_vgdb_stop_at); // A set of VgdbStopAt reasons.
86
sewardj3b290482011-05-06 21:02:55 +000087/* prefix for the named pipes (FIFOs) used by vgdb/gdb to communicate with valgrind */
philippecffe2a52014-01-11 13:56:48 +000088extern const HChar *VG_(clo_vgdb_prefix);
89
sewardj3b290482011-05-06 21:02:55 +000090/* if True, gdbserver in valgrind will expose a target description containing
91 shadow registers */
92extern Bool VG_(clo_vgdb_shadow_registers);
sewardj3b290482011-05-06 21:02:55 +000093
njn20242342005-05-16 23:31:24 +000094/* Generating a suppression for each error? default: 0 (NO)
95 Other values: 1 (yes, but ask user), 2 (yes, don't ask user) */
sewardjb9779082006-05-12 23:50:15 +000096extern Int VG_(clo_gen_suppressions);
njn20242342005-05-16 23:31:24 +000097/* Sanity-check level: 0 = none, 1 (default), > 1 = expensive. */
98extern Int VG_(clo_sanity_level);
99/* Automatically attempt to demangle C++ names? default: YES */
100extern Bool VG_(clo_demangle);
philippe1e470b52012-05-11 19:33:46 +0000101/* Soname synonyms : a string containing a list of pairs
102 xxxxx=yyyyy separated by commas.
103 E.g. --soname-synonyms=somalloc=libtcmalloc*.so*,solibtruc=NONE */
florian19f91bb2012-11-10 22:29:54 +0000104extern const HChar* VG_(clo_soname_synonyms);
philippeb314d102014-11-07 22:16:27 +0000105/* Valgrind-ise child processes (follow execve)? default : NO */
njn20242342005-05-16 23:31:24 +0000106extern Bool VG_(clo_trace_children);
sewardj06421272009-11-05 08:55:13 +0000107/* String containing comma-separated patterns for executable names
108 that should not be traced into even when --trace-children=yes */
florian19f91bb2012-11-10 22:29:54 +0000109extern const HChar* VG_(clo_trace_children_skip);
sewardj9ab64a42010-12-06 11:40:04 +0000110/* The same as VG_(clo_trace_children), except that these patterns are
111 tested against the arguments for child processes, rather than the
112 executable name. */
florian19f91bb2012-11-10 22:29:54 +0000113extern const HChar* VG_(clo_trace_children_skip_by_arg);
sewardj6e31f802007-11-17 22:29:25 +0000114/* After a fork, the child's output can become confusingly
115 intermingled with the parent's output. This is especially
116 problematic when VG_(clo_xml) is True. Setting
117 VG_(clo_child_silent_after_fork) causes children to fall silent
sewardj738856f2009-07-15 14:48:32 +0000118 after fork() calls. Although note they become un-silent again
119 after the subsequent exec(). */
sewardj6e31f802007-11-17 22:29:25 +0000120extern Bool VG_(clo_child_silent_after_fork);
njn20242342005-05-16 23:31:24 +0000121
sewardj738856f2009-07-15 14:48:32 +0000122/* If the user specified --log-file=STR and/or --xml-file=STR, these
Elliott Hughesed398002017-06-21 14:41:24 -0700123 hold STR before expansion. */
124extern const HChar *VG_(clo_log_fname_unexpanded);
125extern const HChar *VG_(clo_xml_fname_unexpanded);
njn20242342005-05-16 23:31:24 +0000126
127/* Add timestamps to log messages? default: NO */
128extern Bool VG_(clo_time_stamp);
129
130/* The file descriptor to read for input. default: 0 == stdin */
131extern Int VG_(clo_input_fd);
sewardjf9ebc392010-05-09 22:30:43 +0000132
bart2c68e3e2014-06-22 10:11:59 +0000133/* Whether or not to load the default suppressions. */
134extern Bool VG_(clo_default_supp);
florian79316272014-10-07 18:36:28 +0000135
njn20242342005-05-16 23:31:24 +0000136/* The names of the suppression files. */
florian79316272014-10-07 18:36:28 +0000137extern XArray *VG_(clo_suppressions);
njn20242342005-05-16 23:31:24 +0000138
sewardj14cdbf82010-10-12 00:44:05 +0000139/* An array of strings harvested from --fullpath-after= flags. */
florian79316272014-10-07 18:36:28 +0000140extern XArray *VG_(clo_fullpath_after);
sewardj14cdbf82010-10-12 00:44:05 +0000141
sewardj8b6573d2012-12-05 22:15:14 +0000142/* Full path to additional path to search for debug symbols */
sewardj71826f72012-12-06 18:23:20 +0000143extern const HChar* VG_(clo_extra_debuginfo_path);
sewardj8b6573d2012-12-05 22:15:14 +0000144
sewardj5d616df2013-07-02 08:07:15 +0000145/* Address of a debuginfo server to use. Either an IPv4 address of
146 the form "d.d.d.d" or that plus a port spec, hence of the form
147 "d.d.d.d:d", where d is one or more digits. */
148extern const HChar* VG_(clo_debuginfo_server);
149
150/* Do we allow reading debuginfo from debuginfo objects that don't
151 match (in some sense) the main object? This is dangerous, so the
152 default is NO (False). In any case it applies only to objects
153 found either in _extra_debuginfo_path or via the
154 _debuginfo_server. */
155extern Bool VG_(clo_allow_mismatched_debuginfo);
njn20242342005-05-16 23:31:24 +0000156
157/* DEBUG: print generated code? default: 00000000 ( == NO ) */
158extern UChar VG_(clo_trace_flags);
sewardj17c5e2e2012-12-28 09:12:14 +0000159
160/* DEBUG: do SB profiling? default: False (== NO). NOTE: does not
161 have an associated command line flag. Is set to True whenever
162 --profile-flags= is specified. */
163extern Bool VG_(clo_profyle_sbs);
164/* DEBUG: if doing SB profiling, provides bits for which JIT stages
165 are shown. Same meaning as for clo_trace_flags. default: zero (==
166 show block counts only) */
167extern UChar VG_(clo_profyle_flags);
168/* DEBUG: if doing SB profiling, dump blocks and zero counters after
169 this-many back edges (event checks). default: zero (== show
170 profiling results only at the end of the run. */
171extern ULong VG_(clo_profyle_interval);
172
florian29e022d2012-07-02 21:13:34 +0000173/* DEBUG: if tracing codegen, be quiet until after this bb */
njn20242342005-05-16 23:31:24 +0000174extern Int VG_(clo_trace_notbelow);
florian29e022d2012-07-02 21:13:34 +0000175/* DEBUG: if tracing codegen, be quiet after this bb */
176extern Int VG_(clo_trace_notabove);
njn20242342005-05-16 23:31:24 +0000177/* DEBUG: print system calls? default: NO */
178extern Bool VG_(clo_trace_syscalls);
179/* DEBUG: print signal details? default: NO */
180extern Bool VG_(clo_trace_signals);
181/* DEBUG: print symtab details? default: NO */
182extern Bool VG_(clo_trace_symtab);
sewardjf767d962007-02-12 17:47:14 +0000183/* DEBUG: restrict symtab etc details to object name pattern. Default: "*" */
florian19f91bb2012-11-10 22:29:54 +0000184extern const HChar* VG_(clo_trace_symtab_patt);
njn20242342005-05-16 23:31:24 +0000185/* DEBUG: print call-frame-info details? default: NO */
186extern Bool VG_(clo_trace_cfi);
sewardjf767d962007-02-12 17:47:14 +0000187/* DEBUG: mimic /usr/bin/readelf --syms? default: NO */
188extern Bool VG_(clo_debug_dump_syms);
189/* DEBUG: mimic /usr/bin/readelf --debug-dump=line? default: NO */
190extern Bool VG_(clo_debug_dump_line);
191/* DEBUG: mimic /usr/bin/readelf --debug-dump=frames? default: NO */
192extern Bool VG_(clo_debug_dump_frames);
njn20242342005-05-16 23:31:24 +0000193/* DEBUG: print redirection details? default: NO */
194extern Bool VG_(clo_trace_redir);
bart78bfc712011-12-08 16:14:59 +0000195/* Enable fair scheduling on multicore systems? default: NO */
196enum FairSchedType { disable_fair_sched, enable_fair_sched, try_fair_sched };
197extern enum FairSchedType VG_(clo_fair_sched);
njn20242342005-05-16 23:31:24 +0000198/* DEBUG: print thread scheduling events? default: NO */
199extern Bool VG_(clo_trace_sched);
sewardj9c606bd2008-09-18 18:12:50 +0000200/* DEBUG: do heap profiling? default: NO */
201extern Bool VG_(clo_profile_heap);
philipped99c26a2012-07-31 22:17:28 +0000202#define MAX_REDZONE_SZB 128
203// Maximum for the default values for core arenas and for client
204// arena given by the tool.
205// 128 is no special figure, just something not too big
206#define MAX_CLO_REDZONE_SZB 4096
207// We allow the user to increase the redzone size to 4Kb :
208// This allows "off by one" in an array of pages to be detected.
209#define CORE_REDZONE_DEFAULT_SZB 4
210extern Int VG_(clo_core_redzone_size);
211// VG_(clo_redzone_size) has default value -1, indicating to keep
212// the tool provided value.
sewardj9c606bd2008-09-18 18:12:50 +0000213/* DEBUG: display gory details for the k'th most popular error.
214 default: Infinity. */
njn20242342005-05-16 23:31:24 +0000215extern Int VG_(clo_dump_error);
philippeec905f72014-08-17 20:03:51 +0000216
njn20242342005-05-16 23:31:24 +0000217/* Engage miscellaneous weird hacks needed for some progs. */
philippeec905f72014-08-17 20:03:51 +0000218typedef
219 enum {
philippeec905f72014-08-17 20:03:51 +0000220 SimHint_lax_ioctls,
sewardj8eb8bab2015-07-21 14:44:28 +0000221 SimHint_lax_doors,
philippe98486902014-08-19 22:46:44 +0000222 SimHint_fuse_compatible,
223 SimHint_enable_outer,
224 SimHint_no_inner_prefix,
Elliott Hughesed398002017-06-21 14:41:24 -0700225 SimHint_no_nptl_pthread_stackcache,
226 SimHint_fallback_llsc
philippeec905f72014-08-17 20:03:51 +0000227 }
228 SimHint;
229
230// Build mask to check or set SimHint a membership
231#define SimHint2S(a) (1 << (a))
232// SimHint h is member of the Set s ?
Elliott Hughesed398002017-06-21 14:41:24 -0700233#define SimHintiS(h,s) (((s) & SimHint2S(h)) != 0)
philippeec905f72014-08-17 20:03:51 +0000234extern UInt VG_(clo_sim_hints);
235
sewardj41ded2c2006-10-17 01:34:57 +0000236/* Show symbols in the form 'name+offset' ? Default: NO */
237extern Bool VG_(clo_sym_offsets);
philippea0a73932014-06-15 15:42:20 +0000238/* Read DWARF3 inline info ? */
239extern Bool VG_(clo_read_inline_info);
sewardjb8b79ad2008-03-03 01:35:41 +0000240/* Read DWARF3 variable info even if tool doesn't ask for it? */
241extern Bool VG_(clo_read_var_info);
bart5dd01902010-08-31 15:18:32 +0000242/* Which prefix to strip from full source file paths, if any. */
florian19f91bb2012-11-10 22:29:54 +0000243extern const HChar* VG_(clo_prefix_to_strip);
njn20242342005-05-16 23:31:24 +0000244
sewardjf9ebc392010-05-09 22:30:43 +0000245/* An array of strings harvested from --require-text-symbol=
246 flags.
247
248 Each string specifies a pair: a soname pattern and a text symbol
249 name pattern, separated by a colon. The patterns can be written
250 using the normal "?" and "*" wildcards. For example:
251 ":*libc.so*:foo?bar".
252
253 These flags take effect when reading debuginfo from objects. If an
254 object is loaded and the object's soname matches the soname
255 component of one of the specified pairs, then Valgrind will examine
256 all the text symbol names in the object. If none of them match the
257 symbol name component of that same specification, then the run is
258 aborted, with an error message.
259
260 The purpose of this is to support reliable usage of marked-up
261 libraries. For example, suppose we have a version of GCC's
262 libgomp.so which has been marked up with annotations to support
263 Helgrind. It is only too easy and confusing to load the 'wrong'
264 libgomp.so into the application. So the idea is: add a text symbol
265 in the marked-up library (eg), "annotated_for_helgrind_3_6", and
266 then give the flag
267
268 --require-text-symbol=:*libgomp*so*:annotated_for_helgrind_3_6
269
270 so that when libgomp.so is loaded, we scan the symbol table, and if
271 the symbol isn't present the run is aborted, rather than continuing
272 silently with the un-marked-up library. Note that you should put
273 the entire flag in quotes to stop shells messing up the * and ?
274 wildcards. */
florian79316272014-10-07 18:36:28 +0000275extern XArray *VG_(clo_req_tsyms);
sewardjf9ebc392010-05-09 22:30:43 +0000276
njn20242342005-05-16 23:31:24 +0000277/* Track open file descriptors? */
278extern Bool VG_(clo_track_fds);
279
280/* Should we run __libc_freeres at exit? Sometimes causes crashes.
281 Default: YES. Note this is subservient to VG_(needs).libc_freeres;
sewardj19617ae2005-10-20 01:09:57 +0000282 if the latter says False, then the setting of VG_(clo_run_libc_freeres)
njn20242342005-05-16 23:31:24 +0000283 is ignored. Ie if a tool says no, I don't want this to run, that
284 cannot be overridden from the command line. */
285extern Bool VG_(clo_run_libc_freeres);
njn20242342005-05-16 23:31:24 +0000286
Elliott Hughesa0664b92017-04-18 17:46:52 -0700287/* Should we run __gnu_cxx::__freeres at exit for C++ programs?
288 Default: YES. Note this is subservient to VG_(needs).cxx_freeres;
289 if the latter says False, then the setting of VG_(clo_run_cxx_freeres)
290 is ignored. Ie if a tool says no, I don't want this to run, that
291 cannot be overridden from the command line. */
292extern Bool VG_(clo_run_cxx_freeres);
293
njn20242342005-05-16 23:31:24 +0000294/* Should we show VEX emulation warnings? Default: NO */
295extern Bool VG_(clo_show_emwarns);
296
297/* How much does the stack pointer have to change before tools
sewardj91b470c2007-08-28 17:03:01 +0000298 consider a stack switch to have happened? Default: 2000000 bytes
299 NB: must be host-word-sized to be correct (hence Word). */
300extern Word VG_(clo_max_stackframe);
sewardj95d86c02007-12-18 01:49:23 +0000301/* How large should Valgrind allow the primary thread's guest stack to
302 be? */
303extern Word VG_(clo_main_stacksize);
njn20242342005-05-16 23:31:24 +0000304
florian1e802b62015-02-13 19:08:26 +0000305/* The maximum number of threads we support. */
306#define MAX_THREADS_DEFAULT 500
307extern UInt VG_(clo_max_threads);
308
philippe46207652013-01-20 17:11:58 +0000309/* If the same IP is found twice in a backtrace in a sequence of max
310 VG_(clo_merge_recursive_frames) frames, then the recursive call
311 is merged in the backtrace.
312 Note also that the merge is done during unwinding, to obtain
313 an much as possible significant backtrace.
314 Note that the value is changeable by a gdbsrv command. */
315extern Int VG_(clo_merge_recursive_frames);
316
philippe8e1bee42013-10-18 00:08:20 +0000317/* Max number of sectors that will be used by the translation code cache. */
318extern UInt VG_(clo_num_transtab_sectors);
319
philippe924c8522015-03-15 12:24:19 +0000320/* Average size of a transtab code entry. 0 means to use the tool
321 provided default. */
322extern UInt VG_(clo_avg_transtab_entry_size);
323
philippee4d78122014-04-20 14:20:37 +0000324/* Only client requested fixed mapping can be done below
325 VG_(clo_aspacem_minAddr). */
326extern Addr VG_(clo_aspacem_minAddr);
327
philipped0720e42015-03-12 20:43:46 +0000328/* How large the Valgrind thread stacks should be.
329 Will be rounded up to a page.. */
330extern Word VG_(clo_valgrind_stacksize);
331
njn20242342005-05-16 23:31:24 +0000332/* Delay startup to allow GDB to be attached? Default: NO */
333extern Bool VG_(clo_wait_for_gdb);
334
sewardj26412bd2005-07-07 10:05:05 +0000335/* To what extent should self-checking translations be made? These
336 are needed to deal with self-modifying code on uncooperative
337 platforms. */
338typedef
339 enum {
340 Vg_SmcNone, // never generate self-checking translations
341 Vg_SmcStack, // generate s-c-t's for code found in stacks
sewardj26412bd2005-07-07 10:05:05 +0000342 // (this is the default)
sewardj6dbcc632011-06-07 21:39:28 +0000343 Vg_SmcAll, // make all translations self-checking.
344 Vg_SmcAllNonFile // make all translations derived from
345 // non-file-backed memory self checking
sewardj26412bd2005-07-07 10:05:05 +0000346 }
347 VgSmc;
348
sewardjce5a5662005-10-06 03:19:49 +0000349/* Describe extent to which self-modifying-code should be
350 auto-detected. */
sewardj6c3a2192005-07-24 07:00:45 +0000351extern VgSmc VG_(clo_smc_check);
sewardj26412bd2005-07-07 10:05:05 +0000352
philippeec905f72014-08-17 20:03:51 +0000353/* A set of minor kernel variants,
sewardjce5a5662005-10-06 03:19:49 +0000354 so they can be properly handled by m_syswrap. */
sewardj4450a0e2014-09-03 15:19:25 +0000355typedef
356 enum {
357 KernelVariant_bproc,
sewardj124e56d2014-09-06 14:45:12 +0000358 KernelVariant_android_no_hw_tls,
sewardj4450a0e2014-09-03 15:19:25 +0000359 KernelVariant_android_gpu_sgx5xx,
360 KernelVariant_android_gpu_adreno3xx
philippeec905f72014-08-17 20:03:51 +0000361 }
362 KernelVariant;
363// Build mask to check or set KernelVariant a membership
364#define KernelVariant2S(v) (1 << (v))
365// KernelVariant v is member of the Set s ?
366#define KernelVariantiS(v,s) ((s) & KernelVariant2S(v))
367extern UInt VG_(clo_kernel_variant);
sewardj26412bd2005-07-07 10:05:05 +0000368
njnf76d27a2009-05-28 01:53:07 +0000369/* Darwin-specific: automatically run /usr/bin/dsymutil to update
370 .dSYM directories as necessary? */
njn97db7612009-08-04 02:32:55 +0000371extern Bool VG_(clo_dsymutil);
njnf76d27a2009-05-28 01:53:07 +0000372
sewardj06421272009-11-05 08:55:13 +0000373/* Should we trace into this child executable (across execve etc) ?
sewardj9ab64a42010-12-06 11:40:04 +0000374 This involves considering --trace-children=,
375 --trace-children-skip=, --trace-children-skip-by-arg=, and the name
376 of the executable. 'child_argv' must not include the name of the
377 executable itself; iow child_argv[0] must be the first arg, if any,
378 for the child. */
florian518850b2014-10-22 22:25:30 +0000379extern Bool VG_(should_we_trace_this_child) ( const HChar* child_exe_name,
380 const HChar** child_argv );
sewardj63d1c002006-10-19 17:31:37 +0000381
sewardjc30cd9b2012-12-06 18:08:54 +0000382/* Whether illegal instructions should be reported/diagnosed.
383 Can be explicitly set through --sigill-diagnostics otherwise
384 depends on verbosity (False if -q). */
385extern Bool VG_(clo_sigill_diag);
386
sewardj49984ea2013-10-18 13:21:26 +0000387/* Unwind using stack scanning (a nasty hack at the best of times)
388 when the normal CFI/FP-chain scan fails. If the number of
389 "normally" recovered frames is below this number, stack scanning
390 will be used (on platforms on which it is supported, currently only
391 arm-linux). The default value of zero has the effect of disabling
392 stack scanning. Default: zero*/
393extern UInt VG_(clo_unw_stack_scan_thresh);
394
395/* If stack scanning is used, this is how many frames it may recover.
396 Since it tends to pick up a lot of junk, this value is set pretty
397 low by default. Default: 5 */
398extern UInt VG_(clo_unw_stack_scan_frames);
399
sewardj67f7c032014-10-23 19:48:01 +0000400/* Controls the resync-filter on MacOS. Has no effect on Linux.
401 0=disabled [default on Linux] "no"
402 1=enabled [default on MacOS] "yes"
403 2=enabled and verbose. "verbose" */
404extern UInt VG_(clo_resync_filter);
405
njn20242342005-05-16 23:31:24 +0000406#endif // __PUB_CORE_OPTIONS_H
407
408/*--------------------------------------------------------------------*/
409/*--- end ---*/
410/*--------------------------------------------------------------------*/