Commit 23a53937 authored by Brendan Gregg's avatar Brendan Gregg Committed by GitHub

Merge pull request #100 from iovisor/multiple_kprobes

attach to multiple identical probes
parents f3ab5097 f89e5d25
...@@ -124,6 +124,15 @@ std::string AttachPoint::name(const std::string &attach_point) const ...@@ -124,6 +124,15 @@ std::string AttachPoint::name(const std::string &attach_point) const
return n; 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 Probe::name() const
{ {
std::string n = ""; std::string n = "";
...@@ -141,5 +150,13 @@ std::string Probe::name() const ...@@ -141,5 +150,13 @@ std::string Probe::name() const
return n.substr(0, n.size()-1); return n.substr(0, n.size()-1);
} }
int Probe::index() {
return index_;
}
void Probe::set_index(int index) {
index_ = index;
}
} // namespace ast } // namespace ast
} // namespace bpftrace } // namespace bpftrace
...@@ -2,6 +2,7 @@ ...@@ -2,6 +2,7 @@
#include <string> #include <string>
#include <vector> #include <vector>
#include <map>
#include "types.h" #include "types.h"
...@@ -193,6 +194,11 @@ public: ...@@ -193,6 +194,11 @@ public:
void accept(Visitor &v) override; void accept(Visitor &v) override;
std::string name(const std::string &attach_point) const; 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 *>; using AttachPointList = std::vector<AttachPoint *>;
...@@ -208,6 +214,11 @@ public: ...@@ -208,6 +214,11 @@ public:
void accept(Visitor &v) override; void accept(Visitor &v) override;
std::string name() const; std::string name() const;
bool need_expansion = false; // must build a BPF program per wildcard match 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 *>; using ProbeList = std::vector<Probe *>;
......
...@@ -885,7 +885,8 @@ void CodegenLLVM::visit(Probe &probe) ...@@ -885,7 +885,8 @@ void CodegenLLVM::visit(Probe &probe)
if (probe.need_expansion == false) { if (probe.need_expansion == false) {
// build a single BPF program pre-wildcards // build a single BPF program pre-wildcards
Function *func = Function::Create(func_type, Function::ExternalLinkage, probe.name(), module_.get()); 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); BasicBlock *entry = BasicBlock::Create(module_->getContext(), "entry", func);
b_.SetInsertPoint(entry); b_.SetInsertPoint(entry);
...@@ -930,8 +931,10 @@ void CodegenLLVM::visit(Probe &probe) ...@@ -930,8 +931,10 @@ void CodegenLLVM::visit(Probe &probe)
printf_id_ = starting_printf_id_; printf_id_ = starting_printf_id_;
time_id_ = starting_time_id_; time_id_ = starting_time_id_;
probefull_ = attach_point->name(match); probefull_ = attach_point->name(match);
Function *func = Function::Create(func_type, Function::ExternalLinkage, attach_point->name(match), module_.get()); int index = getNextIndexForProbe(probe.name());
func->setSection("s_" + attach_point->name(match)); 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); BasicBlock *entry = BasicBlock::Create(module_->getContext(), "entry", func);
b_.SetInsertPoint(entry); b_.SetInsertPoint(entry);
...@@ -947,6 +950,7 @@ void CodegenLLVM::visit(Probe &probe) ...@@ -947,6 +950,7 @@ void CodegenLLVM::visit(Probe &probe)
} }
} }
} }
bpftrace_.add_probe(probe);
} }
void CodegenLLVM::visit(Program &program) void CodegenLLVM::visit(Program &program)
...@@ -955,6 +959,18 @@ void CodegenLLVM::visit(Program &program) ...@@ -955,6 +959,18 @@ void CodegenLLVM::visit(Program &program)
probe->accept(*this); 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 *CodegenLLVM::getMapKey(Map &map)
{ {
AllocaInst *key; AllocaInst *key;
......
...@@ -47,6 +47,8 @@ public: ...@@ -47,6 +47,8 @@ public:
void visit(Program &program) override; void visit(Program &program) override;
AllocaInst *getMapKey(Map &map); AllocaInst *getMapKey(Map &map);
AllocaInst *getHistMapKey(Map &map, Value *log2); 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 *createLogicalAnd(Binop &binop);
Value *createLogicalOr(Binop &binop); Value *createLogicalOr(Binop &binop);
...@@ -67,6 +69,7 @@ private: ...@@ -67,6 +69,7 @@ private:
BPFtrace &bpftrace_; BPFtrace &bpftrace_;
std::string probefull_; std::string probefull_;
std::string path_; std::string path_;
std::map<std::string, int> next_probe_index_;
std::map<std::string, Value *> variables_; std::map<std::string, Value *> variables_;
int printf_id_ = 0; int printf_id_ = 0;
......
...@@ -731,9 +731,6 @@ void SemanticAnalyser::visit(Probe &probe) ...@@ -731,9 +731,6 @@ void SemanticAnalyser::visit(Probe &probe)
stmt->accept(*this); stmt->accept(*this);
} }
if (is_final_pass()) {
bpftrace_.add_probe(probe);
}
} }
void SemanticAnalyser::visit(Program &program) void SemanticAnalyser::visit(Program &program)
......
...@@ -156,18 +156,19 @@ std::string AttachedProbe::eventprefix() const ...@@ -156,18 +156,19 @@ std::string AttachedProbe::eventprefix() const
std::string AttachedProbe::eventname() const std::string AttachedProbe::eventname() const
{ {
std::ostringstream offset_str; std::ostringstream offset_str;
std::string index_str = "_" + std::to_string(probe_.index);
switch (probe_.type) switch (probe_.type)
{ {
case ProbeType::kprobe: case ProbeType::kprobe:
case ProbeType::kretprobe: case ProbeType::kretprobe:
return eventprefix() + probe_.attach_point; return eventprefix() + probe_.attach_point + index_str;
case ProbeType::uprobe: case ProbeType::uprobe:
case ProbeType::uretprobe: case ProbeType::uretprobe:
case ProbeType::usdt: case ProbeType::usdt:
offset_str << std::hex << offset(); 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: case ProbeType::tracepoint:
return probe_.attach_point; return probe_.attach_point + index_str;
default: default:
abort(); abort();
} }
......
...@@ -89,6 +89,8 @@ int BPFtrace::add_probe(ast::Probe &p) ...@@ -89,6 +89,8 @@ int BPFtrace::add_probe(ast::Probe &p)
probe.name = attach_point->name(func); probe.name = attach_point->name(func);
probe.freq = attach_point->freq; probe.freq = attach_point->freq;
probe.loc = 0; probe.loc = 0;
probe.index = attach_point->index(func) > 0 ?
attach_point->index(func) : p.index();
probes_.push_back(probe); probes_.push_back(probe);
} }
} }
...@@ -307,9 +309,10 @@ std::unique_ptr<AttachedProbe> BPFtrace::attach_probe(Probe &probe, const BpfOrc ...@@ -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 // 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 // probe), else try to find a the program based on the original probe name
// that includes wildcards. // 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()) 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 (func == bpforc.sections_.end())
{ {
if (probe.name != probe.orig_name) if (probe.name != probe.orig_name)
...@@ -334,9 +337,10 @@ std::unique_ptr<AttachedProbe> BPFtrace::attach_probe(Probe &probe, const BpfOrc ...@@ -334,9 +337,10 @@ std::unique_ptr<AttachedProbe> BPFtrace::attach_probe(Probe &probe, const BpfOrc
int BPFtrace::run(std::unique_ptr<BpfOrc> 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) if (attached_probe == nullptr)
return -1; return -1;
special_attached_probes_.push_back(std::move(attached_probe)); special_attached_probes_.push_back(std::move(attached_probe));
...@@ -348,9 +352,13 @@ int BPFtrace::run(std::unique_ptr<BpfOrc> bpforc) ...@@ -348,9 +352,13 @@ int BPFtrace::run(std::unique_ptr<BpfOrc> bpforc)
BEGIN_trigger(); 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) if (attached_probe == nullptr)
return -1; return -1;
attached_probes_.push_back(std::move(attached_probe)); attached_probes_.push_back(std::move(attached_probe));
......
...@@ -83,6 +83,7 @@ public: ...@@ -83,6 +83,7 @@ public:
// before wildcard expansion // before wildcard expansion
std::string name; // full probe name std::string name; // full probe name
uint64_t loc; // for USDT probes uint64_t loc; // for USDT probes
int index = 0;
int freq; int freq;
}; };
......
...@@ -13,6 +13,11 @@ namespace test { ...@@ -13,6 +13,11 @@ namespace test {
namespace codegen { namespace codegen {
using ::testing::_; using ::testing::_;
class MockBPFtrace : public BPFtrace {
public:
MOCK_METHOD1(add_probe, int(ast::Probe &p));
};
TEST(codegen, populate_sections) TEST(codegen, populate_sections)
{ {
...@@ -28,8 +33,8 @@ TEST(codegen, populate_sections) ...@@ -28,8 +33,8 @@ TEST(codegen, populate_sections)
// Check sections are populated // Check sections are populated
EXPECT_EQ(bpforc->sections_.size(), 2); EXPECT_EQ(bpforc->sections_.size(), 2);
EXPECT_EQ(bpforc->sections_.count("s_kprobe:foo"), 1); EXPECT_EQ(bpforc->sections_.count("s_kprobe:foo_1"), 1);
EXPECT_EQ(bpforc->sections_.count("s_kprobe:bar"), 1); EXPECT_EQ(bpforc->sections_.count("s_kprobe:bar_1"), 1);
} }
TEST(codegen, printf_offsets) TEST(codegen, printf_offsets)
...@@ -94,12 +99,47 @@ void test(const std::string &input, const std::string expected_output) ...@@ -94,12 +99,47 @@ void test(const std::string &input, const std::string expected_output)
EXPECT_EQ(full_expected_output, out.str()); 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(codegen, empty_function)
{ {
test("kprobe:f { 1; }", test("kprobe:f { 1; }",
R"EXPECTED(; Function Attrs: norecurse nounwind readnone 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: entry:
ret i64 0 ret i64 0
} }
...@@ -118,7 +158,7 @@ declare i64 @llvm.bpf.pseudo(i64, i64) #0 ...@@ -118,7 +158,7 @@ declare i64 @llvm.bpf.pseudo(i64, i64) #0
; Function Attrs: argmemonly nounwind ; Function Attrs: argmemonly nounwind
declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) #1 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: entry:
%"@x_val" = alloca i64, align 8 %"@x_val" = alloca i64, align 8
%"@x_key" = alloca i64, align 8 %"@x_key" = alloca i64, align 8
...@@ -153,7 +193,7 @@ declare i64 @llvm.bpf.pseudo(i64, i64) #0 ...@@ -153,7 +193,7 @@ declare i64 @llvm.bpf.pseudo(i64, i64) #0
; Function Attrs: argmemonly nounwind ; Function Attrs: argmemonly nounwind
declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) #1 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: entry:
%"@x_key" = alloca i64, align 8 %"@x_key" = alloca i64, align 8
%str = alloca [64 x i8], align 1 %str = alloca [64 x i8], align 1
...@@ -199,7 +239,7 @@ declare i64 @llvm.bpf.pseudo(i64, i64) #0 ...@@ -199,7 +239,7 @@ declare i64 @llvm.bpf.pseudo(i64, i64) #0
; Function Attrs: argmemonly nounwind ; Function Attrs: argmemonly nounwind
declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) #1 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: entry:
%"@x_val" = alloca i64, align 8 %"@x_val" = alloca i64, align 8
%"@x_key" = alloca [24 x i8], align 8 %"@x_key" = alloca [24 x i8], align 8
...@@ -237,7 +277,7 @@ declare i64 @llvm.bpf.pseudo(i64, i64) #0 ...@@ -237,7 +277,7 @@ declare i64 @llvm.bpf.pseudo(i64, i64) #0
; Function Attrs: argmemonly nounwind ; Function Attrs: argmemonly nounwind
declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) #1 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: entry:
%"@x_val" = alloca i64, align 8 %"@x_val" = alloca i64, align 8
%"@x_key" = alloca [128 x i8], align 1 %"@x_key" = alloca [128 x i8], align 1
...@@ -281,7 +321,7 @@ declare i64 @llvm.bpf.pseudo(i64, i64) #0 ...@@ -281,7 +321,7 @@ declare i64 @llvm.bpf.pseudo(i64, i64) #0
; Function Attrs: argmemonly nounwind ; Function Attrs: argmemonly nounwind
declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) #1 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: entry:
%"@x_val" = alloca i64, align 8 %"@x_val" = alloca i64, align 8
%"@x_key" = alloca i64, align 8 %"@x_key" = alloca i64, align 8
...@@ -317,7 +357,7 @@ declare i64 @llvm.bpf.pseudo(i64, i64) #0 ...@@ -317,7 +357,7 @@ declare i64 @llvm.bpf.pseudo(i64, i64) #0
; Function Attrs: argmemonly nounwind ; Function Attrs: argmemonly nounwind
declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) #1 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: entry:
%"@x_val" = alloca i64, align 8 %"@x_val" = alloca i64, align 8
%"@x_key" = alloca i64, align 8 %"@x_key" = alloca i64, align 8
...@@ -357,7 +397,7 @@ declare i64 @llvm.bpf.pseudo(i64, i64) #0 ...@@ -357,7 +397,7 @@ declare i64 @llvm.bpf.pseudo(i64, i64) #0
; Function Attrs: argmemonly nounwind ; Function Attrs: argmemonly nounwind
declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) #1 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: entry:
%"@x_val" = alloca i64, align 8 %"@x_val" = alloca i64, align 8
%"@x_key" = alloca i64, align 8 %"@x_key" = alloca i64, align 8
...@@ -397,7 +437,7 @@ declare i64 @llvm.bpf.pseudo(i64, i64) #0 ...@@ -397,7 +437,7 @@ declare i64 @llvm.bpf.pseudo(i64, i64) #0
; Function Attrs: argmemonly nounwind ; Function Attrs: argmemonly nounwind
declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) #1 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: entry:
%"@y_val" = alloca i64, align 8 %"@y_val" = alloca i64, align 8
%"@y_key" = alloca i64, align 8 %"@y_key" = alloca i64, align 8
...@@ -448,7 +488,7 @@ declare i64 @llvm.bpf.pseudo(i64, i64) #0 ...@@ -448,7 +488,7 @@ declare i64 @llvm.bpf.pseudo(i64, i64) #0
; Function Attrs: argmemonly nounwind ; Function Attrs: argmemonly nounwind
declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) #1 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: entry:
%"@y_val" = alloca i64, align 8 %"@y_val" = alloca i64, align 8
%"@y_key" = alloca i64, align 8 %"@y_key" = alloca i64, align 8
...@@ -499,7 +539,7 @@ declare i64 @llvm.bpf.pseudo(i64, i64) #0 ...@@ -499,7 +539,7 @@ declare i64 @llvm.bpf.pseudo(i64, i64) #0
; Function Attrs: argmemonly nounwind ; Function Attrs: argmemonly nounwind
declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) #1 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: entry:
%"@x_val" = alloca i64, align 8 %"@x_val" = alloca i64, align 8
%"@x_key" = alloca i64, align 8 %"@x_key" = alloca i64, align 8
...@@ -535,7 +575,7 @@ declare i64 @llvm.bpf.pseudo(i64, i64) #0 ...@@ -535,7 +575,7 @@ declare i64 @llvm.bpf.pseudo(i64, i64) #0
; Function Attrs: argmemonly nounwind ; Function Attrs: argmemonly nounwind
declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) #1 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: entry:
%"@x_val" = alloca i64, align 8 %"@x_val" = alloca i64, align 8
%"@x_key" = alloca i64, align 8 %"@x_key" = alloca i64, align 8
...@@ -571,7 +611,7 @@ declare i64 @llvm.bpf.pseudo(i64, i64) #0 ...@@ -571,7 +611,7 @@ declare i64 @llvm.bpf.pseudo(i64, i64) #0
; Function Attrs: argmemonly nounwind ; Function Attrs: argmemonly nounwind
declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) #1 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: entry:
%"@x_val" = alloca i64, align 8 %"@x_val" = alloca i64, align 8
%"@x_key" = alloca i64, align 8 %"@x_key" = alloca i64, align 8
...@@ -607,7 +647,7 @@ declare i64 @llvm.bpf.pseudo(i64, i64) #0 ...@@ -607,7 +647,7 @@ declare i64 @llvm.bpf.pseudo(i64, i64) #0
; Function Attrs: argmemonly nounwind ; Function Attrs: argmemonly nounwind
declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) #1 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: entry:
%"@x_val" = alloca i64, align 8 %"@x_val" = alloca i64, align 8
%"@x_key" = alloca i64, align 8 %"@x_key" = alloca i64, align 8
...@@ -643,7 +683,7 @@ declare i64 @llvm.bpf.pseudo(i64, i64) #0 ...@@ -643,7 +683,7 @@ declare i64 @llvm.bpf.pseudo(i64, i64) #0
; Function Attrs: argmemonly nounwind ; Function Attrs: argmemonly nounwind
declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) #1 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: entry:
%"@x_key" = alloca i64, align 8 %"@x_key" = alloca i64, align 8
%comm = alloca [16 x i8], align 1 %comm = alloca [16 x i8], align 1
...@@ -682,7 +722,7 @@ declare i64 @llvm.bpf.pseudo(i64, i64) #0 ...@@ -682,7 +722,7 @@ declare i64 @llvm.bpf.pseudo(i64, i64) #0
; Function Attrs: argmemonly nounwind ; Function Attrs: argmemonly nounwind
declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) #1 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: entry:
%"@y_val" = alloca i64, align 8 %"@y_val" = alloca i64, align 8
%"@y_key" = alloca i64, align 8 %"@y_key" = alloca i64, align 8
...@@ -743,7 +783,7 @@ declare i64 @llvm.bpf.pseudo(i64, i64) #0 ...@@ -743,7 +783,7 @@ declare i64 @llvm.bpf.pseudo(i64, i64) #0
; Function Attrs: argmemonly nounwind ; Function Attrs: argmemonly nounwind
declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) #1 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: entry:
%"@x_val" = alloca i64, align 8 %"@x_val" = alloca i64, align 8
%"@x_key" = alloca i64, align 8 %"@x_key" = alloca i64, align 8
...@@ -785,7 +825,7 @@ declare i64 @llvm.bpf.pseudo(i64, i64) #0 ...@@ -785,7 +825,7 @@ declare i64 @llvm.bpf.pseudo(i64, i64) #0
; Function Attrs: argmemonly nounwind ; Function Attrs: argmemonly nounwind
declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) #1 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: entry:
%"@x_val" = alloca i64, align 8 %"@x_val" = alloca i64, align 8
%"@x_key" = alloca i64, align 8 %"@x_key" = alloca i64, align 8
...@@ -827,7 +867,7 @@ declare i64 @llvm.bpf.pseudo(i64, i64) #0 ...@@ -827,7 +867,7 @@ declare i64 @llvm.bpf.pseudo(i64, i64) #0
; Function Attrs: argmemonly nounwind ; Function Attrs: argmemonly nounwind
declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) #1 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: entry:
%"@x_val" = alloca i64, align 8 %"@x_val" = alloca i64, align 8
%"@x_key" = alloca i64, align 8 %"@x_key" = alloca i64, align 8
...@@ -869,7 +909,7 @@ declare i64 @llvm.bpf.pseudo(i64, i64) #0 ...@@ -869,7 +909,7 @@ declare i64 @llvm.bpf.pseudo(i64, i64) #0
; Function Attrs: argmemonly nounwind ; Function Attrs: argmemonly nounwind
declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) #1 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: entry:
%"@x_val" = alloca i64, align 8 %"@x_val" = alloca i64, align 8
%"@x_key" = alloca i64, align 8 %"@x_key" = alloca i64, align 8
...@@ -904,7 +944,7 @@ declare i64 @llvm.bpf.pseudo(i64, i64) #0 ...@@ -904,7 +944,7 @@ declare i64 @llvm.bpf.pseudo(i64, i64) #0
; Function Attrs: argmemonly nounwind ; Function Attrs: argmemonly nounwind
declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) #1 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: entry:
%"@x_val" = alloca i64, align 8 %"@x_val" = alloca i64, align 8
%"@x_key" = alloca i64, align 8 %"@x_key" = alloca i64, align 8
...@@ -946,7 +986,7 @@ declare i64 @llvm.bpf.pseudo(i64, i64) #0 ...@@ -946,7 +986,7 @@ declare i64 @llvm.bpf.pseudo(i64, i64) #0
; Function Attrs: argmemonly nounwind ; Function Attrs: argmemonly nounwind
declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) #1 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: entry:
%"@x_val" = alloca i64, align 8 %"@x_val" = alloca i64, align 8
%"@x_key" = alloca i64, align 8 %"@x_key" = alloca i64, align 8
...@@ -981,7 +1021,7 @@ declare i64 @llvm.bpf.pseudo(i64, i64) #0 ...@@ -981,7 +1021,7 @@ declare i64 @llvm.bpf.pseudo(i64, i64) #0
; Function Attrs: argmemonly nounwind ; Function Attrs: argmemonly nounwind
declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) #1 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: entry:
%"@x_val" = alloca i64, align 8 %"@x_val" = alloca i64, align 8
%"@x_key" = alloca [16 x i8], align 8 %"@x_key" = alloca [16 x i8], align 8
...@@ -1034,7 +1074,7 @@ declare i64 @llvm.bpf.pseudo(i64, i64) #0 ...@@ -1034,7 +1074,7 @@ declare i64 @llvm.bpf.pseudo(i64, i64) #0
; Function Attrs: argmemonly nounwind ; Function Attrs: argmemonly nounwind
declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) #1 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: entry:
%"@y_val" = alloca i64, align 8 %"@y_val" = alloca i64, align 8
%"@y_key" = alloca i64, align 8 %"@y_key" = alloca i64, align 8
...@@ -1095,7 +1135,7 @@ declare i64 @llvm.bpf.pseudo(i64, i64) #0 ...@@ -1095,7 +1135,7 @@ declare i64 @llvm.bpf.pseudo(i64, i64) #0
; Function Attrs: argmemonly nounwind ; Function Attrs: argmemonly nounwind
declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) #1 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: entry:
%"@x_val" = alloca i64, align 8 %"@x_val" = alloca i64, align 8
%"@x_key" = alloca i64, align 8 %"@x_key" = alloca i64, align 8
...@@ -1166,7 +1206,7 @@ declare i64 @llvm.bpf.pseudo(i64, i64) #0 ...@@ -1166,7 +1206,7 @@ declare i64 @llvm.bpf.pseudo(i64, i64) #0
; Function Attrs: argmemonly nounwind ; Function Attrs: argmemonly nounwind
declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) #1 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: entry:
%"@x_val" = alloca i64, align 8 %"@x_val" = alloca i64, align 8
%"@x_key" = alloca i64, align 8 %"@x_key" = alloca i64, align 8
...@@ -1219,7 +1259,7 @@ declare i64 @llvm.bpf.pseudo(i64, i64) #0 ...@@ -1219,7 +1259,7 @@ declare i64 @llvm.bpf.pseudo(i64, i64) #0
; Function Attrs: argmemonly nounwind ; Function Attrs: argmemonly nounwind
declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) #1 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: entry:
%"@x_val" = alloca i64, align 8 %"@x_val" = alloca i64, align 8
%"@x_key" = alloca i64, align 8 %"@x_key" = alloca i64, align 8
...@@ -1266,7 +1306,7 @@ declare i64 @llvm.bpf.pseudo(i64, i64) #0 ...@@ -1266,7 +1306,7 @@ declare i64 @llvm.bpf.pseudo(i64, i64) #0
; Function Attrs: argmemonly nounwind ; Function Attrs: argmemonly nounwind
declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) #1 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: entry:
%"@x_val" = alloca i64, align 8 %"@x_val" = alloca i64, align 8
%"@x_key" = alloca i64, align 8 %"@x_key" = alloca i64, align 8
...@@ -1322,7 +1362,7 @@ declare i64 @llvm.bpf.pseudo(i64, i64) #0 ...@@ -1322,7 +1362,7 @@ declare i64 @llvm.bpf.pseudo(i64, i64) #0
; Function Attrs: argmemonly nounwind ; Function Attrs: argmemonly nounwind
declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) #1 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: entry:
%"@x_val" = alloca i64, align 8 %"@x_val" = alloca i64, align 8
%"@x_key" = alloca i64, align 8 %"@x_key" = alloca i64, align 8
...@@ -1377,7 +1417,7 @@ declare i64 @llvm.bpf.pseudo(i64, i64) #0 ...@@ -1377,7 +1417,7 @@ declare i64 @llvm.bpf.pseudo(i64, i64) #0
; Function Attrs: argmemonly nounwind ; Function Attrs: argmemonly nounwind
declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) #1 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: entry:
%"@x_val" = alloca i64, align 8 %"@x_val" = alloca i64, align 8
%"@x_key" = alloca i64, align 8 %"@x_key" = alloca i64, align 8
...@@ -1426,7 +1466,7 @@ declare i64 @llvm.bpf.pseudo(i64, i64) #0 ...@@ -1426,7 +1466,7 @@ declare i64 @llvm.bpf.pseudo(i64, i64) #0
; Function Attrs: argmemonly nounwind ; Function Attrs: argmemonly nounwind
declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) #1 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: entry:
%"@x_val" = alloca i64, align 8 %"@x_val" = alloca i64, align 8
%"@x_key2" = alloca i64, align 8 %"@x_key2" = alloca i64, align 8
...@@ -1499,7 +1539,7 @@ declare i64 @llvm.bpf.pseudo(i64, i64) #0 ...@@ -1499,7 +1539,7 @@ declare i64 @llvm.bpf.pseudo(i64, i64) #0
; Function Attrs: argmemonly nounwind ; Function Attrs: argmemonly nounwind
declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) #1 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: entry:
%"@x_val" = alloca i64, align 8 %"@x_val" = alloca i64, align 8
%"@x_key2" = alloca i64, align 8 %"@x_key2" = alloca i64, align 8
...@@ -1572,7 +1612,7 @@ declare i64 @llvm.bpf.pseudo(i64, i64) #0 ...@@ -1572,7 +1612,7 @@ declare i64 @llvm.bpf.pseudo(i64, i64) #0
; Function Attrs: argmemonly nounwind ; Function Attrs: argmemonly nounwind
declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) #1 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: entry:
%"@x_key" = alloca i64, align 8 %"@x_key" = alloca i64, align 8
%arg0 = alloca i64, align 8 %arg0 = alloca i64, align 8
...@@ -1618,7 +1658,7 @@ declare i64 @llvm.bpf.pseudo(i64, i64) #0 ...@@ -1618,7 +1658,7 @@ declare i64 @llvm.bpf.pseudo(i64, i64) #0
; Function Attrs: argmemonly nounwind ; Function Attrs: argmemonly nounwind
declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) #1 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: entry:
%"@x_key1" = alloca i64, align 8 %"@x_key1" = alloca i64, align 8
%"@x_val" = alloca i64, align 8 %"@x_val" = alloca i64, align 8
...@@ -1662,7 +1702,7 @@ declare i64 @llvm.bpf.pseudo(i64, i64) #0 ...@@ -1662,7 +1702,7 @@ declare i64 @llvm.bpf.pseudo(i64, i64) #0
; Function Attrs: argmemonly nounwind ; Function Attrs: argmemonly nounwind
declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) #1 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: entry:
%Foo.l = alloca i64, align 8 %Foo.l = alloca i64, align 8
%Foo.c = alloca i8, align 1 %Foo.c = alloca i8, align 1
...@@ -1712,7 +1752,7 @@ declare i64 @llvm.bpf.pseudo(i64, i64) #0 ...@@ -1712,7 +1752,7 @@ declare i64 @llvm.bpf.pseudo(i64, i64) #0
; Function Attrs: argmemonly nounwind ; Function Attrs: argmemonly nounwind
declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) #1 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: entry:
%perfdata = alloca [8 x i8], align 8 %perfdata = alloca [8 x i8], align 8
%1 = getelementptr inbounds [8 x i8], [8 x i8]* %perfdata, i64 0, i64 0 %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 ...@@ -1743,7 +1783,7 @@ declare i64 @llvm.bpf.pseudo(i64, i64) #0
; Function Attrs: argmemonly nounwind ; Function Attrs: argmemonly nounwind
declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) #1 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: entry:
%"@x_val" = alloca i64, align 8 %"@x_val" = alloca i64, align 8
%"@x_key" = alloca i64, align 8 %"@x_key" = alloca i64, align 8
...@@ -1763,7 +1803,7 @@ entry: ...@@ -1763,7 +1803,7 @@ entry:
; Function Attrs: argmemonly nounwind ; Function Attrs: argmemonly nounwind
declare void @llvm.lifetime.end.p0i8(i64, i8* nocapture) #1 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: entry:
%perfdata = alloca [27 x i8], align 8 %perfdata = alloca [27 x i8], align 8
%1 = getelementptr inbounds [27 x i8], [27 x i8]* %perfdata, i64 0, i64 0 %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 ...@@ -1802,7 +1842,7 @@ declare i64 @llvm.bpf.pseudo(i64, i64) #0
; Function Attrs: argmemonly nounwind ; Function Attrs: argmemonly nounwind
declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) #1 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: entry:
%"@x_val" = alloca i64, align 8 %"@x_val" = alloca i64, align 8
%"@x_key" = alloca i64, align 8 %"@x_key" = alloca i64, align 8
...@@ -1822,7 +1862,7 @@ entry: ...@@ -1822,7 +1862,7 @@ entry:
; Function Attrs: argmemonly nounwind ; Function Attrs: argmemonly nounwind
declare void @llvm.lifetime.end.p0i8(i64, i8* nocapture) #1 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: entry:
%perfdata = alloca [11 x i8], align 8 %perfdata = alloca [11 x i8], align 8
%1 = getelementptr inbounds [11 x i8], [11 x i8]* %perfdata, i64 0, i64 0 %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 ...@@ -1856,7 +1896,7 @@ declare i64 @llvm.bpf.pseudo(i64, i64) #0
; Function Attrs: argmemonly nounwind ; Function Attrs: argmemonly nounwind
declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) #1 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: entry:
%"@x_val" = alloca i64, align 8 %"@x_val" = alloca i64, align 8
%"@x_key" = alloca i64, align 8 %"@x_key" = alloca i64, align 8
...@@ -1876,7 +1916,7 @@ entry: ...@@ -1876,7 +1916,7 @@ entry:
; Function Attrs: argmemonly nounwind ; Function Attrs: argmemonly nounwind
declare void @llvm.lifetime.end.p0i8(i64, i8* nocapture) #1 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: entry:
%perfdata = alloca [11 x i8], align 8 %perfdata = alloca [11 x i8], align 8
%1 = getelementptr inbounds [11 x i8], [11 x i8]* %perfdata, i64 0, i64 0 %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 ...@@ -1910,7 +1950,7 @@ declare i64 @llvm.bpf.pseudo(i64, i64) #0
; Function Attrs: argmemonly nounwind ; Function Attrs: argmemonly nounwind
declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) #1 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: entry:
%perfdata = alloca [16 x i8], align 8 %perfdata = alloca [16 x i8], align 8
%1 = getelementptr inbounds [16 x i8], [16 x i8]* %perfdata, i64 0, i64 0 %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 ...@@ -1945,7 +1985,7 @@ declare i64 @llvm.bpf.pseudo(i64, i64) #0
; Function Attrs: argmemonly nounwind ; Function Attrs: argmemonly nounwind
declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) #1 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: entry:
%"@y_val" = alloca i64, align 8 %"@y_val" = alloca i64, align 8
%"@y_key" = alloca i64, align 8 %"@y_key" = alloca i64, align 8
...@@ -2008,7 +2048,7 @@ declare i64 @llvm.bpf.pseudo(i64, i64) #0 ...@@ -2008,7 +2048,7 @@ declare i64 @llvm.bpf.pseudo(i64, i64) #0
; Function Attrs: argmemonly nounwind ; Function Attrs: argmemonly nounwind
declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) #1 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: entry:
%"@y_key" = alloca i64, align 8 %"@y_key" = alloca i64, align 8
%lookup_elem_val = alloca [64 x i8], align 1 %lookup_elem_val = alloca [64 x i8], align 1
...@@ -2087,7 +2127,7 @@ declare i64 @llvm.bpf.pseudo(i64, i64) #0 ...@@ -2087,7 +2127,7 @@ declare i64 @llvm.bpf.pseudo(i64, i64) #0
; Function Attrs: argmemonly nounwind ; Function Attrs: argmemonly nounwind
declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) #1 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: entry:
%"@x_val" = alloca i64, align 8 %"@x_val" = alloca i64, align 8
%"@x_key" = alloca i64, align 8 %"@x_key" = alloca i64, align 8
...@@ -2131,7 +2171,7 @@ declare i64 @llvm.bpf.pseudo(i64, i64) #0 ...@@ -2131,7 +2171,7 @@ declare i64 @llvm.bpf.pseudo(i64, i64) #0
; Function Attrs: argmemonly nounwind ; Function Attrs: argmemonly nounwind
declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) #1 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: entry:
%"@y_key" = alloca i64, align 8 %"@y_key" = alloca i64, align 8
%"@x_key" = alloca i64, align 8 %"@x_key" = alloca i64, align 8
...@@ -2176,7 +2216,7 @@ declare i64 @llvm.bpf.pseudo(i64, i64) #0 ...@@ -2176,7 +2216,7 @@ declare i64 @llvm.bpf.pseudo(i64, i64) #0
; Function Attrs: argmemonly nounwind ; Function Attrs: argmemonly nounwind
declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) #1 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: entry:
%"@x_val" = alloca i64, align 8 %"@x_val" = alloca i64, align 8
%"@x_key" = alloca i64, align 8 %"@x_key" = alloca i64, align 8
...@@ -2217,7 +2257,7 @@ declare i64 @llvm.bpf.pseudo(i64, i64) #0 ...@@ -2217,7 +2257,7 @@ declare i64 @llvm.bpf.pseudo(i64, i64) #0
; Function Attrs: argmemonly nounwind ; Function Attrs: argmemonly nounwind
declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) #1 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: entry:
%"@x_val" = alloca i64, align 8 %"@x_val" = alloca i64, align 8
%"@x_key" = alloca i64, align 8 %"@x_key" = alloca i64, align 8
...@@ -2268,7 +2308,7 @@ declare i64 @llvm.bpf.pseudo(i64, i64) #0 ...@@ -2268,7 +2308,7 @@ declare i64 @llvm.bpf.pseudo(i64, i64) #0
; Function Attrs: argmemonly nounwind ; Function Attrs: argmemonly nounwind
declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) #1 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: entry:
%"@x_val" = alloca i64, align 8 %"@x_val" = alloca i64, align 8
%"@x_key" = alloca i64, align 8 %"@x_key" = alloca i64, align 8
...@@ -2319,7 +2359,7 @@ declare i64 @llvm.bpf.pseudo(i64, i64) #0 ...@@ -2319,7 +2359,7 @@ declare i64 @llvm.bpf.pseudo(i64, i64) #0
; Function Attrs: argmemonly nounwind ; Function Attrs: argmemonly nounwind
declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) #1 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: entry:
%"@x_val" = alloca i64, align 8 %"@x_val" = alloca i64, align 8
%"@x_key" = alloca i64, align 8 %"@x_key" = alloca i64, align 8
...@@ -2354,7 +2394,7 @@ declare i64 @llvm.bpf.pseudo(i64, i64) #0 ...@@ -2354,7 +2394,7 @@ declare i64 @llvm.bpf.pseudo(i64, i64) #0
; Function Attrs: argmemonly nounwind ; Function Attrs: argmemonly nounwind
declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) #1 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: entry:
%"@x_val" = alloca i64, align 8 %"@x_val" = alloca i64, align 8
%"@x_key" = alloca i64, align 8 %"@x_key" = alloca i64, align 8
...@@ -2389,7 +2429,7 @@ declare i64 @llvm.bpf.pseudo(i64, i64) #0 ...@@ -2389,7 +2429,7 @@ declare i64 @llvm.bpf.pseudo(i64, i64) #0
; Function Attrs: argmemonly nounwind ; Function Attrs: argmemonly nounwind
declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) #1 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: entry:
%"@x_val" = alloca i64, align 8 %"@x_val" = alloca i64, align 8
%"@x_key" = alloca i64, align 8 %"@x_key" = alloca i64, align 8
...@@ -2427,7 +2467,7 @@ declare i64 @llvm.bpf.pseudo(i64, i64) #0 ...@@ -2427,7 +2467,7 @@ declare i64 @llvm.bpf.pseudo(i64, i64) #0
; Function Attrs: argmemonly nounwind ; Function Attrs: argmemonly nounwind
declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) #1 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: entry:
%"@x_key" = alloca i64, align 8 %"@x_key" = alloca i64, align 8
%buf = alloca [64 x i8], align 1 %buf = alloca [64 x i8], align 1
...@@ -2485,7 +2525,7 @@ declare i64 @llvm.bpf.pseudo(i64, i64) #0 ...@@ -2485,7 +2525,7 @@ declare i64 @llvm.bpf.pseudo(i64, i64) #0
; Function Attrs: argmemonly nounwind ; Function Attrs: argmemonly nounwind
declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) #1 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: entry:
%"@x_val" = alloca i64, align 8 %"@x_val" = alloca i64, align 8
%"@x_key" = alloca i64, align 8 %"@x_key" = alloca i64, align 8
...@@ -2541,7 +2581,7 @@ declare i64 @llvm.bpf.pseudo(i64, i64) #0 ...@@ -2541,7 +2581,7 @@ declare i64 @llvm.bpf.pseudo(i64, i64) #0
; Function Attrs: argmemonly nounwind ; Function Attrs: argmemonly nounwind
declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) #1 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: entry:
%"@x_val" = alloca i64, align 8 %"@x_val" = alloca i64, align 8
%"@x_key" = alloca i64, align 8 %"@x_key" = alloca i64, align 8
...@@ -2596,7 +2636,7 @@ declare i64 @llvm.bpf.pseudo(i64, i64) #0 ...@@ -2596,7 +2636,7 @@ declare i64 @llvm.bpf.pseudo(i64, i64) #0
; Function Attrs: argmemonly nounwind ; Function Attrs: argmemonly nounwind
declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) #1 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: entry:
%"@x_val" = alloca i64, align 8 %"@x_val" = alloca i64, align 8
%"@x_key" = alloca i64, align 8 %"@x_key" = alloca i64, align 8
...@@ -2652,7 +2692,7 @@ declare i64 @llvm.bpf.pseudo(i64, i64) #0 ...@@ -2652,7 +2692,7 @@ declare i64 @llvm.bpf.pseudo(i64, i64) #0
; Function Attrs: argmemonly nounwind ; Function Attrs: argmemonly nounwind
declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) #1 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: entry:
%"@x_val" = alloca i64, align 8 %"@x_val" = alloca i64, align 8
%"@x_key" = alloca i64, align 8 %"@x_key" = alloca i64, align 8
...@@ -2707,7 +2747,7 @@ declare i64 @llvm.bpf.pseudo(i64, i64) #0 ...@@ -2707,7 +2747,7 @@ declare i64 @llvm.bpf.pseudo(i64, i64) #0
; Function Attrs: argmemonly nounwind ; Function Attrs: argmemonly nounwind
declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) #1 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: entry:
%"@x_val" = alloca i64, align 8 %"@x_val" = alloca i64, align 8
%"@x_key" = alloca i64, align 8 %"@x_key" = alloca i64, align 8
...@@ -2769,7 +2809,7 @@ declare i64 @llvm.bpf.pseudo(i64, i64) #0 ...@@ -2769,7 +2809,7 @@ declare i64 @llvm.bpf.pseudo(i64, i64) #0
; Function Attrs: argmemonly nounwind ; Function Attrs: argmemonly nounwind
declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) #1 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: entry:
%"@mystr_key" = alloca i64, align 8 %"@mystr_key" = alloca i64, align 8
%Foo.str = alloca i64, align 8 %Foo.str = alloca i64, align 8
...@@ -2828,7 +2868,7 @@ declare i64 @llvm.bpf.pseudo(i64, i64) #0 ...@@ -2828,7 +2868,7 @@ declare i64 @llvm.bpf.pseudo(i64, i64) #0
; Function Attrs: argmemonly nounwind ; Function Attrs: argmemonly nounwind
declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) #1 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: entry:
%"@mystr_key" = alloca i64, align 8 %"@mystr_key" = alloca i64, align 8
%Foo.str = alloca [32 x i8], align 1 %Foo.str = alloca [32 x i8], align 1
...@@ -2877,7 +2917,7 @@ declare i64 @llvm.bpf.pseudo(i64, i64) #0 ...@@ -2877,7 +2917,7 @@ declare i64 @llvm.bpf.pseudo(i64, i64) #0
; Function Attrs: argmemonly nounwind ; Function Attrs: argmemonly nounwind
declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) #1 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: entry:
%"@x_val" = alloca i64, align 8 %"@x_val" = alloca i64, align 8
%"@x_key" = alloca i64, align 8 %"@x_key" = alloca i64, align 8
...@@ -2933,7 +2973,7 @@ declare i64 @llvm.bpf.pseudo(i64, i64) #0 ...@@ -2933,7 +2973,7 @@ declare i64 @llvm.bpf.pseudo(i64, i64) #0
; Function Attrs: argmemonly nounwind ; Function Attrs: argmemonly nounwind
declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) #1 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: entry:
%"@x_val" = alloca i64, align 8 %"@x_val" = alloca i64, align 8
%"@x_key" = alloca i64, align 8 %"@x_key" = alloca i64, align 8
...@@ -2995,7 +3035,7 @@ declare i64 @llvm.bpf.pseudo(i64, i64) #0 ...@@ -2995,7 +3035,7 @@ declare i64 @llvm.bpf.pseudo(i64, i64) #0
; Function Attrs: argmemonly nounwind ; Function Attrs: argmemonly nounwind
declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) #1 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: entry:
%"@x_val" = alloca i64, align 8 %"@x_val" = alloca i64, align 8
%"@x_key" = alloca i64, align 8 %"@x_key" = alloca i64, align 8
...@@ -3051,7 +3091,7 @@ declare i64 @llvm.bpf.pseudo(i64, i64) #0 ...@@ -3051,7 +3091,7 @@ declare i64 @llvm.bpf.pseudo(i64, i64) #0
; Function Attrs: argmemonly nounwind ; Function Attrs: argmemonly nounwind
declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) #1 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: entry:
%"@foo_val" = alloca [12 x i8], align 1 %"@foo_val" = alloca [12 x i8], align 1
%"@foo_key" = alloca i64, align 8 %"@foo_key" = alloca i64, align 8
...@@ -3098,7 +3138,7 @@ declare i64 @llvm.bpf.pseudo(i64, i64) #0 ...@@ -3098,7 +3138,7 @@ declare i64 @llvm.bpf.pseudo(i64, i64) #0
; Function Attrs: argmemonly nounwind ; Function Attrs: argmemonly nounwind
declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) #1 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: entry:
%"@x_val" = alloca i64, align 8 %"@x_val" = alloca i64, align 8
%"@x_key" = alloca i64, align 8 %"@x_key" = alloca i64, align 8
...@@ -3202,7 +3242,7 @@ declare i64 @llvm.bpf.pseudo(i64, i64) #0 ...@@ -3202,7 +3242,7 @@ declare i64 @llvm.bpf.pseudo(i64, i64) #0
; Function Attrs: argmemonly nounwind ; Function Attrs: argmemonly nounwind
declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) #1 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: entry:
%"@str_key" = alloca i64, align 8 %"@str_key" = alloca i64, align 8
%lookup_elem_val = alloca [32 x i8], align 1 %lookup_elem_val = alloca [32 x i8], align 1
......
...@@ -9,11 +9,6 @@ namespace bpftrace { ...@@ -9,11 +9,6 @@ namespace bpftrace {
namespace test { namespace test {
namespace semantic_analyser { namespace semantic_analyser {
class MockBPFtrace : public BPFtrace {
public:
MOCK_METHOD1(add_probe, int(ast::Probe &p));
};
using ::testing::_; using ::testing::_;
void test(BPFtrace &bpftrace, Driver &driver, const std::string &input, int expected_result=0) void test(BPFtrace &bpftrace, Driver &driver, const std::string &input, int expected_result=0)
...@@ -97,14 +92,6 @@ TEST(semantic_analyser, builtin_functions) ...@@ -97,14 +92,6 @@ TEST(semantic_analyser, builtin_functions)
test("kprobe:f { fake() }", 1); 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(semantic_analyser, undefined_map)
{ {
test("kprobe:f / @mymap == 123 / { @mymap = 0 }", 0); test("kprobe:f / @mymap == 123 / { @mymap = 0 }", 0);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment