Skip to content

Instantly share code, notes, and snippets.

@fbs
Created July 25, 2019 21:43
Show Gist options
  • Select an option

  • Save fbs/2517bbde7c069b15c8eb43e5d7976016 to your computer and use it in GitHub Desktop.

Select an option

Save fbs/2517bbde7c069b15c8eb43e5d7976016 to your computer and use it in GitHub Desktop.
bpftrace signed type v2 tool div
Checking bashreadline
Checking biolatency
Checking biosnoop
Change detected for script: biosnoop
--- master_biosnoop 2019-07-25 21:42:10.027857087 +0000
+++ new_biosnoop 2019-07-25 21:42:10.071858153 +0000
@@ -403,7 +403,7 @@
%11 = getelementptr %printf_t.0, %printf_t.0* %printf_args, i32 0, i32 0
store i64 1, i64* %11
%get_ns24 = call i64 inttoptr (i64 5 to i64 ()*)()
- %12 = sub i64 %get_ns24, 46449100788201
+ %12 = sub i64 %get_ns24, 46449146119512
%13 = udiv i64 %12, 1000000
%14 = getelementptr %printf_t.0, %printf_t.0* %printf_args, i32 0, i32 1
store i64 %13, i64* %14
@@ -896,7 +896,7 @@
%5 = getelementptr inbounds %printf_t.0, %printf_t.0* %printf_args, i64 0, i32 0
store i64 1, i64* %5, align 8
%get_ns24 = call i64 inttoptr (i64 5 to i64 ()*)()
- %6 = add i64 %get_ns24, -46449100788201
+ %6 = add i64 %get_ns24, -46449146119512
%7 = udiv i64 %6, 1000000
%8 = getelementptr inbounds %printf_t.0, %printf_t.0* %printf_args, i64 0, i32 1
store i64 %7, i64* %8, align 8
Checking bitesize
Checking capable
bpftrace failed on script: capable
Checking cpuwalk
Checking dcsnoop
Change detected for script: dcsnoop
--- master_dcsnoop 2019-07-25 21:42:10.947879380 +0000
+++ new_dcsnoop 2019-07-25 21:42:11.283887522 +0000
@@ -325,7 +325,7 @@
%6 = getelementptr %printf_t.1, %printf_t.1* %printf_args, i32 0, i32 0
store i64 2, i64* %6
%get_ns = call i64 inttoptr (i64 5 to i64 ()*)()
- %7 = sub i64 %get_ns, 46450019920670
+ %7 = sub i64 %get_ns, 46450357718166
%8 = udiv i64 %7, 1000000
%9 = getelementptr %printf_t.1, %printf_t.1* %printf_args, i32 0, i32 1
store i64 %8, i64* %9
@@ -453,7 +453,7 @@
%7 = getelementptr %printf_t.2, %printf_t.2* %printf_args, i32 0, i32 0
store i64 3, i64* %7
%get_ns = call i64 inttoptr (i64 5 to i64 ()*)()
- %8 = sub i64 %get_ns, 46450020016716
+ %8 = sub i64 %get_ns, 46450357814249
%9 = udiv i64 %8, 1000000
%10 = getelementptr %printf_t.2, %printf_t.2* %printf_args, i32 0, i32 1
store i64 %9, i64* %10
@@ -661,7 +661,7 @@
%4 = getelementptr inbounds %printf_t.1, %printf_t.1* %printf_args, i64 0, i32 0
store i64 2, i64* %4, align 8
%get_ns = tail call i64 inttoptr (i64 5 to i64 ()*)()
- %5 = add i64 %get_ns, -46450019920670
+ %5 = add i64 %get_ns, -46450357718166
%6 = udiv i64 %5, 1000000
%7 = getelementptr inbounds %printf_t.1, %printf_t.1* %printf_args, i64 0, i32 1
store i64 %6, i64* %7, align 8
@@ -756,7 +756,7 @@
%5 = getelementptr inbounds %printf_t.2, %printf_t.2* %printf_args, i64 0, i32 0
store i64 3, i64* %5, align 8
%get_ns = call i64 inttoptr (i64 5 to i64 ()*)()
- %6 = add i64 %get_ns, -46450020016716
+ %6 = add i64 %get_ns, -46450357814249
%7 = udiv i64 %6, 1000000
%8 = getelementptr inbounds %printf_t.2, %printf_t.2* %printf_args, i64 0, i32 1
store i64 %7, i64* %8, align 8
Checking execsnoop
Change detected for script: execsnoop
--- master_execsnoop 2019-07-25 21:42:11.367889559 +0000
+++ new_execsnoop 2019-07-25 21:42:11.423890915 +0000
@@ -252,7 +252,7 @@
%3 = getelementptr %printf_t.0, %printf_t.0* %printf_args, i32 0, i32 0
store i64 1, i64* %3
%get_ns = call i64 inttoptr (i64 5 to i64 ()*)()
- %4 = sub i64 %get_ns, 46450447066365
+ %4 = sub i64 %get_ns, 46450505899448
%5 = udiv i64 %4, 1000000
%6 = getelementptr %printf_t.0, %printf_t.0* %printf_args, i32 0, i32 1
store i64 %5, i64* %6
@@ -497,7 +497,7 @@
%2 = getelementptr inbounds %printf_t.0, %printf_t.0* %printf_args, i64 0, i32 0
store i64 1, i64* %2, align 8
%get_ns = tail call i64 inttoptr (i64 5 to i64 ()*)()
- %3 = add i64 %get_ns, -46450447066365
+ %3 = add i64 %get_ns, -46450505899448
%4 = udiv i64 %3, 1000000
%5 = getelementptr inbounds %printf_t.0, %printf_t.0* %printf_args, i64 0, i32 1
store i64 %4, i64* %5, align 8
Checking gethostlatency
Checking killsnoop
Checking loads
Checking mdflush
Checking oomkill
Checking opensnoop
Change detected for script: opensnoop
--- master_opensnoop 2019-07-25 21:42:13.915951301 +0000
+++ new_opensnoop 2019-07-25 21:42:14.007953531 +0000
@@ -462,7 +462,7 @@
call void @llvm.lifetime.start.p0i8(i64 -1, i8* %14)
%15 = load i64, i64* %"$ret"
%16 = icmp sgt i64 %15, 0
- %17 = zext i1 %16 to i64
+ %17 = sext i1 %16 to i64
%true_cond = icmp ne i64 %17, 0
br i1 %true_cond, label %left, label %right
@@ -502,7 +502,7 @@
call void @llvm.lifetime.start.p0i8(i64 -1, i8* %25)
%26 = load i64, i64* %"$ret"
%27 = icmp sgt i64 %26, 0
- %28 = zext i1 %27 to i64
+ %28 = sext i1 %27 to i64
%true_cond6 = icmp ne i64 %28, 0
br i1 %true_cond6, label %left1, label %right2
@@ -670,7 +670,7 @@
call void @llvm.lifetime.start.p0i8(i64 -1, i8* %14)
%15 = load i64, i64* %"$ret"
%16 = icmp sgt i64 %15, 0
- %17 = zext i1 %16 to i64
+ %17 = sext i1 %16 to i64
%true_cond = icmp ne i64 %17, 0
br i1 %true_cond, label %left, label %right
@@ -710,7 +710,7 @@
call void @llvm.lifetime.start.p0i8(i64 -1, i8* %25)
%26 = load i64, i64* %"$ret"
%27 = icmp sgt i64 %26, 0
- %28 = zext i1 %27 to i64
+ %28 = sext i1 %27 to i64
%true_cond6 = icmp ne i64 %28, 0
br i1 %true_cond6, label %left1, label %right2
Checking pidpersec
Checking runqlat
Change detected for script: runqlat
--- master_runqlat 2019-07-25 21:42:14.395962933 +0000
+++ new_runqlat 2019-07-25 21:42:14.651969136 +0000
@@ -290,7 +290,7 @@
%5 = bitcast i32* %_tracepoint_sched_sched_wakeup.pid to i8*
call void @llvm.lifetime.end.p0i8(i64 -1, i8* %5)
%6 = getelementptr [8 x i8], [8 x i8]* %"@qtime_key", i64 0, i64 0
- %7 = zext i32 %4 to i64
+ %7 = sext i32 %4 to i64
store i64 %7, i8* %6
%8 = bitcast i64* %"@qtime_val" to i8*
call void @llvm.lifetime.start.p0i8(i64 -1, i8* %8)
@@ -320,7 +320,7 @@
%5 = bitcast i32* %_tracepoint_sched_sched_wakeup_new.pid to i8*
call void @llvm.lifetime.end.p0i8(i64 -1, i8* %5)
%6 = getelementptr [8 x i8], [8 x i8]* %"@qtime_key", i64 0, i64 0
- %7 = zext i32 %4 to i64
+ %7 = sext i32 %4 to i64
store i64 %7, i8* %6
%8 = bitcast i64* %"@qtime_val" to i8*
call void @llvm.lifetime.start.p0i8(i64 -1, i8* %8)
@@ -360,7 +360,7 @@
%5 = bitcast i64* %_tracepoint_sched_sched_switch.prev_state to i8*
call void @llvm.lifetime.end.p0i8(i64 -1, i8* %5)
%6 = icmp eq i64 %4, 0
- %7 = zext i1 %6 to i64
+ %7 = sext i1 %6 to i64
%true_cond = icmp ne i64 %7, 0
br i1 %true_cond, label %if_stmt, label %else_stmt
@@ -376,7 +376,7 @@
%12 = bitcast i32* %_tracepoint_sched_sched_switch.prev_pid to i8*
call void @llvm.lifetime.end.p0i8(i64 -1, i8* %12)
%13 = getelementptr [8 x i8], [8 x i8]* %"@qtime_key", i64 0, i64 0
- %14 = zext i32 %11 to i64
+ %14 = sext i32 %11 to i64
store i64 %14, i8* %13
%15 = bitcast i64* %"@qtime_val" to i8*
call void @llvm.lifetime.start.p0i8(i64 -1, i8* %15)
@@ -400,7 +400,7 @@
%22 = bitcast i32* %_tracepoint_sched_sched_switch.next_pid to i8*
call void @llvm.lifetime.end.p0i8(i64 -1, i8* %22)
%23 = getelementptr [8 x i8], [8 x i8]* %"@qtime_key2", i64 0, i64 0
- %24 = zext i32 %21 to i64
+ %24 = sext i32 %21 to i64
store i64 %24, i8* %23
%pseudo4 = call i64 @llvm.bpf.pseudo(i64 1, i64 1)
%lookup_elem = call i8* inttoptr (i64 1 to i8* (i8*, i8*)*)(i64 %pseudo4, [8 x i8]* %"@qtime_key2")
@@ -456,7 +456,7 @@
%40 = bitcast i32* %_tracepoint_sched_sched_switch.next_pid19 to i8*
call void @llvm.lifetime.end.p0i8(i64 -1, i8* %40)
%41 = getelementptr [8 x i8], [8 x i8]* %"@qtime_key18", i64 0, i64 0
- %42 = zext i32 %39 to i64
+ %42 = sext i32 %39 to i64
store i64 %42, i8* %41
%pseudo21 = call i64 @llvm.bpf.pseudo(i64 1, i64 1)
%delete_elem = call i64 inttoptr (i64 3 to i64 (i8*, i8*)*)(i64 %pseudo21, [8 x i8]* %"@qtime_key18")
@@ -565,7 +565,7 @@
%probe_read = call i64 inttoptr (i64 4 to i64 (i8*, i64, i8*)*)(i32* nonnull %_tracepoint_sched_sched_wakeup.pid, i64 4, i8* %2)
%4 = load i32, i32* %_tracepoint_sched_sched_wakeup.pid, align 4
call void @llvm.lifetime.end.p0i8(i64 -1, i8* nonnull %3)
- %5 = zext i32 %4 to i64
+ %5 = sext i32 %4 to i64
store i64 %5, i8* %1, align 8
%6 = bitcast i64* %"@qtime_val" to i8*
call void @llvm.lifetime.start.p0i8(i64 -1, i8* nonnull %6)
@@ -591,7 +591,7 @@
%probe_read = call i64 inttoptr (i64 4 to i64 (i8*, i64, i8*)*)(i32* nonnull %_tracepoint_sched_sched_wakeup_new.pid, i64 4, i8* %2)
%4 = load i32, i32* %_tracepoint_sched_sched_wakeup_new.pid, align 4
call void @llvm.lifetime.end.p0i8(i64 -1, i8* nonnull %3)
- %5 = zext i32 %4 to i64
+ %5 = sext i32 %4 to i64
store i64 %5, i8* %1, align 8
%6 = bitcast i64* %"@qtime_val" to i8*
call void @llvm.lifetime.start.p0i8(i64 -1, i8* nonnull %6)
@@ -634,7 +634,7 @@
%probe_read1 = call i64 inttoptr (i64 4 to i64 (i8*, i64, i8*)*)(i32* nonnull %_tracepoint_sched_sched_switch.prev_pid, i64 4, i8* %6)
%8 = load i32, i32* %_tracepoint_sched_sched_switch.prev_pid, align 4
call void @llvm.lifetime.end.p0i8(i64 -1, i8* nonnull %7)
- %9 = zext i32 %8 to i64
+ %9 = sext i32 %8 to i64
store i64 %9, i8* %5, align 8
%10 = bitcast i64* %"@qtime_val" to i8*
call void @llvm.lifetime.start.p0i8(i64 -1, i8* nonnull %10)
@@ -654,7 +654,7 @@
%probe_read3 = call i64 inttoptr (i64 4 to i64 (i8*, i64, i8*)*)(i32* nonnull %_tracepoint_sched_sched_switch.next_pid, i64 4, i8* %12)
%14 = load i32, i32* %_tracepoint_sched_sched_switch.next_pid, align 4
call void @llvm.lifetime.end.p0i8(i64 -1, i8* nonnull %13)
- %15 = zext i32 %14 to i64
+ %15 = sext i32 %14 to i64
store i64 %15, i8* %11, align 8
%pseudo4 = call i64 @llvm.bpf.pseudo(i64 1, i64 1)
%lookup_elem = call i8* inttoptr (i64 1 to i8* (i8*, i8*)*)(i64 %pseudo4, [8 x i8]* nonnull %"@qtime_key2")
@@ -722,7 +722,7 @@
%probe_read20 = call i64 inttoptr (i64 4 to i64 (i8*, i64, i8*)*)(i32* nonnull %_tracepoint_sched_sched_switch.next_pid19, i64 4, i8* %12)
%46 = load i32, i32* %_tracepoint_sched_sched_switch.next_pid19, align 4
call void @llvm.lifetime.end.p0i8(i64 -1, i8* nonnull %45)
- %47 = zext i32 %46 to i64
+ %47 = sext i32 %46 to i64
store i64 %47, i8* %44, align 8
%pseudo21 = call i64 @llvm.bpf.pseudo(i64 1, i64 1)
%delete_elem = call i64 inttoptr (i64 3 to i64 (i8*, i8*)*)(i64 %pseudo21, [8 x i8]* nonnull %"@qtime_key18")
Checking runqlen
Change detected for script: runqlen
--- master_runqlen 2019-07-25 21:42:14.923975729 +0000
+++ new_runqlen 2019-07-25 21:42:15.183982030 +0000
@@ -280,7 +280,7 @@
call void @llvm.lifetime.start.p0i8(i64 -1, i8* %19)
%20 = load i32, i32* %"$len"
%21 = zext i32 %20 to i64
- %22 = icmp sgt i64 %21, 0
+ %22 = icmp ugt i64 %21, 0
%23 = zext i1 %22 to i64
%true_cond = icmp ne i64 %23, 0
br i1 %true_cond, label %left, label %right
Checking statsnoop
Change detected for script: statsnoop
--- master_statsnoop 2019-07-25 21:42:15.275984259 +0000
+++ new_statsnoop 2019-07-25 21:42:15.355986197 +0000
@@ -549,7 +549,7 @@
call void @llvm.lifetime.start.p0i8(i64 -1, i8* %13)
%14 = load i64, i64* %"$ret"
%15 = icmp sge i64 %14, 0
- %16 = zext i1 %15 to i64
+ %16 = sext i1 %15 to i64
%true_cond = icmp ne i64 %16, 0
br i1 %true_cond, label %left, label %right
@@ -724,7 +724,7 @@
call void @llvm.lifetime.start.p0i8(i64 -1, i8* %13)
%14 = load i64, i64* %"$ret"
%15 = icmp sge i64 %14, 0
- %16 = zext i1 %15 to i64
+ %16 = sext i1 %15 to i64
%true_cond = icmp ne i64 %16, 0
br i1 %true_cond, label %left, label %right
@@ -899,7 +899,7 @@
call void @llvm.lifetime.start.p0i8(i64 -1, i8* %13)
%14 = load i64, i64* %"$ret"
%15 = icmp sge i64 %14, 0
- %16 = zext i1 %15 to i64
+ %16 = sext i1 %15 to i64
%true_cond = icmp ne i64 %16, 0
br i1 %true_cond, label %left, label %right
@@ -1074,7 +1074,7 @@
call void @llvm.lifetime.start.p0i8(i64 -1, i8* %13)
%14 = load i64, i64* %"$ret"
%15 = icmp sge i64 %14, 0
- %16 = zext i1 %15 to i64
+ %16 = sext i1 %15 to i64
%true_cond = icmp ne i64 %16, 0
br i1 %true_cond, label %left, label %right
Checking syncsnoop
Checking syscount
Checking tcpaccept
Checking tcpconnect
Checking tcpdrop
bpftrace failed on script: tcpdrop
Checking tcpretrans
bpftrace failed on script: tcpretrans
Checking vfscount
Checking vfsstat
Checking writeback
Change detected for script: writeback
--- master_writeback 2019-07-25 21:42:21.788142055 +0000
+++ new_writeback 2019-07-25 21:42:21.896144671 +0000
@@ -669,7 +669,7 @@
%51 = load i32, i32* %_tracepoint_writeback_writeback_written.reason
%52 = bitcast i32* %_tracepoint_writeback_writeback_written.reason to i8*
call void @llvm.lifetime.end.p0i8(i64 -1, i8* %52)
- %53 = zext i32 %51 to i64
+ %53 = sext i32 %51 to i64
%54 = and i64 %53, 4294967295
%55 = getelementptr [8 x i8], [8 x i8]* %"@reason_key", i64 0, i64 0
store i64 %54, i8* %55
Checking xfsdist
vagrant@ubuntu-cosmic:~$
#!/bin/bash
BPFTRACE=$(command -v bpftrace)
BPFTRACE_MASTER=$(command -v bpftrace_master)
TOOLDIR="/vagrant/tools/"
TMPDIR=$(mktemp -d)
[[ $? -ne 0 || -z $TMPDIR ]] && (echo "Failed to create tmp dir"; exit 10)
[[ -z $BPFTRACE ]] && (echo "bpftrace not found"; exit 11)
[[ -z $BPFTRACE_MASTER ]] && (echo "bpftrace_master not found"; exit 12)
cd $TMPDIR
function hash() {
file="${1}"
sha1sum "${1}" | awk '{print $1}'
}
for script in ${TOOLDIR}/*.bt; do
s=$(basename ${script/.bt/})
echo "Checking $s"
#$BPFTRACE_MASTER -dd "$script" 2>&1 | sed -n '/After opt/,$p' > "master_${s}"
#$BPFTRACE -dd "${script}" 2>&1 | sed -n '/After opt/,$p' > "new_${s}"
$BPFTRACE_MASTER -dd "$script" > "master_${s}" 2>&1
$BPFTRACE -dd "${script}" > "new_${s}" 2>&1
if [ $? -ne 0 ]; then
echo "bpftrace failed on script: ${s}"
continue
fi
if [[ $(hash "master_${s}") != $(hash "new_${s}") ]]; then
echo "Change detected for script: ${s}"
diff -b -u "master_${s}" "new_${s}"
fi
done
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment