1f57743408d27fedf60a7b48d25339d51b1f8a055philippe
2f57743408d27fedf60a7b48d25339d51b1f8a055philippe/*---------------------------------------------------------------------*/
3f57743408d27fedf60a7b48d25339d51b1f8a055philippe/*--- Address Description, used e.g. to describe addresses involved ---*/
4f57743408d27fedf60a7b48d25339d51b1f8a055philippe/*--- in race conditions, locks.                                    ---*/
5f57743408d27fedf60a7b48d25339d51b1f8a055philippe/*---                                                hg_addrdescr.h ---*/
6f57743408d27fedf60a7b48d25339d51b1f8a055philippe/*---------------------------------------------------------------------*/
7f57743408d27fedf60a7b48d25339d51b1f8a055philippe
8f57743408d27fedf60a7b48d25339d51b1f8a055philippe/*
9f57743408d27fedf60a7b48d25339d51b1f8a055philippe   This file is part of Helgrind, a Valgrind tool for detecting errors
10f57743408d27fedf60a7b48d25339d51b1f8a055philippe   in threaded programs.
11f57743408d27fedf60a7b48d25339d51b1f8a055philippe
12ed39800a83baf5bffbe391f3974eb2af0f415f80Elliott Hughes   Copyright (C) 2007-2017 OpenWorks Ltd
13f57743408d27fedf60a7b48d25339d51b1f8a055philippe      info@open-works.co.uk
14f57743408d27fedf60a7b48d25339d51b1f8a055philippe
15f57743408d27fedf60a7b48d25339d51b1f8a055philippe   This program is free software; you can redistribute it and/or
16f57743408d27fedf60a7b48d25339d51b1f8a055philippe   modify it under the terms of the GNU General Public License as
17f57743408d27fedf60a7b48d25339d51b1f8a055philippe   published by the Free Software Foundation; either version 2 of the
18f57743408d27fedf60a7b48d25339d51b1f8a055philippe   License, or (at your option) any later version.
19f57743408d27fedf60a7b48d25339d51b1f8a055philippe
20f57743408d27fedf60a7b48d25339d51b1f8a055philippe   This program is distributed in the hope that it will be useful, but
21f57743408d27fedf60a7b48d25339d51b1f8a055philippe   WITHOUT ANY WARRANTY; without even the implied warranty of
22f57743408d27fedf60a7b48d25339d51b1f8a055philippe   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
23f57743408d27fedf60a7b48d25339d51b1f8a055philippe   General Public License for more details.
24f57743408d27fedf60a7b48d25339d51b1f8a055philippe
25f57743408d27fedf60a7b48d25339d51b1f8a055philippe   You should have received a copy of the GNU General Public License
26f57743408d27fedf60a7b48d25339d51b1f8a055philippe   along with this program; if not, write to the Free Software
27f57743408d27fedf60a7b48d25339d51b1f8a055philippe   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
28f57743408d27fedf60a7b48d25339d51b1f8a055philippe   02111-1307, USA.
29f57743408d27fedf60a7b48d25339d51b1f8a055philippe
30f57743408d27fedf60a7b48d25339d51b1f8a055philippe   The GNU General Public License is contained in the file COPYING.
31f57743408d27fedf60a7b48d25339d51b1f8a055philippe*/
32f57743408d27fedf60a7b48d25339d51b1f8a055philippe
33f57743408d27fedf60a7b48d25339d51b1f8a055philippe#ifndef __HG_ADDRDESCR_H
34f57743408d27fedf60a7b48d25339d51b1f8a055philippe#define __HG_ADDRDESCR_H
35f57743408d27fedf60a7b48d25339d51b1f8a055philippe
36f57743408d27fedf60a7b48d25339d51b1f8a055philippe/* Describe an address as best you can, for error messages or
3707c08527f05caeb0062b42ca9a58ee774ec5fba1philippe   lock description, putting the result in ai.
3807c08527f05caeb0062b42ca9a58ee774ec5fba1philippe   This might allocate some memory in ai, to be cleared with
3907c08527f05caeb0062b42ca9a58ee774ec5fba1philippe   VG_(clear_addrinfo). */
4007c08527f05caeb0062b42ca9a58ee774ec5fba1philippeextern void HG_(describe_addr) ( Addr a, /*OUT*/AddrInfo* ai );
41f57743408d27fedf60a7b48d25339d51b1f8a055philippe
42f57743408d27fedf60a7b48d25339d51b1f8a055philippe/* Get a readable description of addr, then print it using HG_(pp_addrdescr)
43f57743408d27fedf60a7b48d25339d51b1f8a055philippe   using xml False and VG_(printf) to emit the characters.
44f57743408d27fedf60a7b48d25339d51b1f8a055philippe   Returns True if a description was found/printed, False otherwise. */
4507c08527f05caeb0062b42ca9a58ee774ec5fba1philippeextern Bool HG_(get_and_pp_addrdescr) (Addr a);
46f57743408d27fedf60a7b48d25339d51b1f8a055philippe
47f57743408d27fedf60a7b48d25339d51b1f8a055philippe/* For error creation/address description:
48f57743408d27fedf60a7b48d25339d51b1f8a055philippe   map 'data_addr' to a malloc'd chunk, if any.
49f57743408d27fedf60a7b48d25339d51b1f8a055philippe   Slow linear search accelerated in some special cases normal hash
50f57743408d27fedf60a7b48d25339d51b1f8a055philippe   search of the mallocmeta table. This is an abuse of the normal file
51f57743408d27fedf60a7b48d25339d51b1f8a055philippe   structure since this is exported by hg_main.c, not hg_addrdesc.c.  Oh
52f57743408d27fedf60a7b48d25339d51b1f8a055philippe   Well.  Returns True if found, False if not.  Zero-sized blocks are
53f57743408d27fedf60a7b48d25339d51b1f8a055philippe   considered to contain the searched-for address if they equal that
54f57743408d27fedf60a7b48d25339d51b1f8a055philippe   address. */
55f57743408d27fedf60a7b48d25339d51b1f8a055philippeBool HG_(mm_find_containing_block)( /*OUT*/ExeContext** where,
560c9ac8d0deca2f2a552fb2b0cab24efe6191bac7philippe                                    /*OUT*/UInt*        tnr,
57f57743408d27fedf60a7b48d25339d51b1f8a055philippe                                    /*OUT*/Addr*        payload,
58f57743408d27fedf60a7b48d25339d51b1f8a055philippe                                    /*OUT*/SizeT*       szB,
59f57743408d27fedf60a7b48d25339d51b1f8a055philippe                                    Addr                data_addr );
60f57743408d27fedf60a7b48d25339d51b1f8a055philippe
61f57743408d27fedf60a7b48d25339d51b1f8a055philippe
62f57743408d27fedf60a7b48d25339d51b1f8a055philippe#endif /* ! __HG_ADDRDESCR_H */
63f57743408d27fedf60a7b48d25339d51b1f8a055philippe
64f57743408d27fedf60a7b48d25339d51b1f8a055philippe/*--------------------------------------------------------------------*/
65f57743408d27fedf60a7b48d25339d51b1f8a055philippe/*--- end                                           hg_addrdescr.h ---*/
66f57743408d27fedf60a7b48d25339d51b1f8a055philippe/*--------------------------------------------------------------------*/
67