aboutsummaryrefslogtreecommitdiffstats
path: root/executor/executor_linux.h
diff options
context:
space:
mode:
authorDmitry Vyukov <dvyukov@google.com>2024-06-10 11:06:31 +0200
committerDmitry Vyukov <dvyukov@google.com>2024-06-11 05:18:24 +0000
commit2a003ea76245ebf8417137c75d95874a91d1a09f (patch)
tree6b49c8e559f60b50cf48e7849124a5d2694606f7 /executor/executor_linux.h
parent5f02070655b3c1f2ab50a82fd5f466aaeb7af44a (diff)
executor: factor out is_kernel_pc helper
Factor out is_kernel_pc helper and add kernel pc range for test OS for testing.
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;
}