mirror of
https://github.com/Zenithsiz/ftmemsim-valgrind.git
synced 2026-02-08 04:55:52 +00:00
reading. Two sets of changes:
* New flags for debugging the readers.
--debug-dump=syms
--debug-dump=line
--debug-dump=frames
These (currently accepted but nonfunctional) are intended to
create output in the style of (that is, identical to)
/usr/bin/readelf --syms
/usr/bin/readelf --debug-dump=line
/usr/bin/readelf --debug-dump=frames
respectively. The plan is that flaws in these readers can then
be easily found by diff-ing the output against that from readelf.
Also, a new flag --trace-symtab-patt=<object filename pattern>
which is used to limit all debuginfo-related debug info to the
set of shared object names matching the given pattern. This
facilitates extracting the debuginfo details of one specific
shared object, which is usually what is required, rather than
having to wade through megabytes of junk from every object in
the process.
* Propagate the avma/svma/image address-naming scheme
(as described at the top of debuginfo.c) through large parts of
readelf.c and readdwarf.c.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@6588
126 lines
4.4 KiB
C
126 lines
4.4 KiB
C
|
|
/*--------------------------------------------------------------------*/
|
|
/*--- Command line options. ---*/
|
|
/*--- m_options.c ---*/
|
|
/*--------------------------------------------------------------------*/
|
|
|
|
/*
|
|
This file is part of Valgrind, a dynamic binary instrumentation
|
|
framework.
|
|
|
|
Copyright (C) 2000-2007 Nicholas Nethercote
|
|
njn@valgrind.org
|
|
|
|
This program is free software; you can redistribute it and/or
|
|
modify it under the terms of the GNU General Public License as
|
|
published by the Free Software Foundation; either version 2 of the
|
|
License, or (at your option) any later version.
|
|
|
|
This program is distributed in the hope that it will be useful, but
|
|
WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
General Public License for more details.
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
along with this program; if not, write to the Free Software
|
|
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
|
|
02111-1307, USA.
|
|
|
|
The GNU General Public License is contained in the file COPYING.
|
|
*/
|
|
|
|
#include "pub_core_basics.h"
|
|
#include "pub_core_options.h"
|
|
#include "pub_core_libcassert.h"
|
|
#include "pub_core_libcprint.h"
|
|
|
|
// See pub_{core,tool}_options.h for explanations of all these.
|
|
|
|
|
|
/* Define, and set defaults. */
|
|
VexControl VG_(clo_vex_control);
|
|
Bool VG_(clo_error_limit) = True;
|
|
Int VG_(clo_error_exitcode) = 0;
|
|
Bool VG_(clo_db_attach) = False;
|
|
Char* VG_(clo_db_command) = GDB_PATH " -nw %f %p";
|
|
Int VG_(clo_gen_suppressions) = 0;
|
|
Int VG_(clo_sanity_level) = 1;
|
|
Int VG_(clo_verbosity) = 1;
|
|
Bool VG_(clo_xml) = False;
|
|
HChar* VG_(clo_xml_user_comment) = NULL;
|
|
Bool VG_(clo_demangle) = True;
|
|
Bool VG_(clo_trace_children) = False;
|
|
Int VG_(clo_log_fd) = 2;
|
|
Char* VG_(clo_log_name) = NULL;
|
|
Char* VG_(clo_log_file_qualifier) = NULL;
|
|
Bool VG_(clo_time_stamp) = False;
|
|
Int VG_(clo_input_fd) = 0; /* stdin */
|
|
Int VG_(clo_n_suppressions) = 0;
|
|
Char* VG_(clo_suppressions)[VG_CLO_MAX_SFILES];
|
|
UChar VG_(clo_trace_flags) = 0; // 00000000b
|
|
UChar VG_(clo_profile_flags) = 0; // 00000000b
|
|
Int VG_(clo_trace_notbelow) = 999999999;
|
|
Bool VG_(clo_trace_syscalls) = False;
|
|
Bool VG_(clo_trace_signals) = False;
|
|
Bool VG_(clo_trace_symtab) = False;
|
|
HChar* VG_(clo_trace_symtab_patt) = "*";
|
|
Bool VG_(clo_trace_cfi) = False;
|
|
Bool VG_(clo_debug_dump_syms) = False;
|
|
Bool VG_(clo_debug_dump_line) = False;
|
|
Bool VG_(clo_debug_dump_frames) = False;
|
|
Bool VG_(clo_trace_redir) = False;
|
|
Bool VG_(clo_trace_sched) = False;
|
|
Bool VG_(clo_trace_pthreads) = False;
|
|
Int VG_(clo_dump_error) = 0;
|
|
Int VG_(clo_backtrace_size) = 12;
|
|
Char* VG_(clo_sim_hints) = NULL;
|
|
Bool VG_(clo_sym_offsets) = False;
|
|
Bool VG_(clo_run_libc_freeres) = True;
|
|
Bool VG_(clo_track_fds) = False;
|
|
Bool VG_(clo_show_below_main)= False;
|
|
Bool VG_(clo_show_emwarns) = False;
|
|
Int VG_(clo_max_stackframe) = 2000000;
|
|
Bool VG_(clo_wait_for_gdb) = False;
|
|
VgSmc VG_(clo_smc_check) = Vg_SmcStack;
|
|
HChar* VG_(clo_kernel_variant) = NULL;
|
|
|
|
|
|
/*====================================================================*/
|
|
/*=== Command line errors ===*/
|
|
/*====================================================================*/
|
|
|
|
static void revert_to_stderr ( void )
|
|
{
|
|
vg_assert( !VG_(logging_to_socket) );
|
|
VG_(clo_log_fd) = 2; /* stderr */
|
|
}
|
|
|
|
void VG_(err_bad_option) ( Char* opt )
|
|
{
|
|
revert_to_stderr();
|
|
VG_(printf)("valgrind: Bad option '%s'; aborting.\n", opt);
|
|
VG_(printf)("valgrind: Use --help for more information.\n");
|
|
VG_(exit)(1);
|
|
}
|
|
|
|
void VG_(err_missing_prog) ( void )
|
|
{
|
|
revert_to_stderr();
|
|
VG_(printf)("valgrind: no program specified\n");
|
|
VG_(printf)("valgrind: Use --help for more information.\n");
|
|
VG_(exit)(1);
|
|
}
|
|
|
|
void VG_(err_config_error) ( Char* msg )
|
|
{
|
|
revert_to_stderr();
|
|
VG_(printf)("valgrind: Startup or configuration error:\n %s\n", msg);
|
|
VG_(printf)("valgrind: Unable to start up properly. Giving up.\n");
|
|
VG_(exit)(1);
|
|
}
|
|
|
|
|
|
/*--------------------------------------------------------------------*/
|
|
/*--- end m_options.c ---*/
|
|
/*--------------------------------------------------------------------*/
|