1024598e40c84666cc311a42c256bbf880db3ac99sewardj
2024598e40c84666cc311a42c256bbf880db3ac99sewardj/*--------------------------------------------------------------------*/
3024598e40c84666cc311a42c256bbf880db3ac99sewardj/*--- Ptrcheck: a pointer-use checker.                             ---*/
4024598e40c84666cc311a42c256bbf880db3ac99sewardj/*--- Exports for stuff shared between sg_ and h_ subtools.        ---*/
5024598e40c84666cc311a42c256bbf880db3ac99sewardj/*---                                                  pc_common.h ---*/
6024598e40c84666cc311a42c256bbf880db3ac99sewardj/*--------------------------------------------------------------------*/
7024598e40c84666cc311a42c256bbf880db3ac99sewardj
8024598e40c84666cc311a42c256bbf880db3ac99sewardj/*
9024598e40c84666cc311a42c256bbf880db3ac99sewardj   This file is part of Ptrcheck, a Valgrind tool for checking pointer
10024598e40c84666cc311a42c256bbf880db3ac99sewardj   use in programs.
11024598e40c84666cc311a42c256bbf880db3ac99sewardj
12ed39800a83baf5bffbe391f3974eb2af0f415f80Elliott Hughes   Copyright (C) 2008-2017 OpenWorks Ltd
13024598e40c84666cc311a42c256bbf880db3ac99sewardj      info@open-works.co.uk
14024598e40c84666cc311a42c256bbf880db3ac99sewardj
15024598e40c84666cc311a42c256bbf880db3ac99sewardj   This program is free software; you can redistribute it and/or
16024598e40c84666cc311a42c256bbf880db3ac99sewardj   modify it under the terms of the GNU General Public License as
17024598e40c84666cc311a42c256bbf880db3ac99sewardj   published by the Free Software Foundation; either version 2 of the
18024598e40c84666cc311a42c256bbf880db3ac99sewardj   License, or (at your option) any later version.
19024598e40c84666cc311a42c256bbf880db3ac99sewardj
20024598e40c84666cc311a42c256bbf880db3ac99sewardj   This program is distributed in the hope that it will be useful, but
21024598e40c84666cc311a42c256bbf880db3ac99sewardj   WITHOUT ANY WARRANTY; without even the implied warranty of
22024598e40c84666cc311a42c256bbf880db3ac99sewardj   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
23024598e40c84666cc311a42c256bbf880db3ac99sewardj   General Public License for more details.
24024598e40c84666cc311a42c256bbf880db3ac99sewardj
25024598e40c84666cc311a42c256bbf880db3ac99sewardj   You should have received a copy of the GNU General Public License
26024598e40c84666cc311a42c256bbf880db3ac99sewardj   along with this program; if not, write to the Free Software
27024598e40c84666cc311a42c256bbf880db3ac99sewardj   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
28024598e40c84666cc311a42c256bbf880db3ac99sewardj   02111-1307, USA.
29024598e40c84666cc311a42c256bbf880db3ac99sewardj
30024598e40c84666cc311a42c256bbf880db3ac99sewardj   The GNU General Public License is contained in the file COPYING.
31024598e40c84666cc311a42c256bbf880db3ac99sewardj*/
32024598e40c84666cc311a42c256bbf880db3ac99sewardj
33024598e40c84666cc311a42c256bbf880db3ac99sewardj#ifndef __PC_COMMON_H
34024598e40c84666cc311a42c256bbf880db3ac99sewardj
35024598e40c84666cc311a42c256bbf880db3ac99sewardj#define __PC_COMMON_H
36024598e40c84666cc311a42c256bbf880db3ac99sewardj
37024598e40c84666cc311a42c256bbf880db3ac99sewardjtypedef  struct _Seg  Seg;   /* abstract every except in h_main.c */
38024598e40c84666cc311a42c256bbf880db3ac99sewardj
39024598e40c84666cc311a42c256bbf880db3ac99sewardjvoid sg_record_error_SorG ( ThreadId tid,
40024598e40c84666cc311a42c256bbf880db3ac99sewardj                            Addr addr, SSizeT sszB,
41f5b019fb45b52a26fefa40b8fa5b518f0686dd99sewardj                            HChar* expect, HChar* actual, HChar* delta );
42024598e40c84666cc311a42c256bbf880db3ac99sewardj
43024598e40c84666cc311a42c256bbf880db3ac99sewardjvoid h_record_heap_error( Addr a, SizeT size, Seg* vseg, Bool is_write );
44024598e40c84666cc311a42c256bbf880db3ac99sewardj
45024598e40c84666cc311a42c256bbf880db3ac99sewardjvoid h_record_arith_error( Seg* seg1, Seg* seg2, HChar* opname );
46024598e40c84666cc311a42c256bbf880db3ac99sewardj
4719f91bbaedb4caef8a60ce94b0f507193cc0bc10florianvoid h_record_sysparam_error( ThreadId tid, CorePart part, const HChar* s,
48024598e40c84666cc311a42c256bbf880db3ac99sewardj                              Addr lo, Addr hi, Seg* seglo, Seg* seghi );
49024598e40c84666cc311a42c256bbf880db3ac99sewardj
508e3fbb5cd8276a7d07d5712bc05f9b3376d81a6aflorianBool pc_eq_Error           ( VgRes res, const Error* e1, const Error* e2 );
518e3fbb5cd8276a7d07d5712bc05f9b3376d81a6aflorianvoid pc_before_pp_Error    ( const Error* err );
528e3fbb5cd8276a7d07d5712bc05f9b3376d81a6aflorianvoid pc_pp_Error           ( const Error* err );
538e3fbb5cd8276a7d07d5712bc05f9b3376d81a6aflorianUInt pc_update_Error_extra ( const Error* err );
5419f91bbaedb4caef8a60ce94b0f507193cc0bc10florianBool pc_is_recognised_suppression ( const HChar* name, Supp *su );
5519f91bbaedb4caef8a60ce94b0f507193cc0bc10florianBool pc_read_extra_suppression_info ( Int fd, HChar** bufpp,
56362441db825242200142a91bb07c4a0300b36a3ephilippe                                      SizeT* nBufp, Int* lineno, Supp* su );
578e3fbb5cd8276a7d07d5712bc05f9b3376d81a6aflorianBool pc_error_matches_suppression (const Error* err, const Supp* su);
588e3fbb5cd8276a7d07d5712bc05f9b3376d81a6aflorianconst HChar* pc_get_error_name ( const Error* err );
598e3fbb5cd8276a7d07d5712bc05f9b3376d81a6aflorianSizeT pc_get_extra_suppression_info ( const Error* err,
60dbb3584f591710a15a437918c0fc27e300993566florian                                     /*OUT*/HChar* buf, Int nBuf );
618e3fbb5cd8276a7d07d5712bc05f9b3376d81a6aflorianSizeT pc_print_extra_suppression_use ( const Supp* su,
624e32d67a5b880bf1d871c5141822078d4dcdc3acphilippe                                      /*OUT*/HChar* buf, Int nBuf );
638e3fbb5cd8276a7d07d5712bc05f9b3376d81a6aflorianvoid pc_update_extra_suppression_use (const Error* err, const Supp* su);
64024598e40c84666cc311a42c256bbf880db3ac99sewardj
65024598e40c84666cc311a42c256bbf880db3ac99sewardjextern Bool h_clo_partial_loads_ok;
664815eb5cc0e96a3b76aae246e3ca7a8b3394c46csewardj/* extern Bool h_clo_lossage_check; */
674815eb5cc0e96a3b76aae246e3ca7a8b3394c46csewardjextern Bool sg_clo_enable_sg_checks;
68024598e40c84666cc311a42c256bbf880db3ac99sewardj
6919f91bbaedb4caef8a60ce94b0f507193cc0bc10florianBool pc_process_cmd_line_options(const HChar* arg);
70024598e40c84666cc311a42c256bbf880db3ac99sewardjvoid pc_print_usage(void);
71024598e40c84666cc311a42c256bbf880db3ac99sewardjvoid pc_print_debug_usage(void);
72024598e40c84666cc311a42c256bbf880db3ac99sewardj
73024598e40c84666cc311a42c256bbf880db3ac99sewardj
74024598e40c84666cc311a42c256bbf880db3ac99sewardj#endif
75024598e40c84666cc311a42c256bbf880db3ac99sewardj
76024598e40c84666cc311a42c256bbf880db3ac99sewardj/*--------------------------------------------------------------------*/
77024598e40c84666cc311a42c256bbf880db3ac99sewardj/*--- end                                              pc_common.h ---*/
78024598e40c84666cc311a42c256bbf880db3ac99sewardj/*--------------------------------------------------------------------*/
79