Snap for 11400057 from 3f91c6568189b02ba03e5b9aa75d613be2dd2a5b to simpleperf-release

Change-Id: I1701ad25d13298ad75a9d050400d1cb319e77461
diff --git a/libbpf-tools/Android.bp b/libbpf-tools/Android.bp
index 8bf6064..e24b2c0 100644
--- a/libbpf-tools/Android.bp
+++ b/libbpf-tools/Android.bp
@@ -28,7 +28,6 @@
     name: "bcc_bpf_defaults",
     compile_multilib: "first",
     cflags: [
-        "--target=bpf",
         "-fno-data-sections",
         "-fno-function-sections",
         "-fno-stack-protector",
@@ -37,6 +36,8 @@
         "-Wno-pointer-arith",
         "-Wno-unused-command-line-argument",
         "-Wno-unused-parameter",
+        "-mllvm -bpf-stack-size=1024",
+        "-g",
     ],
     header_libs: [
         "bpf_prog_headers",
@@ -68,6 +69,7 @@
             ],
         },
     },
+    bpf_target: true,
     visibility: ["//visibility:private"],
 }
 
diff --git a/libbpf-tools/biolatency.bpf.c b/libbpf-tools/biolatency.bpf.c
index 429412d..d0409fd 100644
--- a/libbpf-tools/biolatency.bpf.c
+++ b/libbpf-tools/biolatency.bpf.c
@@ -101,6 +101,7 @@
 	struct hist_key hkey = {};
 	struct hist *histp;
 	s64 delta;
+	u64 udelta;
 
 	if (filter_cg && !bpf_current_task_under_cgroup(&cgroup_map, 0))
 		return 0;
@@ -113,6 +114,8 @@
 	if (delta < 0)
 		goto cleanup;
 
+	udelta = (u64)delta;
+
 	if (targ_per_disk) {
 		struct gendisk *disk = get_disk(rq);
 
@@ -131,10 +134,10 @@
 	}
 
 	if (targ_ms)
-		delta /= 1000000U;
+		udelta /= 1000000U;
 	else
-		delta /= 1000U;
-	slot = log2l(delta);
+		udelta /= 1000U;
+	slot = log2l(udelta);
 	if (slot >= MAX_SLOTS)
 		slot = MAX_SLOTS - 1;
 	__sync_fetch_and_add(&histp->slots[slot], 1);
diff --git a/libbpf-tools/biostacks.bpf.c b/libbpf-tools/biostacks.bpf.c
index 0ca6988..c1dce67 100644
--- a/libbpf-tools/biostacks.bpf.c
+++ b/libbpf-tools/biostacks.bpf.c
@@ -74,6 +74,7 @@
 	struct internal_rqinfo *i_rqinfop;
 	struct hist *histp;
 	s64 delta;
+	u64 udelta;
 
 	i_rqinfop = bpf_map_lookup_elem(&rqinfos, &rq);
 	if (!i_rqinfop)
@@ -81,14 +82,15 @@
 	delta = (s64)(ts - i_rqinfop->start_ts);
 	if (delta < 0)
 		goto cleanup;
+	udelta = (u64)delta;
 	histp = bpf_map_lookup_or_try_init(&hists, &i_rqinfop->rqinfo, &zero);
 	if (!histp)
 		goto cleanup;
 	if (targ_ms)
-		delta /= 1000000U;
+		udelta /= 1000000U;
 	else
-		delta /= 1000U;
-	slot = log2l(delta);
+		udelta /= 1000U;
+	slot = log2l(udelta);
 	if (slot >= MAX_SLOTS)
 		slot = MAX_SLOTS - 1;
 	__sync_fetch_and_add(&histp->slots[slot], 1);
diff --git a/libbpf-tools/fsdist.bpf.c b/libbpf-tools/fsdist.bpf.c
index 1bf98e9..19bc51a 100644
--- a/libbpf-tools/fsdist.bpf.c
+++ b/libbpf-tools/fsdist.bpf.c
@@ -41,6 +41,7 @@
 	__u64 ts = bpf_ktime_get_ns();
 	__u64 *tsp, slot;
 	__s64 delta;
+	__u64 udelta;
 
 	tsp = bpf_map_lookup_elem(&starts, &tid);
 	if (!tsp)
@@ -53,12 +54,13 @@
 	if (delta < 0)
 		goto cleanup;
 
+	udelta = (__u64)delta;
 	if (in_ms)
-		delta /= 1000000;
+		udelta /= 1000000;
 	else
-		delta /= 1000;
+		udelta /= 1000;
 
-	slot = log2l(delta);
+	slot = log2l(udelta);
 	if (slot >= MAX_SLOTS)
 		slot = MAX_SLOTS - 1;
 	__sync_fetch_and_add(&hists[op].slots[slot], 1);
diff --git a/libbpf-tools/offcputime.bpf.c b/libbpf-tools/offcputime.bpf.c
index cb20d50..3a36fa3 100644
--- a/libbpf-tools/offcputime.bpf.c
+++ b/libbpf-tools/offcputime.bpf.c
@@ -63,6 +63,7 @@
 	struct internal_key *i_keyp, i_key;
 	struct val_t *valp, val;
 	s64 delta;
+	u64 udelta;
 	u32 pid;
 
 	if (allow_record(prev)) {
@@ -94,13 +95,14 @@
 	delta = (s64)(bpf_ktime_get_ns() - i_keyp->start_ts);
 	if (delta < 0)
 		goto cleanup;
-	delta /= 1000U;
-	if (delta < min_block_ns || delta > max_block_ns)
+	udelta = (u64)delta;
+	udelta /= 1000U;
+	if (udelta < min_block_ns || udelta > max_block_ns)
 		goto cleanup;
 	valp = bpf_map_lookup_elem(&info, &i_keyp->key);
 	if (!valp)
 		goto cleanup;
-	__sync_fetch_and_add(&valp->delta, delta);
+	__sync_fetch_and_add(&valp->delta, udelta);
 
 cleanup:
 	bpf_map_delete_elem(&start, &pid);
diff --git a/libbpf-tools/runqlat.bpf.c b/libbpf-tools/runqlat.bpf.c
index 76e0553..1ddf976 100644
--- a/libbpf-tools/runqlat.bpf.c
+++ b/libbpf-tools/runqlat.bpf.c
@@ -80,6 +80,7 @@
 	u64 *tsp, slot;
 	u32 pid, hkey;
 	s64 delta;
+	u64 udelta;
 
 	if (filter_cg && !bpf_current_task_under_cgroup(&cgroup_map, 0))
 		return 0;
@@ -95,6 +96,7 @@
 	delta = bpf_ktime_get_ns() - *tsp;
 	if (delta < 0)
 		goto cleanup;
+	udelta = (u64)delta;
 
 	if (targ_per_process)
 		hkey = BPF_CORE_READ(next, tgid);
@@ -111,10 +113,10 @@
 		bpf_probe_read_kernel_str(&histp->comm, sizeof(histp->comm),
 					next->comm);
 	if (targ_ms)
-		delta /= 1000000U;
+		udelta /= 1000000U;
 	else
-		delta /= 1000U;
-	slot = log2l(delta);
+		udelta /= 1000U;
+	slot = log2l(udelta);
 	if (slot >= MAX_SLOTS)
 		slot = MAX_SLOTS - 1;
 	__sync_fetch_and_add(&histp->slots[slot], 1);