Skip to content

Commit 75703f5

Browse files
author
Vitaly Chipounov
committedJun 5, 2011
Renamed polling loop detector to edge killer, which is what it really is.
1 parent cbc3300 commit 75703f5

File tree

6 files changed

+146
-73
lines changed

6 files changed

+146
-73
lines changed
 

‎qemu/Makefile.target

+1-1
Original file line numberDiff line numberDiff line change
@@ -350,7 +350,7 @@ s2eobj-y += s2e/Plugins/ExecutionTracers/TranslationBlockTracer.o
350350
s2eobj-y += s2e/Plugins/CacheSim.o
351351
s2eobj-y += s2e/Plugins/Debugger.o
352352
s2eobj-y += s2e/Plugins/SymbolicHardware.o
353-
s2eobj-y += s2e/Plugins/PollingLoopDetector.o
353+
s2eobj-y += s2e/Plugins/EdgeKiller.o
354354
s2eobj-y += s2e/Plugins/StateManager.o
355355
s2eobj-y += s2e/Plugins/Annotation.o
356356
s2eobj-y += s2e/Plugins/Searchers/MaxTbSearcher.o

‎qemu/s2e/Plugin.cpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@
6060
#include <s2e/Plugins/CacheSim.h>
6161
#include <s2e/Plugins/Debugger.h>
6262
#include <s2e/Plugins/SymbolicHardware.h>
63-
#include <s2e/Plugins/PollingLoopDetector.h>
63+
#include <s2e/Plugins/EdgeKiller.h>
6464
#include <s2e/Plugins/StateManager.h>
6565
#include <s2e/Plugins/Annotation.h>
6666
#include <s2e/Plugins/X86ExceptionInterceptor.h>
@@ -121,7 +121,7 @@ PluginsFactory::PluginsFactory()
121121
__S2E_REGISTER_PLUGIN(plugins::TranslationBlockTracer);
122122

123123
__S2E_REGISTER_PLUGIN(plugins::SymbolicHardware);
124-
__S2E_REGISTER_PLUGIN(plugins::PollingLoopDetector);
124+
__S2E_REGISTER_PLUGIN(plugins::EdgeKiller);
125125
__S2E_REGISTER_PLUGIN(plugins::Annotation);
126126
__S2E_REGISTER_PLUGIN(plugins::X86ExceptionInterceptor);
127127

‎qemu/s2e/Plugins/PollingLoopDetector.cpp ‎qemu/s2e/Plugins/EdgeKiller.cpp

+46-46
Original file line numberDiff line numberDiff line change
@@ -41,27 +41,27 @@
4141

4242
#include <sstream>
4343

44-
#include "PollingLoopDetector.h"
44+
#include "EdgeKiller.h"
4545

4646
namespace s2e {
4747
namespace plugins {
4848

49-
S2E_DEFINE_PLUGIN(PollingLoopDetector, "Kills states stuck in a polling loop", "PollingLoopDetector",
49+
S2E_DEFINE_PLUGIN(EdgeKiller, "Kills states when a specified sequence of instructions has been executed", "EdgeKiller",
5050
"ModuleExecutionDetector", "Interceptor");
5151

52-
void PollingLoopDetector::initialize()
52+
void EdgeKiller::initialize()
5353
{
5454
m_detector = (ModuleExecutionDetector*)s2e()->getPlugin("ModuleExecutionDetector");
5555
m_monitor = (OSMonitor*)s2e()->getPlugin("Interceptor");
5656

5757
m_monitor->onModuleLoad.connect(
5858
sigc::mem_fun(*this,
59-
&PollingLoopDetector::onModuleLoad)
59+
&EdgeKiller::onModuleLoad)
6060
);
6161

6262
m_monitor->onModuleUnload.connect(
6363
sigc::mem_fun(*this,
64-
&PollingLoopDetector::onModuleUnload)
64+
&EdgeKiller::onModuleUnload)
6565
);
6666

6767

@@ -71,18 +71,18 @@ void PollingLoopDetector::initialize()
7171
/**
7272
* Read the config section of the module
7373
*/
74-
void PollingLoopDetector::onModuleLoad(
74+
void EdgeKiller::onModuleLoad(
7575
S2EExecutionState* state,
7676
const ModuleDescriptor &module
7777
)
7878
{
79-
DECLARE_PLUGINSTATE(PollingLoopDetectorState, state);
79+
DECLARE_PLUGINSTATE(EdgeKillerState, state);
8080

8181
ConfigFile *cfg = s2e()->getConfig();
8282
const std::string *id = m_detector->getModuleId(module);
8383

8484
if (!id) {
85-
s2e()->getDebugStream() << "PollingLoopDetector could not figure out which "
85+
s2e()->getDebugStream() << "EdgeKiller could not figure out which "
8686
"module id was passed to onModuleLoad!" << std::endl;
8787
module.Print(s2e()->getDebugStream());
8888
return;
@@ -95,7 +95,7 @@ void PollingLoopDetector::onModuleLoad(
9595
ConfigFile::string_list pollingEntries = cfg->getListKeys(ss.str());
9696

9797
if (pollingEntries.size() == 0) {
98-
s2e()->getWarningsStream() << "PollingLoopDetector did not find any configured entry for "
98+
s2e()->getWarningsStream() << "EdgeKiller did not find any configured entry for "
9999
"the module " << *id << "(" << ss.str() << ")" << std::endl;
100100
return;
101101
}
@@ -105,21 +105,21 @@ void PollingLoopDetector::onModuleLoad(
105105
ss1 << ss.str() << "." << *it;
106106
ConfigFile::integer_list il = cfg->getIntegerList(ss1.str());
107107
if (il.size() != 2) {
108-
s2e()->getWarningsStream() << "PollingLoopDetector entry " << ss1.str() <<
108+
s2e()->getWarningsStream() << "EdgeKiller entry " << ss1.str() <<
109109
" must be of the form {sourcePc, destPc} format" << *id << std::endl;
110110
continue;
111111
}
112112

113113
bool ok = false;
114114
uint64_t source = cfg->getInt(ss1.str() + "[1]", 0, &ok);
115115
if (!ok) {
116-
s2e()->getWarningsStream() << "PollingLoopDetector could not read " << ss1.str() << "[0]" << std::endl;
116+
s2e()->getWarningsStream() << "EdgeKiller could not read " << ss1.str() << "[0]" << std::endl;
117117
continue;
118118
}
119119

120120
uint64_t dest = cfg->getInt(ss1.str() + "[2]", 0, &ok);
121121
if (!ok) {
122-
s2e()->getWarningsStream() << "PollingLoopDetector could not read " << ss1.str() << "[1]" << std::endl;
122+
s2e()->getWarningsStream() << "EdgeKiller could not read " << ss1.str() << "[1]" << std::endl;
123123
continue;
124124
}
125125

@@ -128,35 +128,35 @@ void PollingLoopDetector::onModuleLoad(
128128
dest = module.ToRuntime(dest);
129129

130130
//Insert in the state
131-
plgState->addEntry(source, dest);
131+
plgState->addEdge(source, dest);
132132
}
133133

134134
if (!m_connection.connected()) {
135135
m_connection = m_detector->onModuleTranslateBlockEnd.connect(
136136
sigc::mem_fun(*this,
137-
&PollingLoopDetector::onModuleTranslateBlockEnd)
137+
&EdgeKiller::onModuleTranslateBlockEnd)
138138
);
139139
}
140140

141141

142142
}
143143

144-
void PollingLoopDetector::onModuleUnload(
144+
void EdgeKiller::onModuleUnload(
145145
S2EExecutionState* state,
146146
const ModuleDescriptor &module
147147
)
148148
{
149-
DECLARE_PLUGINSTATE(PollingLoopDetectorState, state);
149+
DECLARE_PLUGINSTATE(EdgeKillerState, state);
150150

151151
//Remove all the polling entries that belong to the module
152-
PollingLoopDetectorState::PollingEntries &entries =
152+
EdgeKillerState::EdgeEntries &entries =
153153
plgState->getEntries();
154154

155-
PollingLoopDetectorState::PollingEntries::iterator it1, it2;
155+
EdgeKillerState::EdgeEntries::iterator it1, it2;
156156

157157
it1 = entries.begin();
158158
while(it1 != entries.end()) {
159-
const PollingLoopDetectorState::PollingEntry &e = *it1;
159+
const EdgeKillerState::Edge &e = *it1;
160160
if (module.Contains(e.source)) {
161161
it2 = it1;
162162
++it2;
@@ -173,7 +173,7 @@ void PollingLoopDetector::onModuleUnload(
173173
/**
174174
* Instrument only the blocks where we want to kill the state.
175175
*/
176-
void PollingLoopDetector::onModuleTranslateBlockEnd(
176+
void EdgeKiller::onModuleTranslateBlockEnd(
177177
ExecutionSignal *signal,
178178
S2EExecutionState* state,
179179
const ModuleDescriptor &module,
@@ -182,23 +182,23 @@ void PollingLoopDetector::onModuleTranslateBlockEnd(
182182
bool staticTarget,
183183
uint64_t targetPc)
184184
{
185-
DECLARE_PLUGINSTATE(PollingLoopDetectorState, state);
185+
DECLARE_PLUGINSTATE(EdgeKillerState, state);
186186

187187
//If the target instruction is a kill point, connect the killer.
188-
if (plgState->isPolling(endPc)) {
188+
if (plgState->isEdge(endPc)) {
189189
signal->connect(
190-
sigc::mem_fun(*this, &PollingLoopDetector::onPollingInstruction)
190+
sigc::mem_fun(*this, &EdgeKiller::onEdge)
191191
);
192192
}
193193
}
194194

195195

196-
void PollingLoopDetector::onPollingInstruction(S2EExecutionState* state, uint64_t sourcePc)
196+
void EdgeKiller::onEdge(S2EExecutionState* state, uint64_t sourcePc)
197197
{
198-
DECLARE_PLUGINSTATE(PollingLoopDetectorState, state);
199-
if (plgState->isPolling(sourcePc, state->getPc())) {
198+
DECLARE_PLUGINSTATE(EdgeKillerState, state);
199+
if (plgState->isEdge(sourcePc, state->getPc())) {
200200
std::ostringstream ss;
201-
ss << "Polling loop from 0x" <<std::hex << sourcePc << " to 0x"
201+
ss << "Edge from 0x" <<std::hex << sourcePc << " to 0x"
202202
<< state->getPc();
203203

204204
s2e()->getMessagesStream(state) << ss.str() << std::endl;
@@ -209,60 +209,60 @@ void PollingLoopDetector::onPollingInstruction(S2EExecutionState* state, uint64_
209209

210210
///////////////////////////////////////////////////////////////////////////
211211

212-
PollingLoopDetectorState::PollingLoopDetectorState()
212+
EdgeKillerState::EdgeKillerState()
213213
{
214214

215215
}
216216

217-
PollingLoopDetectorState::PollingLoopDetectorState(S2EExecutionState *s, Plugin *p)
217+
EdgeKillerState::EdgeKillerState(S2EExecutionState *s, Plugin *p)
218218
{
219219

220220
}
221221

222-
PollingLoopDetectorState::~PollingLoopDetectorState()
222+
EdgeKillerState::~EdgeKillerState()
223223
{
224224

225225
}
226226

227-
PluginState *PollingLoopDetectorState::clone() const
227+
PluginState *EdgeKillerState::clone() const
228228
{
229-
return new PollingLoopDetectorState(*this);
229+
return new EdgeKillerState(*this);
230230
}
231231

232-
PluginState *PollingLoopDetectorState::factory(Plugin *p, S2EExecutionState *s)
232+
PluginState *EdgeKillerState::factory(Plugin *p, S2EExecutionState *s)
233233
{
234-
return new PollingLoopDetectorState();
234+
return new EdgeKillerState();
235235
}
236236

237-
PollingLoopDetectorState::PollingEntries &PollingLoopDetectorState::getEntries()
237+
EdgeKillerState::EdgeEntries &EdgeKillerState::getEntries()
238238
{
239-
return m_pollingEntries;
239+
return m_edges;
240240
}
241241

242-
void PollingLoopDetectorState::addEntry(uint64_t source, uint64_t dest)
242+
void EdgeKillerState::addEdge(uint64_t source, uint64_t dest)
243243
{
244-
PollingEntry pe;
244+
Edge pe;
245245
pe.source = source;
246246
pe.dest = dest;
247-
m_pollingEntries.insert(pe);
247+
m_edges.insert(pe);
248248
}
249249

250-
bool PollingLoopDetectorState::isPolling(uint64_t source) const
250+
bool EdgeKillerState::isEdge(uint64_t source) const
251251
{
252-
PollingEntry pe;
252+
Edge pe;
253253
pe.source = source;
254-
return m_pollingEntries.find(pe) != m_pollingEntries.end();
254+
return m_edges.find(pe) != m_edges.end();
255255
}
256256

257-
bool PollingLoopDetectorState::isPolling(uint64_t source, uint64_t dest) const
257+
bool EdgeKillerState::isEdge(uint64_t source, uint64_t dest) const
258258
{
259-
PollingEntry pe;
259+
Edge pe;
260260
pe.source = source;
261261
pe.dest = dest;
262262

263263
//For now we assume unique source in the list
264-
PollingEntries::const_iterator it = m_pollingEntries.find(pe);
265-
if (it != m_pollingEntries.end()) {
264+
EdgeEntries::const_iterator it = m_edges.find(pe);
265+
if (it != m_edges.end()) {
266266
return pe == *it;
267267
}
268268
return false;

‎qemu/s2e/Plugins/PollingLoopDetector.h ‎qemu/s2e/Plugins/EdgeKiller.h

+17-17
Original file line numberDiff line numberDiff line change
@@ -46,11 +46,11 @@
4646
namespace s2e {
4747
namespace plugins {
4848

49-
class PollingLoopDetector : public Plugin
49+
class EdgeKiller : public Plugin
5050
{
5151
S2E_PLUGIN
5252
public:
53-
PollingLoopDetector(S2E* s2e): Plugin(s2e) {}
53+
EdgeKiller(S2E* s2e): Plugin(s2e) {}
5454

5555
void initialize();
5656

@@ -77,47 +77,47 @@ class PollingLoopDetector : public Plugin
7777
bool staticTarget,
7878
uint64_t targetPc);
7979

80-
void onPollingInstruction(S2EExecutionState* state, uint64_t sourcePc);
80+
void onEdge(S2EExecutionState* state, uint64_t sourcePc);
8181

8282
ModuleExecutionDetector *m_detector;
8383
OSMonitor *m_monitor;
8484

8585
};
8686

87-
class PollingLoopDetectorState : public PluginState
87+
class EdgeKillerState : public PluginState
8888
{
8989
public:
90-
struct PollingEntry {
90+
struct Edge {
9191
uint64_t source;
9292
uint64_t dest;
93-
bool operator()(const PollingEntry &p1, const PollingEntry &p2) const {
93+
bool operator()(const Edge &p1, const Edge &p2) const {
9494
return p1.source < p2.source;
9595
}
9696

97-
bool operator==(const PollingEntry &p1) const {
97+
bool operator==(const Edge &p1) const {
9898
return p1.source == source && p1.dest == dest;
9999
}
100100
};
101101

102-
typedef std::set<PollingEntry, PollingEntry> PollingEntries;
102+
typedef std::set<Edge, Edge> EdgeEntries;
103103

104104
private:
105-
PollingEntries m_pollingEntries;
105+
EdgeEntries m_edges;
106106

107107
public:
108-
PollingLoopDetectorState();
109-
PollingLoopDetectorState(S2EExecutionState *s, Plugin *p);
110-
virtual ~PollingLoopDetectorState();
108+
EdgeKillerState();
109+
EdgeKillerState(S2EExecutionState *s, Plugin *p);
110+
virtual ~EdgeKillerState();
111111
virtual PluginState *clone() const;
112112
static PluginState *factory(Plugin *p, S2EExecutionState *s);
113113

114-
void addEntry(uint64_t source, uint64_t dest);
115-
PollingEntries &getEntries();
114+
void addEdge(uint64_t source, uint64_t dest);
115+
EdgeEntries &getEntries();
116116

117-
bool isPolling(uint64_t source) const;
118-
bool isPolling(uint64_t source, uint64_t dest) const;
117+
bool isEdge(uint64_t source) const;
118+
bool isEdge(uint64_t source, uint64_t dest) const;
119119

120-
friend class PollingLoopDetector;
120+
friend class EdgeKiller;
121121
};
122122

123123
} // namespace plugins

‎s2e.files

+69-6
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,51 @@
11

22
.gitignore
33
Makefile
4+
Makefile.win32
5+
S2E-AUTHORS
6+
docs/BuildingLinux.html
7+
docs/BuildingLinux.rst
48
docs/BuildingS2E.html
59
docs/BuildingS2E.rst
610
docs/BuildingS2EManually.html
711
docs/BuildingS2EManually.rst
12+
docs/BuildingS2EWindows.html
13+
docs/BuildingS2EWindows.rst
14+
docs/EquivalenceTesting.html
15+
docs/EquivalenceTesting.rst
16+
docs/ExecutionTracers.html
17+
docs/ExecutionTracers.rst
18+
docs/FAQ.html
19+
docs/FAQ.rst
820
docs/ImageInstallation.html
921
docs/ImageInstallation.rst
1022
docs/Makefile
23+
docs/Plugins/BaseInstructions.html
24+
docs/Plugins/BaseInstructions.rst
25+
docs/Plugins/FunctionMonitor.html
26+
docs/Plugins/FunctionMonitor.rst
27+
docs/Plugins/ModuleExecutionDetector.html
28+
docs/Plugins/ModuleExecutionDetector.rst
29+
docs/Plugins/RawMonitor.html
30+
docs/Plugins/RawMonitor.rst
31+
docs/Plugins/StateManager.html
32+
docs/Plugins/StateManager.rst
33+
docs/Plugins/Tracers/ExecutionTracer.html
34+
docs/Plugins/Tracers/ExecutionTracer.rst
35+
docs/Plugins/Tracers/InstructionCounter.html
36+
docs/Plugins/Tracers/InstructionCounter.rst
37+
docs/Plugins/Tracers/ModuleTracer.html
38+
docs/Plugins/Tracers/ModuleTracer.rst
39+
docs/Plugins/Tracers/TestCaseGenerator.html
40+
docs/Plugins/Tracers/TestCaseGenerator.rst
41+
docs/Plugins/Tracers/TranslationBlockTracer.html
42+
docs/Plugins/Tracers/TranslationBlockTracer.rst
1143
docs/Plugins/WindowsInterceptor/WindowsMonitor.html
1244
docs/Plugins/WindowsInterceptor/WindowsMonitor.rst
45+
docs/ProfilingS2E.html
46+
docs/ProfilingS2E.rst
47+
docs/SystemTap.html
48+
docs/SystemTap.rst
1349
docs/TestingMinimalProgram.html
1450
docs/TestingMinimalProgram.rst
1551
docs/Tools/CoverageGenerator.html
@@ -22,17 +58,34 @@ docs/Tools/ForkProfiler.html
2258
docs/Tools/ForkProfiler.rst
2359
docs/Tools/TbPrinter.html
2460
docs/Tools/TbPrinter.rst
61+
docs/UsingS2EGet.html
62+
docs/UsingS2EGet.rst
2563
docs/Windows/CheckedBuild.html
2664
docs/Windows/CheckedBuild.rst
2765
docs/Windows/DriverTutorial.html
2866
docs/Windows/DriverTutorial.rst
67+
docs/WritingPlugins.html
68+
docs/WritingPlugins.rst
2969
docs/img/lines.gif
3070
docs/index.html
3171
docs/index.rst
3272
docs/pygments-default.css
3373
docs/rst2html-pygments
3474
docs/rst2latex-pygments
3575
docs/s2e.css
76+
docs/sample/factorial.c
77+
guest/include/s2e.h
78+
guest/s2eget/Makefile
79+
guest/s2eget/s2eget.c
80+
guest/stp/s2e.stp
81+
guest/windbg-gdb/BFDInterface.cpp
82+
guest/windbg-gdb/BFDInterface.h
83+
guest/windbg-gdb/Makefile
84+
guest/windbg-gdb/StartSize.h
85+
guest/windbg-gdb/Symbols.cpp
86+
guest/windbg-gdb/Symbols.h
87+
guest/windbg-gdb/gdbsyms.def
88+
guest/windbg-gdb/main.cpp
3689
klee/LICENSE.TXT
3790
klee/Makefile
3891
klee/Makefile.common
@@ -1342,8 +1395,6 @@ qemu/s2e/Plugins/Annotation.cpp
13421395
qemu/s2e/Plugins/Annotation.h
13431396
qemu/s2e/Plugins/BaseInstructions.cpp
13441397
qemu/s2e/Plugins/BaseInstructions.h
1345-
qemu/s2e/Plugins/BranchCoverage.cpp
1346-
qemu/s2e/Plugins/BranchCoverage.h
13471398
qemu/s2e/Plugins/CacheSim.cpp
13481399
qemu/s2e/Plugins/CacheSim.h
13491400
qemu/s2e/Plugins/CodeSelector.cpp
@@ -1359,6 +1410,8 @@ qemu/s2e/Plugins/DataSelectors/WindowsService.h
13591410
qemu/s2e/Plugins/DataStructureSpy.h
13601411
qemu/s2e/Plugins/Debugger.cpp
13611412
qemu/s2e/Plugins/Debugger.h
1413+
qemu/s2e/Plugins/EdgeKiller.cpp
1414+
qemu/s2e/Plugins/EdgeKiller.h
13621415
qemu/s2e/Plugins/Example.cpp
13631416
qemu/s2e/Plugins/Example.h
13641417
qemu/s2e/Plugins/ExecutableImage.h
@@ -1381,14 +1434,16 @@ qemu/s2e/Plugins/FunctionMonitor.cpp
13811434
qemu/s2e/Plugins/FunctionMonitor.h
13821435
qemu/s2e/Plugins/HostFiles.cpp
13831436
qemu/s2e/Plugins/HostFiles.h
1437+
qemu/s2e/Plugins/MemoryChecker.cpp
1438+
qemu/s2e/Plugins/MemoryChecker.h
13841439
qemu/s2e/Plugins/ModuleDescriptor.h
13851440
qemu/s2e/Plugins/ModuleExecutionDetector.cpp
13861441
qemu/s2e/Plugins/ModuleExecutionDetector.h
13871442
qemu/s2e/Plugins/OSMonitor.h
1388-
qemu/s2e/Plugins/PollingLoopDetector.cpp
1389-
qemu/s2e/Plugins/PollingLoopDetector.h
13901443
qemu/s2e/Plugins/RawMonitor.cpp
13911444
qemu/s2e/Plugins/RawMonitor.h
1445+
qemu/s2e/Plugins/Searchers/CooperativeSearcher.cpp
1446+
qemu/s2e/Plugins/Searchers/CooperativeSearcher.h
13921447
qemu/s2e/Plugins/Searchers/MaxTbSearcher.cpp
13931448
qemu/s2e/Plugins/Searchers/MaxTbSearcher.h
13941449
qemu/s2e/Plugins/StateManager.cpp
@@ -2248,11 +2303,17 @@ tools/configure
22482303
tools/include/s2etools/config.h.in
22492304
tools/lib/BinaryReaders/BFDInterface.cpp
22502305
tools/lib/BinaryReaders/BFDInterface.h
2306+
tools/lib/BinaryReaders/Binary.cpp
2307+
tools/lib/BinaryReaders/Binary.h
22512308
tools/lib/BinaryReaders/ExecutableFile.cpp
22522309
tools/lib/BinaryReaders/ExecutableFile.h
22532310
tools/lib/BinaryReaders/Library.cpp
22542311
tools/lib/BinaryReaders/Library.h
2312+
tools/lib/BinaryReaders/Macho.cpp
2313+
tools/lib/BinaryReaders/Macho.h
22552314
tools/lib/BinaryReaders/Makefile
2315+
tools/lib/BinaryReaders/Pe.cpp
2316+
tools/lib/BinaryReaders/Pe.h
22562317
tools/lib/BinaryReaders/TextModule.cpp
22572318
tools/lib/BinaryReaders/TextModule.h
22582319
tools/lib/ExecutionTracer/InstructionCounter.cpp
@@ -2287,8 +2348,10 @@ tools/tools/pfprofiler/pfprofiler.h
22872348
tools/tools/s2etools-config/FinalLibDeps.txt
22882349
tools/tools/s2etools-config/Makefile
22892350
tools/tools/s2etools-config/s2etools-config.in.in
2351+
tools/tools/scripts/ida/extractBasicBlocks.py
2352+
tools/tools/scripts/ida/extractFunctions.py
22902353
tools/tools/tbtrace/Makefile
22912354
tools/tools/tbtrace/TbTrace.cpp
22922355
tools/tools/tbtrace/TbTrace.h
2293-
qemu/s2e/Plugins/MemoryChecker.h
2294-
qemu/s2e/Plugins/MemoryChecker.cpp
2356+
windows-toolchain/llvm-2.6-mingw.patch
2357+
windows-toolchain/setupenv.sh

‎s2e.includes

+11-1
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,16 @@
11
docs
2-
docs/Plugins/WindowsInterceptor
32
docs/Plugins
3+
docs/Plugins/Tracers
4+
docs/Plugins/WindowsInterceptor
45
docs/Tools
56
docs/Windows
67
docs/img
8+
docs/sample
9+
guest/include
10+
guest
11+
guest/s2eget
12+
guest/stp
13+
guest/windbg-gdb
714
klee
815
klee/autoconf
916
klee/docs/SMT-COMP
@@ -188,7 +195,10 @@ tools/tools/debugger
188195
tools/tools/forkprofiler
189196
tools/tools/pfprofiler
190197
tools/tools/s2etools-config
198+
tools/tools/scripts/ida
199+
tools/tools/scripts
191200
tools/tools/tbtrace
201+
windows-toolchain
192202
../llvm-2.6/include
193203
../llvm-build/include
194204
../stp-build/include

0 commit comments

Comments
 (0)
Please sign in to comment.