aboutsummaryrefslogtreecommitdiffstats
path: root/executor/executor_linux.h
diff options
context:
space:
mode:
Diffstat (limited to 'executor/executor_linux.h')
-rw-r--r--executor/executor_linux.h18
1 files changed, 11 insertions, 7 deletions
diff --git a/executor/executor_linux.h b/executor/executor_linux.h
index 445a278e2..984c0ba62 100644
--- a/executor/executor_linux.h
+++ b/executor/executor_linux.h
@@ -193,19 +193,23 @@ static bool is_kernel_data(uint64 addr)
#endif
}
+// Returns >0 for yes, <0 for no, 0 for don't know.
+static int is_kernel_pc(uint64 pc)
+{
+#if GOARCH_386 || GOARCH_amd64
+ // Text/modules range for x86_64.
+ return pc >= 0xffffffff80000000ull && pc < 0xffffffffff000000ull ? 1 : -1;
+#else
+ return 0;
+#endif
+}
+
static bool use_cover_edges(uint64 pc)
{
#if GOARCH_amd64 || GOARCH_arm64
if (is_gvisor)
return false; // gvisor coverage is not a trace, so producing edges won't work
#endif
-#if GOARCH_386 || GOARCH_amd64
- // Text/modules range for x86_64.
- if (pc < 0xffffffff80000000ull || pc >= 0xffffffffff000000ull) {
- debug("got bad pc: 0x%llx\n", pc);
- doexit(0);
- }
-#endif
return true;
}