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