blob: 532a38cc5dbdbd41db326adf076b1ba0b04c6e21 [file] [log] [blame]
bart09dc13f2009-02-14 15:13:31 +00001/*
bart86562bd2009-02-16 19:43:56 +00002 This file is part of drd, a thread error detector.
bart09dc13f2009-02-14 15:13:31 +00003
bartd4bab992013-10-04 05:55:30 +00004 Copyright (C) 2006-2013 Bart Van Assche <bvanassche@acm.org>.
bart09dc13f2009-02-14 15:13:31 +00005
6 This program is free software; you can redistribute it and/or
7 modify it under the terms of the GNU General Public License as
8 published by the Free Software Foundation; either version 2 of the
9 License, or (at your option) any later version.
10
11 This program is distributed in the hope that it will be useful, but
12 WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 General Public License for more details.
15
16 You should have received a copy of the GNU General Public License
17 along with this program; if not, write to the Free Software
18 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
19 02111-1307, USA.
20
21 The GNU General Public License is contained in the file COPYING.
22*/
23
24
25/*
26 * Functions related to instrumentation of loads and stores.
27 */
28
29
30#ifndef __DRD_LOAD_STORE_H
31#define __DRD_LOAD_STORE_H
32
33
34#include <libvex.h> /* IRSB */
35#include <pub_tool_tooliface.h> /* VgCallbackClosure */
36
37
38Bool DRD_(get_check_stack_accesses)(void);
39void DRD_(set_check_stack_accesses)(const Bool c);
bartf98a5692009-05-03 17:17:37 +000040Bool DRD_(get_first_race_only)(void);
41void DRD_(set_first_race_only)(const Bool fro);
bart1335ecc2009-02-14 16:10:53 +000042IRSB* DRD_(instrument)(VgCallbackClosure* const closure,
43 IRSB* const bb_in,
44 VexGuestLayout* const layout,
bart31b983d2010-02-21 14:52:59 +000045 VexGuestExtents* const vge,
florianca503be2012-10-07 21:59:42 +000046 VexArchInfo* const archinfo_host,
bart1335ecc2009-02-14 16:10:53 +000047 IRType const gWordTy,
48 IRType const hWordTy);
49void DRD_(trace_mem_access)(const Addr addr, const SizeT size,
bart7826acb2011-12-11 18:49:39 +000050 const BmAccessTypeT access_type,
bart42f32632011-12-13 11:12:05 +000051 const HWord stored_value_hi,
52 const HWord stored_value_lo);
bart99edb292009-02-15 15:59:20 +000053VG_REGPARM(2) void DRD_(trace_load)(Addr addr, SizeT size);
54VG_REGPARM(2) void DRD_(trace_store)(Addr addr, SizeT size);
bartfdaa0182009-03-10 09:25:32 +000055void DRD_(clean_memory)(const Addr a1, const SizeT len);
bart09dc13f2009-02-14 15:13:31 +000056
57
58#endif // __DRD_LOAD_STORE_H