Computer Laboratory

Names.h
Go to the documentation of this file.
1 
2 /*
3  * Copyright (c) 2012-2013 Jonathan Anderson
4  * All rights reserved.
5  *
6  * This software was developed by SRI International and the University of
7  * Cambridge Computer Laboratory under DARPA/AFRL contract (FA8750-10-C-0237)
8  * ("CTSRD"), as part of the DARPA CRASH research programme.
9  *
10  * Redistribution and use in source and binary forms, with or without
11  * modification, are permitted provided that the following conditions
12  * are met:
13  * 1. Redistributions of source code must retain the above copyright
14  * notice, this list of conditions and the following disclaimer.
15  * 2. Redistributions in binary form must reproduce the above copyright
16  * notice, this list of conditions and the following disclaimer in the
17  * documentation and/or other materials provided with the distribution.
18  *
19  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
20  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
21  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
22  * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
23  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
24  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
25  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
26  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
27  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
28  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
29  * SUCH DAMAGE.
30  */
31 
32 #ifndef _TESLA_NAMES_H_
33 #define _TESLA_NAMES_H_
34 
35 #include "Protocol.h"
36 
37 #include <llvm/ADT/ArrayRef.h>
38 #include <llvm/ADT/StringRef.h>
39 
40 #include <string>
41 
42 namespace tesla {
43 
44 class Argument;
45 class Identifier;
46 class Location;
47 
48 typedef llvm::ArrayRef<const Argument*> ReferenceVector;
49 
50 const std::string LLVM_PTR_ANNOTATION = "llvm.ptr.annotation";
51 
52 const std::string TESLA_BASE = "__tesla_";
53 
54 const std::string AUTOMATON = TESLA_BASE + "automaton_";
55 const std::string AUTOMATON_DESC = AUTOMATON + "description";
56 const std::string AUTOMATON_MAPPING = AUTOMATON + "mapping";
57 const std::string AUTOMATON_USAGE = AUTOMATON + "usage";
58 const std::string AUTOMATON_USES = TESLA_BASE + "struct_uses_automaton";
59 
60 const std::string GLOBAL = TESLA_BASE + "global";
61 const std::string PERTHREAD = TESLA_BASE + "perthread";
62 
63 const std::string ANY = TESLA_BASE + "any";
64 const std::string EVENT = TESLA_BASE + "event";
65 const std::string IGNORE = TESLA_BASE + "ignore";
66 const std::string NOW = TESLA_BASE + "now";
67 const std::string OPTIONAL = TESLA_BASE + "optional";
68 const std::string SEQUENCE = TESLA_BASE + "sequence";
69 
70 const std::string INLINE_ASSERTION = TESLA_BASE + "inline_assertion";
71 
72 const std::string INSTR_BASE = TESLA_BASE + "instrumentation_";
73 
74 const std::string STRUCT_INSTR = INSTR_BASE + "struct_field_";
75 const std::string LOAD = "load_";
76 const std::string STORE = "store_";
77 
78 const std::string CALL = INSTR_BASE + "call";
79 const std::string RETURN = INSTR_BASE + "return";
80 
81 const std::string CALLEE = "callee_";
82 const std::string CALLER = "caller_";
83 
84 const std::string ENTER = "enter_";
85 const std::string EXIT = "return_";
86 
87 const std::string FLAGS = TESLA_BASE + "flags";
88 const std::string MASK = TESLA_BASE + "mask";
89 
90 const std::string ASSERTION_REACHED = INSTR_BASE + "assertion_reached";
91 
93 std::string ArgString(const Argument*);
94 
96 std::string ShortName(const Argument*);
97 
99 std::string DotName(const Argument*);
100 
102 std::string ShortName(const Identifier&);
103 
105 std::string ShortName(const Location&);
106 
108 std::string InstanceName(const ReferenceVector&, bool PlainAscii);
109 
110 } /* namespace tesla */
111 
112 #endif