2 /*--------------------------------------------------------------------*/
3 /*--- Ptrcheck: a pointer-use checker. ---*/
4 /*--- This file coordinates the h_ and sg_ subtools. ---*/
6 /*--------------------------------------------------------------------*/
9 This file is part of Ptrcheck, a Valgrind tool for checking pointer
12 Copyright (C) 2008-2010 OpenWorks Ltd
15 This program is free software; you can redistribute it and/or
16 modify it under the terms of the GNU General Public License as
17 published by the Free Software Foundation; either version 2 of the
18 License, or (at your option) any later version.
20 This program is distributed in the hope that it will be useful, but
21 WITHOUT ANY WARRANTY; without even the implied warranty of
22 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
23 General Public License for more details.
25 You should have received a copy of the GNU General Public License
26 along with this program; if not, write to the Free Software
27 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
30 The GNU General Public License is contained in the file COPYING.
32 Neither the names of the U.S. Department of Energy nor the
33 University of California nor the names of its contributors may be
34 used to endorse or promote products derived from this software
35 without prior written permission.
38 #include "pub_tool_basics.h"
39 #include "pub_tool_libcassert.h"
40 #include "pub_tool_libcprint.h"
41 #include "pub_tool_execontext.h"
42 #include "pub_tool_tooliface.h"
43 #include "pub_tool_options.h"
46 #include "pc_common.h"
50 //////////////////////////////////////////////////////////////
54 //////////////////////////////////////////////////////////////
56 static void pc_pre_clo_init(void)
58 #if defined(VGO_darwin)
59 // This makes the (all-failing) regtests run much faster.
60 VG_(printf)("SGCheck doesn't work on Darwin yet, sorry.\n");
63 #if defined(VGA_s390x)
64 /* fixs390: to be done. */
65 VG_(printf)("SGCheck doesn't work s390x yet, sorry.\n");
69 // Can't change the name until we change the names in suppressions
71 VG_(details_name) ("exp-sgcheck");
72 VG_(details_version) (NULL);
73 VG_(details_description) ("a stack and global array "
75 VG_(details_copyright_author)(
76 "Copyright (C) 2003-2010, and GNU GPL'd, by OpenWorks Ltd et al.");
77 VG_(details_bug_reports_to) (VG_BUGS_TO);
78 VG_(details_avg_translation_sizeB) ( 496 );
80 VG_(basic_tool_funcs) (sg_post_clo_init,
84 VG_(needs_malloc_replacement)( h_replace_malloc,
85 h_replace___builtin_new,
86 h_replace___builtin_vec_new,
90 h_replace___builtin_delete,
91 h_replace___builtin_vec_delete,
93 h_replace_malloc_usable_size,
94 0 /* no need for client heap redzones */ );
96 VG_(needs_var_info) ();
98 VG_(needs_core_errors) ();
99 VG_(needs_tool_errors) (pc_eq_Error,
102 True,/*show TIDs for errors*/
103 pc_update_Error_extra,
104 pc_is_recognised_suppression,
105 pc_read_extra_suppression_info,
106 pc_error_matches_suppression,
108 pc_get_extra_suppression_info);
110 VG_(needs_xml_output) ();
112 //VG_(needs_syscall_wrapper)( h_pre_syscall,
115 VG_(needs_command_line_options)( pc_process_cmd_line_options,
117 pc_print_debug_usage );
119 VG_(track_die_mem_stack) ( sg_die_mem_stack );
120 VG_(track_pre_thread_ll_create) ( sg_pre_thread_ll_create );
121 VG_(track_pre_thread_first_insn)( sg_pre_thread_first_insn );
123 VG_(track_new_mem_mmap) ( sg_new_mem_mmap );
124 VG_(track_new_mem_startup) ( sg_new_mem_startup);
125 VG_(track_die_mem_munmap) ( sg_die_mem_munmap );
127 /* Really we ought to give handlers for these, to
128 check that syscalls don't read across array boundaries. */
130 VG_(track_pre_mem_read) ( NULL );
131 VG_(track_pre_mem_read_asciiz) ( NULL );
132 VG_(track_pre_mem_write) ( NULL );
137 VG_(clo_vex_control).iropt_unroll_thresh = 0;
138 VG_(clo_vex_control).guest_chase_thresh = 0;
141 VG_DETERMINE_INTERFACE_VERSION(pc_pre_clo_init)
144 /*--------------------------------------------------------------------*/
145 /*--- end pc_main.c ---*/
146 /*--------------------------------------------------------------------*/