Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
B
bpftrace
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
bpftrace
Commits
23a53937
Commit
23a53937
authored
Sep 15, 2018
by
Brendan Gregg
Committed by
GitHub
Sep 15, 2018
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #100 from iovisor/multiple_kprobes
attach to multiple identical probes
parents
f3ab5097
f89e5d25
Changes
10
Show whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
178 additions
and
97 deletions
+178
-97
src/ast/ast.cpp
src/ast/ast.cpp
+17
-0
src/ast/ast.h
src/ast/ast.h
+11
-0
src/ast/codegen_llvm.cpp
src/ast/codegen_llvm.cpp
+19
-3
src/ast/codegen_llvm.h
src/ast/codegen_llvm.h
+3
-0
src/ast/semantic_analyser.cpp
src/ast/semantic_analyser.cpp
+0
-3
src/attached_probe.cpp
src/attached_probe.cpp
+4
-3
src/bpftrace.cpp
src/bpftrace.cpp
+14
-6
src/types.h
src/types.h
+1
-0
tests/codegen.cpp
tests/codegen.cpp
+109
-69
tests/semantic_analyser.cpp
tests/semantic_analyser.cpp
+0
-13
No files found.
src/ast/ast.cpp
View file @
23a53937
...
...
@@ -124,6 +124,15 @@ std::string AttachPoint::name(const std::string &attach_point) const
return
n
;
}
int
AttachPoint
::
index
(
std
::
string
name
)
{
if
(
index_
.
count
(
name
)
==
0
)
return
0
;
return
index_
[
name
];
}
void
AttachPoint
::
set_index
(
std
::
string
name
,
int
index
)
{
index_
[
name
]
=
index
;
}
std
::
string
Probe
::
name
()
const
{
std
::
string
n
=
""
;
...
...
@@ -141,5 +150,13 @@ std::string Probe::name() const
return
n
.
substr
(
0
,
n
.
size
()
-
1
);
}
int
Probe
::
index
()
{
return
index_
;
}
void
Probe
::
set_index
(
int
index
)
{
index_
=
index
;
}
}
// namespace ast
}
// namespace bpftrace
src/ast/ast.h
View file @
23a53937
...
...
@@ -2,6 +2,7 @@
#include <string>
#include <vector>
#include <map>
#include "types.h"
...
...
@@ -193,6 +194,11 @@ public:
void
accept
(
Visitor
&
v
)
override
;
std
::
string
name
(
const
std
::
string
&
attach_point
)
const
;
int
index
(
std
::
string
name
);
void
set_index
(
std
::
string
name
,
int
index
);
private:
std
::
map
<
std
::
string
,
int
>
index_
;
};
using
AttachPointList
=
std
::
vector
<
AttachPoint
*>
;
...
...
@@ -208,6 +214,11 @@ public:
void
accept
(
Visitor
&
v
)
override
;
std
::
string
name
()
const
;
bool
need_expansion
=
false
;
// must build a BPF program per wildcard match
int
index
();
void
set_index
(
int
index
);
private:
int
index_
=
0
;
};
using
ProbeList
=
std
::
vector
<
Probe
*>
;
...
...
src/ast/codegen_llvm.cpp
View file @
23a53937
...
...
@@ -885,7 +885,8 @@ void CodegenLLVM::visit(Probe &probe)
if
(
probe
.
need_expansion
==
false
)
{
// build a single BPF program pre-wildcards
Function
*
func
=
Function
::
Create
(
func_type
,
Function
::
ExternalLinkage
,
probe
.
name
(),
module_
.
get
());
func
->
setSection
(
"s_"
+
probe
.
name
());
probe
.
set_index
(
getNextIndexForProbe
(
probe
.
name
()));
func
->
setSection
(
getSectionNameForProbe
(
probe
.
name
(),
probe
.
index
()));
BasicBlock
*
entry
=
BasicBlock
::
Create
(
module_
->
getContext
(),
"entry"
,
func
);
b_
.
SetInsertPoint
(
entry
);
...
...
@@ -930,8 +931,10 @@ void CodegenLLVM::visit(Probe &probe)
printf_id_
=
starting_printf_id_
;
time_id_
=
starting_time_id_
;
probefull_
=
attach_point
->
name
(
match
);
Function
*
func
=
Function
::
Create
(
func_type
,
Function
::
ExternalLinkage
,
attach_point
->
name
(
match
),
module_
.
get
());
func
->
setSection
(
"s_"
+
attach_point
->
name
(
match
));
int
index
=
getNextIndexForProbe
(
probe
.
name
());
attach_point
->
set_index
(
match
,
index
);
Function
*
func
=
Function
::
Create
(
func_type
,
Function
::
ExternalLinkage
,
probefull_
,
module_
.
get
());
func
->
setSection
(
getSectionNameForProbe
(
probefull_
,
index
));
BasicBlock
*
entry
=
BasicBlock
::
Create
(
module_
->
getContext
(),
"entry"
,
func
);
b_
.
SetInsertPoint
(
entry
);
...
...
@@ -947,6 +950,7 @@ void CodegenLLVM::visit(Probe &probe)
}
}
}
bpftrace_
.
add_probe
(
probe
);
}
void
CodegenLLVM
::
visit
(
Program
&
program
)
...
...
@@ -955,6 +959,18 @@ void CodegenLLVM::visit(Program &program)
probe
->
accept
(
*
this
);
}
int
CodegenLLVM
::
getNextIndexForProbe
(
std
::
string
probe_name
)
{
if
(
next_probe_index_
.
count
(
probe_name
)
==
0
)
next_probe_index_
[
probe_name
]
=
1
;
int
index
=
next_probe_index_
[
probe_name
];
next_probe_index_
[
probe_name
]
+=
1
;
return
index
;
}
std
::
string
CodegenLLVM
::
getSectionNameForProbe
(
std
::
string
probe_name
,
int
index
)
{
return
"s_"
+
probe_name
+
"_"
+
std
::
to_string
(
index
);
}
AllocaInst
*
CodegenLLVM
::
getMapKey
(
Map
&
map
)
{
AllocaInst
*
key
;
...
...
src/ast/codegen_llvm.h
View file @
23a53937
...
...
@@ -47,6 +47,8 @@ public:
void
visit
(
Program
&
program
)
override
;
AllocaInst
*
getMapKey
(
Map
&
map
);
AllocaInst
*
getHistMapKey
(
Map
&
map
,
Value
*
log2
);
int
getNextIndexForProbe
(
std
::
string
probe_name
);
std
::
string
getSectionNameForProbe
(
std
::
string
probe_name
,
int
index
);
Value
*
createLogicalAnd
(
Binop
&
binop
);
Value
*
createLogicalOr
(
Binop
&
binop
);
...
...
@@ -67,6 +69,7 @@ private:
BPFtrace
&
bpftrace_
;
std
::
string
probefull_
;
std
::
string
path_
;
std
::
map
<
std
::
string
,
int
>
next_probe_index_
;
std
::
map
<
std
::
string
,
Value
*>
variables_
;
int
printf_id_
=
0
;
...
...
src/ast/semantic_analyser.cpp
View file @
23a53937
...
...
@@ -731,9 +731,6 @@ void SemanticAnalyser::visit(Probe &probe)
stmt
->
accept
(
*
this
);
}
if
(
is_final_pass
())
{
bpftrace_
.
add_probe
(
probe
);
}
}
void
SemanticAnalyser
::
visit
(
Program
&
program
)
...
...
src/attached_probe.cpp
View file @
23a53937
...
...
@@ -156,18 +156,19 @@ std::string AttachedProbe::eventprefix() const
std
::
string
AttachedProbe
::
eventname
()
const
{
std
::
ostringstream
offset_str
;
std
::
string
index_str
=
"_"
+
std
::
to_string
(
probe_
.
index
);
switch
(
probe_
.
type
)
{
case
ProbeType
:
:
kprobe
:
case
ProbeType
:
:
kretprobe
:
return
eventprefix
()
+
probe_
.
attach_point
;
return
eventprefix
()
+
probe_
.
attach_point
+
index_str
;
case
ProbeType
:
:
uprobe
:
case
ProbeType
:
:
uretprobe
:
case
ProbeType
:
:
usdt
:
offset_str
<<
std
::
hex
<<
offset
();
return
eventprefix
()
+
sanitise
(
probe_
.
path
)
+
"_"
+
offset_str
.
str
();
return
eventprefix
()
+
sanitise
(
probe_
.
path
)
+
"_"
+
offset_str
.
str
()
+
index_str
;
case
ProbeType
:
:
tracepoint
:
return
probe_
.
attach_point
;
return
probe_
.
attach_point
+
index_str
;
default:
abort
();
}
...
...
src/bpftrace.cpp
View file @
23a53937
...
...
@@ -89,6 +89,8 @@ int BPFtrace::add_probe(ast::Probe &p)
probe
.
name
=
attach_point
->
name
(
func
);
probe
.
freq
=
attach_point
->
freq
;
probe
.
loc
=
0
;
probe
.
index
=
attach_point
->
index
(
func
)
>
0
?
attach_point
->
index
(
func
)
:
p
.
index
();
probes_
.
push_back
(
probe
);
}
}
...
...
@@ -307,9 +309,10 @@ std::unique_ptr<AttachedProbe> BPFtrace::attach_probe(Probe &probe, const BpfOrc
// and the name builtin, which must be expanded into separate programs per
// probe), else try to find a the program based on the original probe name
// that includes wildcards.
auto
func
=
bpforc
.
sections_
.
find
(
"s_"
+
probe
.
name
);
std
::
string
index_str
=
"_"
+
std
::
to_string
(
probe
.
index
);
auto
func
=
bpforc
.
sections_
.
find
(
"s_"
+
probe
.
name
+
index_str
);
if
(
func
==
bpforc
.
sections_
.
end
())
func
=
bpforc
.
sections_
.
find
(
"s_"
+
probe
.
orig_name
);
func
=
bpforc
.
sections_
.
find
(
"s_"
+
probe
.
orig_name
+
index_str
);
if
(
func
==
bpforc
.
sections_
.
end
())
{
if
(
probe
.
name
!=
probe
.
orig_name
)
...
...
@@ -334,9 +337,10 @@ std::unique_ptr<AttachedProbe> BPFtrace::attach_probe(Probe &probe, const BpfOrc
int
BPFtrace
::
run
(
std
::
unique_ptr
<
BpfOrc
>
bpforc
)
{
for
(
Probe
&
probe
:
special_probes_
)
auto
r_special_probes
=
special_probes_
.
rbegin
();
for
(;
r_special_probes
!=
special_probes_
.
rend
();
++
r_special_probes
)
{
auto
attached_probe
=
attach_probe
(
probe
,
*
bpforc
.
get
());
auto
attached_probe
=
attach_probe
(
*
r_special_probes
,
*
bpforc
.
get
());
if
(
attached_probe
==
nullptr
)
return
-
1
;
special_attached_probes_
.
push_back
(
std
::
move
(
attached_probe
));
...
...
@@ -348,9 +352,13 @@ int BPFtrace::run(std::unique_ptr<BpfOrc> bpforc)
BEGIN_trigger
();
for
(
Probe
&
probe
:
probes_
)
// NOTE (mmarchini): Apparently the kernel fires kprobe_events in the reverse
// order they were attached, so we insert them backwards to make sure blocks
// are executed in the same order they were declared.
auto
r_probes
=
probes_
.
rbegin
();
for
(;
r_probes
!=
probes_
.
rend
();
++
r_probes
)
{
auto
attached_probe
=
attach_probe
(
probe
,
*
bpforc
.
get
());
auto
attached_probe
=
attach_probe
(
*
r_probes
,
*
bpforc
.
get
());
if
(
attached_probe
==
nullptr
)
return
-
1
;
attached_probes_
.
push_back
(
std
::
move
(
attached_probe
));
...
...
src/types.h
View file @
23a53937
...
...
@@ -83,6 +83,7 @@ public:
// before wildcard expansion
std
::
string
name
;
// full probe name
uint64_t
loc
;
// for USDT probes
int
index
=
0
;
int
freq
;
};
...
...
tests/codegen.cpp
View file @
23a53937
...
...
@@ -13,6 +13,11 @@ namespace test {
namespace
codegen
{
using
::
testing
::
_
;
class
MockBPFtrace
:
public
BPFtrace
{
public:
MOCK_METHOD1
(
add_probe
,
int
(
ast
::
Probe
&
p
));
};
TEST
(
codegen
,
populate_sections
)
{
...
...
@@ -28,8 +33,8 @@ TEST(codegen, populate_sections)
// Check sections are populated
EXPECT_EQ
(
bpforc
->
sections_
.
size
(),
2
);
EXPECT_EQ
(
bpforc
->
sections_
.
count
(
"s_kprobe:foo"
),
1
);
EXPECT_EQ
(
bpforc
->
sections_
.
count
(
"s_kprobe:bar"
),
1
);
EXPECT_EQ
(
bpforc
->
sections_
.
count
(
"s_kprobe:foo
_1
"
),
1
);
EXPECT_EQ
(
bpforc
->
sections_
.
count
(
"s_kprobe:bar
_1
"
),
1
);
}
TEST
(
codegen
,
printf_offsets
)
...
...
@@ -94,12 +99,47 @@ void test(const std::string &input, const std::string expected_output)
EXPECT_EQ
(
full_expected_output
,
out
.
str
());
}
TEST
(
codegen
,
probe_count
)
{
MockBPFtrace
bpftrace
;
EXPECT_CALL
(
bpftrace
,
add_probe
(
_
)).
Times
(
2
);
Driver
driver
;
ASSERT_EQ
(
driver
.
parse_str
(
"kprobe:f { 1; } kprobe:d { 1; }"
),
0
);
ast
::
SemanticAnalyser
semantics
(
driver
.
root_
,
bpftrace
);
ASSERT_EQ
(
semantics
.
analyse
(),
0
);
ast
::
CodegenLLVM
codegen
(
driver
.
root_
,
bpftrace
);
codegen
.
compile
();
}
TEST
(
codegen
,
empty_function
)
{
test
(
"kprobe:f { 1; }"
,
R"EXPECTED(; Function Attrs: norecurse nounwind readnone
define i64 @"kprobe:f"(i8* nocapture readnone) local_unnamed_addr #0 section "s_kprobe:f" {
define i64 @"kprobe:f"(i8* nocapture readnone) local_unnamed_addr #0 section "s_kprobe:f_1" {
entry:
ret i64 0
}
attributes #0 = { norecurse nounwind readnone }
)EXPECTED"
);
}
TEST
(
codegen
,
multiple_identical_kprobes
)
{
test
(
"kprobe:f { 1; } kprobe:f { 1; }"
,
R"EXPECTED(; Function Attrs: norecurse nounwind readnone
define i64 @"kprobe:f"(i8* nocapture readnone) local_unnamed_addr #0 section "s_kprobe:f_1" {
entry:
ret i64 0
}
; Function Attrs: norecurse nounwind readnone
define i64 @"kprobe:f.1"(i8* nocapture readnone) local_unnamed_addr #0 section "s_kprobe:f_2" {
entry:
ret i64 0
}
...
...
@@ -118,7 +158,7 @@ declare i64 @llvm.bpf.pseudo(i64, i64) #0
; Function Attrs: argmemonly nounwind
declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) #1
define i64 @"kprobe:f"(i8* nocapture readnone) local_unnamed_addr section "s_kprobe:f" {
define i64 @"kprobe:f"(i8* nocapture readnone) local_unnamed_addr section "s_kprobe:f
_1
" {
entry:
%"@x_val" = alloca i64, align 8
%"@x_key" = alloca i64, align 8
...
...
@@ -153,7 +193,7 @@ declare i64 @llvm.bpf.pseudo(i64, i64) #0
; Function Attrs: argmemonly nounwind
declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) #1
define i64 @"kprobe:f"(i8* nocapture readnone) local_unnamed_addr section "s_kprobe:f" {
define i64 @"kprobe:f"(i8* nocapture readnone) local_unnamed_addr section "s_kprobe:f
_1
" {
entry:
%"@x_key" = alloca i64, align 8
%str = alloca [64 x i8], align 1
...
...
@@ -199,7 +239,7 @@ declare i64 @llvm.bpf.pseudo(i64, i64) #0
; Function Attrs: argmemonly nounwind
declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) #1
define i64 @"kprobe:f"(i8* nocapture readnone) local_unnamed_addr section "s_kprobe:f" {
define i64 @"kprobe:f"(i8* nocapture readnone) local_unnamed_addr section "s_kprobe:f
_1
" {
entry:
%"@x_val" = alloca i64, align 8
%"@x_key" = alloca [24 x i8], align 8
...
...
@@ -237,7 +277,7 @@ declare i64 @llvm.bpf.pseudo(i64, i64) #0
; Function Attrs: argmemonly nounwind
declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) #1
define i64 @"kprobe:f"(i8* nocapture readnone) local_unnamed_addr section "s_kprobe:f" {
define i64 @"kprobe:f"(i8* nocapture readnone) local_unnamed_addr section "s_kprobe:f
_1
" {
entry:
%"@x_val" = alloca i64, align 8
%"@x_key" = alloca [128 x i8], align 1
...
...
@@ -281,7 +321,7 @@ declare i64 @llvm.bpf.pseudo(i64, i64) #0
; Function Attrs: argmemonly nounwind
declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) #1
define i64 @"kprobe:f"(i8* nocapture readnone) local_unnamed_addr section "s_kprobe:f" {
define i64 @"kprobe:f"(i8* nocapture readnone) local_unnamed_addr section "s_kprobe:f
_1
" {
entry:
%"@x_val" = alloca i64, align 8
%"@x_key" = alloca i64, align 8
...
...
@@ -317,7 +357,7 @@ declare i64 @llvm.bpf.pseudo(i64, i64) #0
; Function Attrs: argmemonly nounwind
declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) #1
define i64 @"kprobe:f"(i8*) local_unnamed_addr section "s_kprobe:f" {
define i64 @"kprobe:f"(i8*) local_unnamed_addr section "s_kprobe:f
_1
" {
entry:
%"@x_val" = alloca i64, align 8
%"@x_key" = alloca i64, align 8
...
...
@@ -357,7 +397,7 @@ declare i64 @llvm.bpf.pseudo(i64, i64) #0
; Function Attrs: argmemonly nounwind
declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) #1
define i64 @"kprobe:f"(i8*) local_unnamed_addr section "s_kprobe:f" {
define i64 @"kprobe:f"(i8*) local_unnamed_addr section "s_kprobe:f
_1
" {
entry:
%"@x_val" = alloca i64, align 8
%"@x_key" = alloca i64, align 8
...
...
@@ -397,7 +437,7 @@ declare i64 @llvm.bpf.pseudo(i64, i64) #0
; Function Attrs: argmemonly nounwind
declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) #1
define i64 @"kprobe:f"(i8* nocapture readnone) local_unnamed_addr section "s_kprobe:f" {
define i64 @"kprobe:f"(i8* nocapture readnone) local_unnamed_addr section "s_kprobe:f
_1
" {
entry:
%"@y_val" = alloca i64, align 8
%"@y_key" = alloca i64, align 8
...
...
@@ -448,7 +488,7 @@ declare i64 @llvm.bpf.pseudo(i64, i64) #0
; Function Attrs: argmemonly nounwind
declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) #1
define i64 @"kprobe:f"(i8* nocapture readnone) local_unnamed_addr section "s_kprobe:f" {
define i64 @"kprobe:f"(i8* nocapture readnone) local_unnamed_addr section "s_kprobe:f
_1
" {
entry:
%"@y_val" = alloca i64, align 8
%"@y_key" = alloca i64, align 8
...
...
@@ -499,7 +539,7 @@ declare i64 @llvm.bpf.pseudo(i64, i64) #0
; Function Attrs: argmemonly nounwind
declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) #1
define i64 @"kprobe:f"(i8* nocapture readnone) local_unnamed_addr section "s_kprobe:f" {
define i64 @"kprobe:f"(i8* nocapture readnone) local_unnamed_addr section "s_kprobe:f
_1
" {
entry:
%"@x_val" = alloca i64, align 8
%"@x_key" = alloca i64, align 8
...
...
@@ -535,7 +575,7 @@ declare i64 @llvm.bpf.pseudo(i64, i64) #0
; Function Attrs: argmemonly nounwind
declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) #1
define i64 @"kprobe:f"(i8* nocapture readnone) local_unnamed_addr section "s_kprobe:f" {
define i64 @"kprobe:f"(i8* nocapture readnone) local_unnamed_addr section "s_kprobe:f
_1
" {
entry:
%"@x_val" = alloca i64, align 8
%"@x_key" = alloca i64, align 8
...
...
@@ -571,7 +611,7 @@ declare i64 @llvm.bpf.pseudo(i64, i64) #0
; Function Attrs: argmemonly nounwind
declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) #1
define i64 @"kprobe:f"(i8* nocapture readnone) local_unnamed_addr section "s_kprobe:f" {
define i64 @"kprobe:f"(i8* nocapture readnone) local_unnamed_addr section "s_kprobe:f
_1
" {
entry:
%"@x_val" = alloca i64, align 8
%"@x_key" = alloca i64, align 8
...
...
@@ -607,7 +647,7 @@ declare i64 @llvm.bpf.pseudo(i64, i64) #0
; Function Attrs: argmemonly nounwind
declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) #1
define i64 @"kprobe:f"(i8*) local_unnamed_addr section "s_kprobe:f" {
define i64 @"kprobe:f"(i8*) local_unnamed_addr section "s_kprobe:f
_1
" {
entry:
%"@x_val" = alloca i64, align 8
%"@x_key" = alloca i64, align 8
...
...
@@ -643,7 +683,7 @@ declare i64 @llvm.bpf.pseudo(i64, i64) #0
; Function Attrs: argmemonly nounwind
declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) #1
define i64 @"kprobe:f"(i8* nocapture readnone) local_unnamed_addr section "s_kprobe:f" {
define i64 @"kprobe:f"(i8* nocapture readnone) local_unnamed_addr section "s_kprobe:f
_1
" {
entry:
%"@x_key" = alloca i64, align 8
%comm = alloca [16 x i8], align 1
...
...
@@ -682,7 +722,7 @@ declare i64 @llvm.bpf.pseudo(i64, i64) #0
; Function Attrs: argmemonly nounwind
declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) #1
define i64 @"kprobe:f"(i8*) local_unnamed_addr section "s_kprobe:f" {
define i64 @"kprobe:f"(i8*) local_unnamed_addr section "s_kprobe:f
_1
" {
entry:
%"@y_val" = alloca i64, align 8
%"@y_key" = alloca i64, align 8
...
...
@@ -743,7 +783,7 @@ declare i64 @llvm.bpf.pseudo(i64, i64) #0
; Function Attrs: argmemonly nounwind
declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) #1
define i64 @"kprobe:f"(i8*) local_unnamed_addr section "s_kprobe:f" {
define i64 @"kprobe:f"(i8*) local_unnamed_addr section "s_kprobe:f
_1
" {
entry:
%"@x_val" = alloca i64, align 8
%"@x_key" = alloca i64, align 8
...
...
@@ -785,7 +825,7 @@ declare i64 @llvm.bpf.pseudo(i64, i64) #0
; Function Attrs: argmemonly nounwind
declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) #1
define i64 @"kprobe:f"(i8*) local_unnamed_addr section "s_kprobe:f" {
define i64 @"kprobe:f"(i8*) local_unnamed_addr section "s_kprobe:f
_1
" {
entry:
%"@x_val" = alloca i64, align 8
%"@x_key" = alloca i64, align 8
...
...
@@ -827,7 +867,7 @@ declare i64 @llvm.bpf.pseudo(i64, i64) #0
; Function Attrs: argmemonly nounwind
declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) #1
define i64 @"kprobe:f"(i8*) local_unnamed_addr section "s_kprobe:f" {
define i64 @"kprobe:f"(i8*) local_unnamed_addr section "s_kprobe:f
_1
" {
entry:
%"@x_val" = alloca i64, align 8
%"@x_key" = alloca i64, align 8
...
...
@@ -869,7 +909,7 @@ declare i64 @llvm.bpf.pseudo(i64, i64) #0
; Function Attrs: argmemonly nounwind
declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) #1
define i64 @"tracepoint:syscalls:sys_enter_nanosleep"(i8* nocapture readnone) local_unnamed_addr section "s_tracepoint:syscalls:sys_enter_nanosleep" {
define i64 @"tracepoint:syscalls:sys_enter_nanosleep"(i8* nocapture readnone) local_unnamed_addr section "s_tracepoint:syscalls:sys_enter_nanosleep
_1
" {
entry:
%"@x_val" = alloca i64, align 8
%"@x_key" = alloca i64, align 8
...
...
@@ -904,7 +944,7 @@ declare i64 @llvm.bpf.pseudo(i64, i64) #0
; Function Attrs: argmemonly nounwind
declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) #1
define i64 @"tracepoint:syscalls:sys_enter_nanoslee*"(i8*) local_unnamed_addr section "s_tracepoint:syscalls:sys_enter_nanoslee*" {
define i64 @"tracepoint:syscalls:sys_enter_nanoslee*"(i8*) local_unnamed_addr section "s_tracepoint:syscalls:sys_enter_nanoslee*
_1
" {
entry:
%"@x_val" = alloca i64, align 8
%"@x_key" = alloca i64, align 8
...
...
@@ -946,7 +986,7 @@ declare i64 @llvm.bpf.pseudo(i64, i64) #0
; Function Attrs: argmemonly nounwind
declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) #1
define i64 @"tracepoint:syscalls:sys_enter_nanosleep"(i8* nocapture readnone) local_unnamed_addr section "s_tracepoint:syscalls:sys_enter_nanosleep" {
define i64 @"tracepoint:syscalls:sys_enter_nanosleep"(i8* nocapture readnone) local_unnamed_addr section "s_tracepoint:syscalls:sys_enter_nanosleep
_1
" {
entry:
%"@x_val" = alloca i64, align 8
%"@x_key" = alloca i64, align 8
...
...
@@ -981,7 +1021,7 @@ declare i64 @llvm.bpf.pseudo(i64, i64) #0
; Function Attrs: argmemonly nounwind
declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) #1
define i64 @"kprobe:f"(i8* nocapture readnone) local_unnamed_addr section "s_kprobe:f" {
define i64 @"kprobe:f"(i8* nocapture readnone) local_unnamed_addr section "s_kprobe:f
_1
" {
entry:
%"@x_val" = alloca i64, align 8
%"@x_key" = alloca [16 x i8], align 8
...
...
@@ -1034,7 +1074,7 @@ declare i64 @llvm.bpf.pseudo(i64, i64) #0
; Function Attrs: argmemonly nounwind
declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) #1
define i64 @"kprobe:f"(i8* nocapture readnone) local_unnamed_addr section "s_kprobe:f" {
define i64 @"kprobe:f"(i8* nocapture readnone) local_unnamed_addr section "s_kprobe:f
_1
" {
entry:
%"@y_val" = alloca i64, align 8
%"@y_key" = alloca i64, align 8
...
...
@@ -1095,7 +1135,7 @@ declare i64 @llvm.bpf.pseudo(i64, i64) #0
; Function Attrs: argmemonly nounwind
declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) #1
define i64 @"kprobe:f"(i8* nocapture readnone) local_unnamed_addr section "s_kprobe:f" {
define i64 @"kprobe:f"(i8* nocapture readnone) local_unnamed_addr section "s_kprobe:f
_1
" {
entry:
%"@x_val" = alloca i64, align 8
%"@x_key" = alloca i64, align 8
...
...
@@ -1166,7 +1206,7 @@ declare i64 @llvm.bpf.pseudo(i64, i64) #0
; Function Attrs: argmemonly nounwind
declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) #1
define i64 @"kprobe:f"(i8* nocapture readnone) local_unnamed_addr section "s_kprobe:f" {
define i64 @"kprobe:f"(i8* nocapture readnone) local_unnamed_addr section "s_kprobe:f
_1
" {
entry:
%"@x_val" = alloca i64, align 8
%"@x_key" = alloca i64, align 8
...
...
@@ -1219,7 +1259,7 @@ declare i64 @llvm.bpf.pseudo(i64, i64) #0
; Function Attrs: argmemonly nounwind
declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) #1
define i64 @"kprobe:f"(i8* nocapture readnone) local_unnamed_addr section "s_kprobe:f" {
define i64 @"kprobe:f"(i8* nocapture readnone) local_unnamed_addr section "s_kprobe:f
_1
" {
entry:
%"@x_val" = alloca i64, align 8
%"@x_key" = alloca i64, align 8
...
...
@@ -1266,7 +1306,7 @@ declare i64 @llvm.bpf.pseudo(i64, i64) #0
; Function Attrs: argmemonly nounwind
declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) #1
define i64 @"kprobe:f"(i8* nocapture readnone) local_unnamed_addr section "s_kprobe:f" {
define i64 @"kprobe:f"(i8* nocapture readnone) local_unnamed_addr section "s_kprobe:f
_1
" {
entry:
%"@x_val" = alloca i64, align 8
%"@x_key" = alloca i64, align 8
...
...
@@ -1322,7 +1362,7 @@ declare i64 @llvm.bpf.pseudo(i64, i64) #0
; Function Attrs: argmemonly nounwind
declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) #1
define i64 @"kprobe:f"(i8* nocapture readnone) local_unnamed_addr section "s_kprobe:f" {
define i64 @"kprobe:f"(i8* nocapture readnone) local_unnamed_addr section "s_kprobe:f
_1
" {
entry:
%"@x_val" = alloca i64, align 8
%"@x_key" = alloca i64, align 8
...
...
@@ -1377,7 +1417,7 @@ declare i64 @llvm.bpf.pseudo(i64, i64) #0
; Function Attrs: argmemonly nounwind
declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) #1
define i64 @"kprobe:f"(i8* nocapture readnone) local_unnamed_addr section "s_kprobe:f" {
define i64 @"kprobe:f"(i8* nocapture readnone) local_unnamed_addr section "s_kprobe:f
_1
" {
entry:
%"@x_val" = alloca i64, align 8
%"@x_key" = alloca i64, align 8
...
...
@@ -1426,7 +1466,7 @@ declare i64 @llvm.bpf.pseudo(i64, i64) #0
; Function Attrs: argmemonly nounwind
declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) #1
define i64 @"kprobe:f"(i8* nocapture readnone) local_unnamed_addr section "s_kprobe:f" {
define i64 @"kprobe:f"(i8* nocapture readnone) local_unnamed_addr section "s_kprobe:f
_1
" {
entry:
%"@x_val" = alloca i64, align 8
%"@x_key2" = alloca i64, align 8
...
...
@@ -1499,7 +1539,7 @@ declare i64 @llvm.bpf.pseudo(i64, i64) #0
; Function Attrs: argmemonly nounwind
declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) #1
define i64 @"kprobe:f"(i8* nocapture readnone) local_unnamed_addr section "s_kprobe:f" {
define i64 @"kprobe:f"(i8* nocapture readnone) local_unnamed_addr section "s_kprobe:f
_1
" {
entry:
%"@x_val" = alloca i64, align 8
%"@x_key2" = alloca i64, align 8
...
...
@@ -1572,7 +1612,7 @@ declare i64 @llvm.bpf.pseudo(i64, i64) #0
; Function Attrs: argmemonly nounwind
declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) #1
define i64 @"kprobe:f"(i8*) local_unnamed_addr section "s_kprobe:f" {
define i64 @"kprobe:f"(i8*) local_unnamed_addr section "s_kprobe:f
_1
" {
entry:
%"@x_key" = alloca i64, align 8
%arg0 = alloca i64, align 8
...
...
@@ -1618,7 +1658,7 @@ declare i64 @llvm.bpf.pseudo(i64, i64) #0
; Function Attrs: argmemonly nounwind
declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) #1
define i64 @"kprobe:f"(i8* nocapture readnone) local_unnamed_addr section "s_kprobe:f" {
define i64 @"kprobe:f"(i8* nocapture readnone) local_unnamed_addr section "s_kprobe:f
_1
" {
entry:
%"@x_key1" = alloca i64, align 8
%"@x_val" = alloca i64, align 8
...
...
@@ -1662,7 +1702,7 @@ declare i64 @llvm.bpf.pseudo(i64, i64) #0
; Function Attrs: argmemonly nounwind
declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) #1
define i64 @"kprobe:f"(i8*) local_unnamed_addr section "s_kprobe:f" {
define i64 @"kprobe:f"(i8*) local_unnamed_addr section "s_kprobe:f
_1
" {
entry:
%Foo.l = alloca i64, align 8
%Foo.c = alloca i8, align 1
...
...
@@ -1712,7 +1752,7 @@ declare i64 @llvm.bpf.pseudo(i64, i64) #0
; Function Attrs: argmemonly nounwind
declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) #1
define i64 @"kprobe:f"(i8*) local_unnamed_addr section "s_kprobe:f" {
define i64 @"kprobe:f"(i8*) local_unnamed_addr section "s_kprobe:f
_1
" {
entry:
%perfdata = alloca [8 x i8], align 8
%1 = getelementptr inbounds [8 x i8], [8 x i8]* %perfdata, i64 0, i64 0
...
...
@@ -1743,7 +1783,7 @@ declare i64 @llvm.bpf.pseudo(i64, i64) #0
; Function Attrs: argmemonly nounwind
declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) #1
define i64 @BEGIN(i8* nocapture readnone) local_unnamed_addr section "s_BEGIN" {
define i64 @BEGIN(i8* nocapture readnone) local_unnamed_addr section "s_BEGIN
_1
" {
entry:
%"@x_val" = alloca i64, align 8
%"@x_key" = alloca i64, align 8
...
...
@@ -1763,7 +1803,7 @@ entry:
; Function Attrs: argmemonly nounwind
declare void @llvm.lifetime.end.p0i8(i64, i8* nocapture) #1
define i64 @"kprobe:f"(i8*) local_unnamed_addr section "s_kprobe:f" {
define i64 @"kprobe:f"(i8*) local_unnamed_addr section "s_kprobe:f
_1
" {
entry:
%perfdata = alloca [27 x i8], align 8
%1 = getelementptr inbounds [27 x i8], [27 x i8]* %perfdata, i64 0, i64 0
...
...
@@ -1802,7 +1842,7 @@ declare i64 @llvm.bpf.pseudo(i64, i64) #0
; Function Attrs: argmemonly nounwind
declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) #1
define i64 @BEGIN(i8* nocapture readnone) local_unnamed_addr section "s_BEGIN" {
define i64 @BEGIN(i8* nocapture readnone) local_unnamed_addr section "s_BEGIN
_1
" {
entry:
%"@x_val" = alloca i64, align 8
%"@x_key" = alloca i64, align 8
...
...
@@ -1822,7 +1862,7 @@ entry:
; Function Attrs: argmemonly nounwind
declare void @llvm.lifetime.end.p0i8(i64, i8* nocapture) #1
define i64 @"kprobe:f"(i8*) local_unnamed_addr section "s_kprobe:f" {
define i64 @"kprobe:f"(i8*) local_unnamed_addr section "s_kprobe:f
_1
" {
entry:
%perfdata = alloca [11 x i8], align 8
%1 = getelementptr inbounds [11 x i8], [11 x i8]* %perfdata, i64 0, i64 0
...
...
@@ -1856,7 +1896,7 @@ declare i64 @llvm.bpf.pseudo(i64, i64) #0
; Function Attrs: argmemonly nounwind
declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) #1
define i64 @BEGIN(i8* nocapture readnone) local_unnamed_addr section "s_BEGIN" {
define i64 @BEGIN(i8* nocapture readnone) local_unnamed_addr section "s_BEGIN
_1
" {
entry:
%"@x_val" = alloca i64, align 8
%"@x_key" = alloca i64, align 8
...
...
@@ -1876,7 +1916,7 @@ entry:
; Function Attrs: argmemonly nounwind
declare void @llvm.lifetime.end.p0i8(i64, i8* nocapture) #1
define i64 @"kprobe:f"(i8*) local_unnamed_addr section "s_kprobe:f" {
define i64 @"kprobe:f"(i8*) local_unnamed_addr section "s_kprobe:f
_1
" {
entry:
%perfdata = alloca [11 x i8], align 8
%1 = getelementptr inbounds [11 x i8], [11 x i8]* %perfdata, i64 0, i64 0
...
...
@@ -1910,7 +1950,7 @@ declare i64 @llvm.bpf.pseudo(i64, i64) #0
; Function Attrs: argmemonly nounwind
declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) #1
define i64 @"kprobe:f"(i8*) local_unnamed_addr section "s_kprobe:f" {
define i64 @"kprobe:f"(i8*) local_unnamed_addr section "s_kprobe:f
_1
" {
entry:
%perfdata = alloca [16 x i8], align 8
%1 = getelementptr inbounds [16 x i8], [16 x i8]* %perfdata, i64 0, i64 0
...
...
@@ -1945,7 +1985,7 @@ declare i64 @llvm.bpf.pseudo(i64, i64) #0
; Function Attrs: argmemonly nounwind
declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) #1
define i64 @"kprobe:f"(i8* nocapture readnone) local_unnamed_addr section "s_kprobe:f" {
define i64 @"kprobe:f"(i8* nocapture readnone) local_unnamed_addr section "s_kprobe:f
_1
" {
entry:
%"@y_val" = alloca i64, align 8
%"@y_key" = alloca i64, align 8
...
...
@@ -2008,7 +2048,7 @@ declare i64 @llvm.bpf.pseudo(i64, i64) #0
; Function Attrs: argmemonly nounwind
declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) #1
define i64 @"kprobe:f"(i8* nocapture readnone) local_unnamed_addr section "s_kprobe:f" {
define i64 @"kprobe:f"(i8* nocapture readnone) local_unnamed_addr section "s_kprobe:f
_1
" {
entry:
%"@y_key" = alloca i64, align 8
%lookup_elem_val = alloca [64 x i8], align 1
...
...
@@ -2087,7 +2127,7 @@ declare i64 @llvm.bpf.pseudo(i64, i64) #0
; Function Attrs: argmemonly nounwind
declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) #1
define i64 @"kprobe:f"(i8* nocapture readnone) local_unnamed_addr section "s_kprobe:f" {
define i64 @"kprobe:f"(i8* nocapture readnone) local_unnamed_addr section "s_kprobe:f
_1
" {
entry:
%"@x_val" = alloca i64, align 8
%"@x_key" = alloca i64, align 8
...
...
@@ -2131,7 +2171,7 @@ declare i64 @llvm.bpf.pseudo(i64, i64) #0
; Function Attrs: argmemonly nounwind
declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) #1
define i64 @"kprobe:f"(i8* nocapture readnone) local_unnamed_addr section "s_kprobe:f" {
define i64 @"kprobe:f"(i8* nocapture readnone) local_unnamed_addr section "s_kprobe:f
_1
" {
entry:
%"@y_key" = alloca i64, align 8
%"@x_key" = alloca i64, align 8
...
...
@@ -2176,7 +2216,7 @@ declare i64 @llvm.bpf.pseudo(i64, i64) #0
; Function Attrs: argmemonly nounwind
declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) #1
define i64 @"kprobe:f"(i8* nocapture readnone) local_unnamed_addr section "s_kprobe:f" {
define i64 @"kprobe:f"(i8* nocapture readnone) local_unnamed_addr section "s_kprobe:f
_1
" {
entry:
%"@x_val" = alloca i64, align 8
%"@x_key" = alloca i64, align 8
...
...
@@ -2217,7 +2257,7 @@ declare i64 @llvm.bpf.pseudo(i64, i64) #0
; Function Attrs: argmemonly nounwind
declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) #1
define i64 @"kprobe:f"(i8* nocapture readnone) local_unnamed_addr section "s_kprobe:f" {
define i64 @"kprobe:f"(i8* nocapture readnone) local_unnamed_addr section "s_kprobe:f
_1
" {
entry:
%"@x_val" = alloca i64, align 8
%"@x_key" = alloca i64, align 8
...
...
@@ -2268,7 +2308,7 @@ declare i64 @llvm.bpf.pseudo(i64, i64) #0
; Function Attrs: argmemonly nounwind
declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) #1
define i64 @"kprobe:f"(i8* nocapture readnone) local_unnamed_addr section "s_kprobe:f" {
define i64 @"kprobe:f"(i8* nocapture readnone) local_unnamed_addr section "s_kprobe:f
_1
" {
entry:
%"@x_val" = alloca i64, align 8
%"@x_key" = alloca i64, align 8
...
...
@@ -2319,7 +2359,7 @@ declare i64 @llvm.bpf.pseudo(i64, i64) #0
; Function Attrs: argmemonly nounwind
declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) #1
define i64 @"kprobe:f"(i8* nocapture readnone) local_unnamed_addr section "s_kprobe:f" {
define i64 @"kprobe:f"(i8* nocapture readnone) local_unnamed_addr section "s_kprobe:f
_1
" {
entry:
%"@x_val" = alloca i64, align 8
%"@x_key" = alloca i64, align 8
...
...
@@ -2354,7 +2394,7 @@ declare i64 @llvm.bpf.pseudo(i64, i64) #0
; Function Attrs: argmemonly nounwind
declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) #1
define i64 @"kprobe:f"(i8* nocapture readnone) local_unnamed_addr section "s_kprobe:f" {
define i64 @"kprobe:f"(i8* nocapture readnone) local_unnamed_addr section "s_kprobe:f
_1
" {
entry:
%"@x_val" = alloca i64, align 8
%"@x_key" = alloca i64, align 8
...
...
@@ -2389,7 +2429,7 @@ declare i64 @llvm.bpf.pseudo(i64, i64) #0
; Function Attrs: argmemonly nounwind
declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) #1
define i64 @"kprobe:f"(i8* nocapture readnone) local_unnamed_addr section "s_kprobe:f" {
define i64 @"kprobe:f"(i8* nocapture readnone) local_unnamed_addr section "s_kprobe:f
_1
" {
entry:
%"@x_val" = alloca i64, align 8
%"@x_key" = alloca i64, align 8
...
...
@@ -2427,7 +2467,7 @@ declare i64 @llvm.bpf.pseudo(i64, i64) #0
; Function Attrs: argmemonly nounwind
declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) #1
define i64 @"kprobe:f"(i8* nocapture readnone) local_unnamed_addr section "s_kprobe:f" {
define i64 @"kprobe:f"(i8* nocapture readnone) local_unnamed_addr section "s_kprobe:f
_1
" {
entry:
%"@x_key" = alloca i64, align 8
%buf = alloca [64 x i8], align 1
...
...
@@ -2485,7 +2525,7 @@ declare i64 @llvm.bpf.pseudo(i64, i64) #0
; Function Attrs: argmemonly nounwind
declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) #1
define i64 @"kprobe:f"(i8* nocapture readnone) local_unnamed_addr section "s_kprobe:f" {
define i64 @"kprobe:f"(i8* nocapture readnone) local_unnamed_addr section "s_kprobe:f
_1
" {
entry:
%"@x_val" = alloca i64, align 8
%"@x_key" = alloca i64, align 8
...
...
@@ -2541,7 +2581,7 @@ declare i64 @llvm.bpf.pseudo(i64, i64) #0
; Function Attrs: argmemonly nounwind
declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) #1
define i64 @"kprobe:f"(i8* nocapture readnone) local_unnamed_addr section "s_kprobe:f" {
define i64 @"kprobe:f"(i8* nocapture readnone) local_unnamed_addr section "s_kprobe:f
_1
" {
entry:
%"@x_val" = alloca i64, align 8
%"@x_key" = alloca i64, align 8
...
...
@@ -2596,7 +2636,7 @@ declare i64 @llvm.bpf.pseudo(i64, i64) #0
; Function Attrs: argmemonly nounwind
declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) #1
define i64 @"kprobe:f"(i8* nocapture readnone) local_unnamed_addr section "s_kprobe:f" {
define i64 @"kprobe:f"(i8* nocapture readnone) local_unnamed_addr section "s_kprobe:f
_1
" {
entry:
%"@x_val" = alloca i64, align 8
%"@x_key" = alloca i64, align 8
...
...
@@ -2652,7 +2692,7 @@ declare i64 @llvm.bpf.pseudo(i64, i64) #0
; Function Attrs: argmemonly nounwind
declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) #1
define i64 @"kprobe:f"(i8* nocapture readnone) local_unnamed_addr section "s_kprobe:f" {
define i64 @"kprobe:f"(i8* nocapture readnone) local_unnamed_addr section "s_kprobe:f
_1
" {
entry:
%"@x_val" = alloca i64, align 8
%"@x_key" = alloca i64, align 8
...
...
@@ -2707,7 +2747,7 @@ declare i64 @llvm.bpf.pseudo(i64, i64) #0
; Function Attrs: argmemonly nounwind
declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) #1
define i64 @"kprobe:f"(i8* nocapture readnone) local_unnamed_addr section "s_kprobe:f" {
define i64 @"kprobe:f"(i8* nocapture readnone) local_unnamed_addr section "s_kprobe:f
_1
" {
entry:
%"@x_val" = alloca i64, align 8
%"@x_key" = alloca i64, align 8
...
...
@@ -2769,7 +2809,7 @@ declare i64 @llvm.bpf.pseudo(i64, i64) #0
; Function Attrs: argmemonly nounwind
declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) #1
define i64 @"kprobe:f"(i8* nocapture readnone) local_unnamed_addr section "s_kprobe:f" {
define i64 @"kprobe:f"(i8* nocapture readnone) local_unnamed_addr section "s_kprobe:f
_1
" {
entry:
%"@mystr_key" = alloca i64, align 8
%Foo.str = alloca i64, align 8
...
...
@@ -2828,7 +2868,7 @@ declare i64 @llvm.bpf.pseudo(i64, i64) #0
; Function Attrs: argmemonly nounwind
declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) #1
define i64 @"kprobe:f"(i8* nocapture readnone) local_unnamed_addr section "s_kprobe:f" {
define i64 @"kprobe:f"(i8* nocapture readnone) local_unnamed_addr section "s_kprobe:f
_1
" {
entry:
%"@mystr_key" = alloca i64, align 8
%Foo.str = alloca [32 x i8], align 1
...
...
@@ -2877,7 +2917,7 @@ declare i64 @llvm.bpf.pseudo(i64, i64) #0
; Function Attrs: argmemonly nounwind
declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) #1
define i64 @"kprobe:f"(i8* nocapture readnone) local_unnamed_addr section "s_kprobe:f" {
define i64 @"kprobe:f"(i8* nocapture readnone) local_unnamed_addr section "s_kprobe:f
_1
" {
entry:
%"@x_val" = alloca i64, align 8
%"@x_key" = alloca i64, align 8
...
...
@@ -2933,7 +2973,7 @@ declare i64 @llvm.bpf.pseudo(i64, i64) #0
; Function Attrs: argmemonly nounwind
declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) #1
define i64 @"kprobe:f"(i8* nocapture readnone) local_unnamed_addr section "s_kprobe:f" {
define i64 @"kprobe:f"(i8* nocapture readnone) local_unnamed_addr section "s_kprobe:f
_1
" {
entry:
%"@x_val" = alloca i64, align 8
%"@x_key" = alloca i64, align 8
...
...
@@ -2995,7 +3035,7 @@ declare i64 @llvm.bpf.pseudo(i64, i64) #0
; Function Attrs: argmemonly nounwind
declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) #1
define i64 @"kprobe:f"(i8* nocapture readnone) local_unnamed_addr section "s_kprobe:f" {
define i64 @"kprobe:f"(i8* nocapture readnone) local_unnamed_addr section "s_kprobe:f
_1
" {
entry:
%"@x_val" = alloca i64, align 8
%"@x_key" = alloca i64, align 8
...
...
@@ -3051,7 +3091,7 @@ declare i64 @llvm.bpf.pseudo(i64, i64) #0
; Function Attrs: argmemonly nounwind
declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) #1
define i64 @"kprobe:f"(i8* nocapture readnone) local_unnamed_addr section "s_kprobe:f" {
define i64 @"kprobe:f"(i8* nocapture readnone) local_unnamed_addr section "s_kprobe:f
_1
" {
entry:
%"@foo_val" = alloca [12 x i8], align 1
%"@foo_key" = alloca i64, align 8
...
...
@@ -3098,7 +3138,7 @@ declare i64 @llvm.bpf.pseudo(i64, i64) #0
; Function Attrs: argmemonly nounwind
declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) #1
define i64 @"kprobe:f"(i8* nocapture readnone) local_unnamed_addr section "s_kprobe:f" {
define i64 @"kprobe:f"(i8* nocapture readnone) local_unnamed_addr section "s_kprobe:f
_1
" {
entry:
%"@x_val" = alloca i64, align 8
%"@x_key" = alloca i64, align 8
...
...
@@ -3202,7 +3242,7 @@ declare i64 @llvm.bpf.pseudo(i64, i64) #0
; Function Attrs: argmemonly nounwind
declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) #1
define i64 @"kprobe:f"(i8* nocapture readnone) local_unnamed_addr section "s_kprobe:f" {
define i64 @"kprobe:f"(i8* nocapture readnone) local_unnamed_addr section "s_kprobe:f
_1
" {
entry:
%"@str_key" = alloca i64, align 8
%lookup_elem_val = alloca [32 x i8], align 1
...
...
tests/semantic_analyser.cpp
View file @
23a53937
...
...
@@ -9,11 +9,6 @@ namespace bpftrace {
namespace
test
{
namespace
semantic_analyser
{
class
MockBPFtrace
:
public
BPFtrace
{
public:
MOCK_METHOD1
(
add_probe
,
int
(
ast
::
Probe
&
p
));
};
using
::
testing
::
_
;
void
test
(
BPFtrace
&
bpftrace
,
Driver
&
driver
,
const
std
::
string
&
input
,
int
expected_result
=
0
)
...
...
@@ -97,14 +92,6 @@ TEST(semantic_analyser, builtin_functions)
test
(
"kprobe:f { fake() }"
,
1
);
}
TEST
(
semantic_analyser
,
probe_count
)
{
MockBPFtrace
bpftrace
;
EXPECT_CALL
(
bpftrace
,
add_probe
(
_
)).
Times
(
2
);
test
(
bpftrace
,
"kprobe:f { 1; } kprobe:d { 1; }"
);
}
TEST
(
semantic_analyser
,
undefined_map
)
{
test
(
"kprobe:f / @mymap == 123 / { @mymap = 0 }"
,
0
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment