svf-lib 1.0.1259 → 1.0.1261
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/SVF-linux/Release-build/lib/libSvf.a +0 -0
- package/SVF-linux/include/CFL/CFLAlias.h +2 -3
- package/SVF-linux/include/CFL/CFLGrammar.h +2 -0
- package/SVF-linux/include/CFL/CFLGrammar.txt +28 -28
- package/SVF-linux/include/CFL/PEGGrammar.txt +7 -7
- package/SVF-linux/include/CFL/VFG.txt +3 -3
- package/SVF-osx/Release-build/lib/libSvf.a +0 -0
- package/SVF-osx/include/CFL/CFLAlias.h +2 -3
- package/SVF-osx/include/CFL/CFLGrammar.h +2 -0
- package/SVF-osx/include/CFL/CFLGrammar.txt +28 -28
- package/SVF-osx/include/CFL/PEGGrammar.txt +7 -7
- package/SVF-osx/include/CFL/VFG.txt +3 -3
- package/package.json +1 -1
|
Binary file
|
|
@@ -107,10 +107,9 @@ public:
|
|
|
107
107
|
if (edge != nullptr )
|
|
108
108
|
{
|
|
109
109
|
return false;
|
|
110
|
-
|
|
111
110
|
}
|
|
112
|
-
CFLGrammar::Kind copyKind = grammar->str2Kind("
|
|
113
|
-
CFLGrammar::Kind copybarKind = grammar->str2Kind("
|
|
111
|
+
CFLGrammar::Kind copyKind = grammar->str2Kind("copy");
|
|
112
|
+
CFLGrammar::Kind copybarKind = grammar->str2Kind("copybar");
|
|
114
113
|
solver->pushIntoWorklist(graph->addCFLEdge(graph->getGNode(src),graph->getGNode(dst), copyKind));
|
|
115
114
|
solver->pushIntoWorklist(graph->addCFLEdge(graph->getGNode(dst),graph->getGNode(src), copybarKind));
|
|
116
115
|
return true;
|
|
@@ -246,6 +246,8 @@ public:
|
|
|
246
246
|
|
|
247
247
|
Symbol insertNonTerminalSymbol(std::string strLit);
|
|
248
248
|
|
|
249
|
+
Symbol insertTerminalSymbol(std::string strLit);
|
|
250
|
+
|
|
249
251
|
void insertAttribute(Kind kind, Attribute a);
|
|
250
252
|
|
|
251
253
|
inline static Kind getAttributedKind(Attribute attribute, Kind kind)
|
|
@@ -1,39 +1,39 @@
|
|
|
1
1
|
Start:
|
|
2
2
|
V
|
|
3
3
|
Terminal:
|
|
4
|
-
|
|
4
|
+
addr copy store load gep vgep
|
|
5
5
|
Productions:
|
|
6
6
|
F -> epsilon;
|
|
7
|
-
F -> F
|
|
8
|
-
F ->
|
|
9
|
-
F -> F
|
|
10
|
-
F ->
|
|
7
|
+
F -> F copy;
|
|
8
|
+
F -> addr Memflow;
|
|
9
|
+
F -> F store V load;
|
|
10
|
+
F -> store Memflow load;
|
|
11
11
|
Fbar -> epsilon;
|
|
12
|
-
Fbar ->
|
|
13
|
-
Fbar -> Memflowbar
|
|
14
|
-
Fbar ->
|
|
15
|
-
Fbar ->
|
|
12
|
+
Fbar -> copybar Fbar;
|
|
13
|
+
Fbar -> Memflowbar addrbar;
|
|
14
|
+
Fbar -> loadbar V storebar Fbar;
|
|
15
|
+
Fbar -> loadbar Memflowbar storebar;
|
|
16
16
|
V -> Fbar V F;
|
|
17
|
-
V ->
|
|
18
|
-
V ->
|
|
19
|
-
V ->
|
|
20
|
-
V ->
|
|
21
|
-
V ->
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
Memflow ->
|
|
17
|
+
V -> addrbar addr;
|
|
18
|
+
V -> gepbar_i V gep_i;
|
|
19
|
+
V -> gepbarpath V gep_0;
|
|
20
|
+
V -> gepbar_i F gep_i;
|
|
21
|
+
V -> gepbar_i Fbar gep_i;
|
|
22
|
+
copy -> vgep;
|
|
23
|
+
copybar -> vgepbar;
|
|
24
|
+
gep_1 -> gep_0 F gep_1;
|
|
25
|
+
gepbar_1 -> gepbar_1 Fbar gepbar_0;
|
|
26
|
+
gep_1 -> gep_0 F vgep;
|
|
27
|
+
gepbar_1 -> vgepbar Fbar gepbar_0;
|
|
28
|
+
gepbarpath -> gepbar_0 gepbar_0;
|
|
29
|
+
gepbarpath -> gepbarpath gepbar_0;
|
|
30
|
+
Memflow -> load store;
|
|
31
31
|
Memflow -> Fbar Memflow;
|
|
32
32
|
Memflow -> F Memflow Fbar;
|
|
33
|
-
Memflow ->
|
|
34
|
-
Memflow ->
|
|
35
|
-
Memflowbar ->
|
|
33
|
+
Memflow -> gep_i Memflow gepbar_i;
|
|
34
|
+
Memflow -> gepbar_i Memflow gep_i;
|
|
35
|
+
Memflowbar -> storebar loadbar;
|
|
36
36
|
Memflowbar -> Memflowbar F;
|
|
37
37
|
Memflowbar -> F Memflowbar Fbar;
|
|
38
|
-
Memflowbar ->
|
|
39
|
-
Memflowbar ->
|
|
38
|
+
Memflowbar -> gep_i Memflowbar gepbar_i;
|
|
39
|
+
Memflowbar -> gepbar_i Memflowbar gep_i;
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
Start:
|
|
2
2
|
V
|
|
3
3
|
Terminal:
|
|
4
|
-
|
|
4
|
+
addr copy store load gep
|
|
5
5
|
Productions:
|
|
6
|
-
F -> (
|
|
7
|
-
Fbar -> ( M ?
|
|
8
|
-
M ->
|
|
9
|
-
V -> Fbar V F |
|
|
10
|
-
ArrayPath ->
|
|
11
|
-
Memcpy ->
|
|
6
|
+
F -> ( copy M ? ) *;
|
|
7
|
+
Fbar -> ( M ? copybar ) *;
|
|
8
|
+
M -> addr V addrbar;
|
|
9
|
+
V -> Fbar V F | gepbar_i V gep_i | M | epsilon | gepbar_i Memcpy gep_i | gep_i Memcpy gepbar_i | ArrayPath V gep_0;
|
|
10
|
+
ArrayPath -> gepbar_0 gepbar_0 | ArrayPath gepbar_0;
|
|
11
|
+
Memcpy -> addrbar V addr | gep_i Memcpy gepbar_i | F Memcpy Fbar;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
Start:
|
|
2
2
|
A
|
|
3
3
|
Terminal:
|
|
4
|
-
a
|
|
4
|
+
a call ret
|
|
5
5
|
Productions:
|
|
6
|
-
A -> A A | a |
|
|
7
|
-
Abar -> Abar Abar | abar |
|
|
6
|
+
A -> A A | a | call_i A ret_i | epsilon;
|
|
7
|
+
Abar -> Abar Abar | abar | retbar_i Abar callbar_i | epsilon;
|
|
Binary file
|
|
@@ -107,10 +107,9 @@ public:
|
|
|
107
107
|
if (edge != nullptr )
|
|
108
108
|
{
|
|
109
109
|
return false;
|
|
110
|
-
|
|
111
110
|
}
|
|
112
|
-
CFLGrammar::Kind copyKind = grammar->str2Kind("
|
|
113
|
-
CFLGrammar::Kind copybarKind = grammar->str2Kind("
|
|
111
|
+
CFLGrammar::Kind copyKind = grammar->str2Kind("copy");
|
|
112
|
+
CFLGrammar::Kind copybarKind = grammar->str2Kind("copybar");
|
|
114
113
|
solver->pushIntoWorklist(graph->addCFLEdge(graph->getGNode(src),graph->getGNode(dst), copyKind));
|
|
115
114
|
solver->pushIntoWorklist(graph->addCFLEdge(graph->getGNode(dst),graph->getGNode(src), copybarKind));
|
|
116
115
|
return true;
|
|
@@ -246,6 +246,8 @@ public:
|
|
|
246
246
|
|
|
247
247
|
Symbol insertNonTerminalSymbol(std::string strLit);
|
|
248
248
|
|
|
249
|
+
Symbol insertTerminalSymbol(std::string strLit);
|
|
250
|
+
|
|
249
251
|
void insertAttribute(Kind kind, Attribute a);
|
|
250
252
|
|
|
251
253
|
inline static Kind getAttributedKind(Attribute attribute, Kind kind)
|
|
@@ -1,39 +1,39 @@
|
|
|
1
1
|
Start:
|
|
2
2
|
V
|
|
3
3
|
Terminal:
|
|
4
|
-
|
|
4
|
+
addr copy store load gep vgep
|
|
5
5
|
Productions:
|
|
6
6
|
F -> epsilon;
|
|
7
|
-
F -> F
|
|
8
|
-
F ->
|
|
9
|
-
F -> F
|
|
10
|
-
F ->
|
|
7
|
+
F -> F copy;
|
|
8
|
+
F -> addr Memflow;
|
|
9
|
+
F -> F store V load;
|
|
10
|
+
F -> store Memflow load;
|
|
11
11
|
Fbar -> epsilon;
|
|
12
|
-
Fbar ->
|
|
13
|
-
Fbar -> Memflowbar
|
|
14
|
-
Fbar ->
|
|
15
|
-
Fbar ->
|
|
12
|
+
Fbar -> copybar Fbar;
|
|
13
|
+
Fbar -> Memflowbar addrbar;
|
|
14
|
+
Fbar -> loadbar V storebar Fbar;
|
|
15
|
+
Fbar -> loadbar Memflowbar storebar;
|
|
16
16
|
V -> Fbar V F;
|
|
17
|
-
V ->
|
|
18
|
-
V ->
|
|
19
|
-
V ->
|
|
20
|
-
V ->
|
|
21
|
-
V ->
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
Memflow ->
|
|
17
|
+
V -> addrbar addr;
|
|
18
|
+
V -> gepbar_i V gep_i;
|
|
19
|
+
V -> gepbarpath V gep_0;
|
|
20
|
+
V -> gepbar_i F gep_i;
|
|
21
|
+
V -> gepbar_i Fbar gep_i;
|
|
22
|
+
copy -> vgep;
|
|
23
|
+
copybar -> vgepbar;
|
|
24
|
+
gep_1 -> gep_0 F gep_1;
|
|
25
|
+
gepbar_1 -> gepbar_1 Fbar gepbar_0;
|
|
26
|
+
gep_1 -> gep_0 F vgep;
|
|
27
|
+
gepbar_1 -> vgepbar Fbar gepbar_0;
|
|
28
|
+
gepbarpath -> gepbar_0 gepbar_0;
|
|
29
|
+
gepbarpath -> gepbarpath gepbar_0;
|
|
30
|
+
Memflow -> load store;
|
|
31
31
|
Memflow -> Fbar Memflow;
|
|
32
32
|
Memflow -> F Memflow Fbar;
|
|
33
|
-
Memflow ->
|
|
34
|
-
Memflow ->
|
|
35
|
-
Memflowbar ->
|
|
33
|
+
Memflow -> gep_i Memflow gepbar_i;
|
|
34
|
+
Memflow -> gepbar_i Memflow gep_i;
|
|
35
|
+
Memflowbar -> storebar loadbar;
|
|
36
36
|
Memflowbar -> Memflowbar F;
|
|
37
37
|
Memflowbar -> F Memflowbar Fbar;
|
|
38
|
-
Memflowbar ->
|
|
39
|
-
Memflowbar ->
|
|
38
|
+
Memflowbar -> gep_i Memflowbar gepbar_i;
|
|
39
|
+
Memflowbar -> gepbar_i Memflowbar gep_i;
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
Start:
|
|
2
2
|
V
|
|
3
3
|
Terminal:
|
|
4
|
-
|
|
4
|
+
addr copy store load gep
|
|
5
5
|
Productions:
|
|
6
|
-
F -> (
|
|
7
|
-
Fbar -> ( M ?
|
|
8
|
-
M ->
|
|
9
|
-
V -> Fbar V F |
|
|
10
|
-
ArrayPath ->
|
|
11
|
-
Memcpy ->
|
|
6
|
+
F -> ( copy M ? ) *;
|
|
7
|
+
Fbar -> ( M ? copybar ) *;
|
|
8
|
+
M -> addr V addrbar;
|
|
9
|
+
V -> Fbar V F | gepbar_i V gep_i | M | epsilon | gepbar_i Memcpy gep_i | gep_i Memcpy gepbar_i | ArrayPath V gep_0;
|
|
10
|
+
ArrayPath -> gepbar_0 gepbar_0 | ArrayPath gepbar_0;
|
|
11
|
+
Memcpy -> addrbar V addr | gep_i Memcpy gepbar_i | F Memcpy Fbar;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
Start:
|
|
2
2
|
A
|
|
3
3
|
Terminal:
|
|
4
|
-
a
|
|
4
|
+
a call ret
|
|
5
5
|
Productions:
|
|
6
|
-
A -> A A | a |
|
|
7
|
-
Abar -> Abar Abar | abar |
|
|
6
|
+
A -> A A | a | call_i A ret_i | epsilon;
|
|
7
|
+
Abar -> Abar Abar | abar | retbar_i Abar callbar_i | epsilon;
|