-
Notifications
You must be signed in to change notification settings - Fork 0
/
toy_module.cpp
55 lines (42 loc) · 1.19 KB
/
toy_module.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
#include "stdafx.h"
#include "toy_module.h"
using namespace llvm;
using namespace std;
void dump_module_structs(llvm::Module& m)
{
errs() << "Module:" << m.getName() << "'s structs:\n";
vector <StructType*> list = m.getIdentifiedStructTypes();
for (vector <StructType*> ::iterator it = list.begin(); it != list.end(); ++it) {
(*it)->print(errs());
errs() << "\n";
}
}
void dump_module_globals(llvm::Module& m, bool llvmPrint)
{
errs() << "Module:" << m.getName() << "'s globals:\n";
llvm::Module::GlobalListType& gl = m.getGlobalList();
for (GlobalVariable& g : gl) {
if (llvmPrint) {
g.print(errs());
errs() << "\n";
}
else {
string type_str;
raw_string_ostream rso(type_str);
PointerType* ty = g.getType();
ty->print(rso);
errs() << rso.str() << " " << g.getName() << "\n";
}
}
}
void dump_module_functions(llvm::Module& m)
{
errs() << "Module:" << m.getName() << "'s functions:\n";
llvm::Module::FunctionListType& gl = m.getFunctionList();
for (auto& g : gl) {
string type_str;
raw_string_ostream rso(type_str);
g.getType()->print(rso);
errs() << rso.str() << " " << g.getName() << "\n";
}
}