Predator
[unstable] git snapshot
Main Page
Related Pages
Namespaces
Data Structures
Files
File List
Globals
symabstract.hh
Go to the documentation of this file.
1
/*
2
* Copyright (C) 2009-2010 Kamil Dudka <kdudka@redhat.com>
3
* Copyright (C) 2010 Petr Peringer, FIT
4
*
5
* This file is part of predator.
6
*
7
* predator is free software: you can redistribute it and/or modify
8
* it under the terms of the GNU General Public License as published by
9
* the Free Software Foundation, either version 3 of the License, or
10
* any later version.
11
*
12
* predator is distributed in the hope that it will be useful,
13
* but WITHOUT ANY WARRANTY; without even the implied warranty of
14
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15
* GNU General Public License for more details.
16
*
17
* You should have received a copy of the GNU General Public License
18
* along with predator. If not, see <http://www.gnu.org/licenses/>.
19
*/
20
21
#ifndef H_GUARD_SYMABSTRACT_H
22
#define H_GUARD_SYMABSTRACT_H
23
24
/**
25
* @file symabstract.hh
26
* list segment based abstraction/concretization of heap objects
27
*/
28
29
#include "
config.h
"
30
#include "
symheap.hh
"
31
32
#include <list>
33
34
/**
35
* container for symbolic heaps scheduled for processing. It's feed by
36
* concretizeObj() and consumed by SymExecCore::concretizeLoop().
37
*/
38
typedef
std::list<SymHeap>
TSymHeapList
;
39
40
/**
41
* concretize the given @b abstract object. If the result is non-deterministic,
42
* more than one symbolic heap can be produced.
43
* @param sh an instance of symbolic heap, used in read/write mode
44
* @param dst a container for the results caused by non-deterministic decisions
45
* @param obj @b abstract heap object that should be concretized
46
* @param ts @b target specifier refining the target to be concretized
47
* @param leakObjs if not NULL, push all leaked root objects to the list
48
* @note the first result is always stored into sh, the use of dst is optional
49
*/
50
void
concretizeObj
(
51
SymHeap
&sh,
52
TSymHeapList
&dst,
53
TObjId
obj,
54
ETargetSpecifier
ts,
55
TObjSet
*leakObjs = 0);
56
57
/// splice out a possibly empty list segment
58
void
spliceOutListSegment
(
59
SymHeap
&sh,
60
TObjId
seg,
61
TObjSet
*leakObjs);
62
63
/// replace a DLS by a single concrete object
64
void
dlSegReplaceByConcrete
(
SymHeap
&sh,
TObjId
seg);
65
66
/**
67
* analyze the given symbolic heap and consider abstraction of some shapes that
68
* we know ho to rewrite to their more abstract way of existence
69
* @param sh an instance of symbolic heap, used in read/write mode
70
*/
71
void
abstractIfNeeded
(
SymHeap
&sh);
72
73
/// enable/disable debugging of symabstract
74
void
debugSymAbstract
(
bool
enable);
75
76
#endif
/* H_GUARD_SYMABSTRACT_H */
Generated on Mon Nov 9 2015 14:51:59 for Predator by
1.8.1.2