diff options
| author | Dmitry Vyukov <dvyukov@google.com> | 2024-06-10 11:06:31 +0200 |
|---|---|---|
| committer | Dmitry Vyukov <dvyukov@google.com> | 2024-06-11 05:18:24 +0000 |
| commit | 2a003ea76245ebf8417137c75d95874a91d1a09f (patch) | |
| tree | 6b49c8e559f60b50cf48e7849124a5d2694606f7 /executor/executor_linux.h | |
| parent | 5f02070655b3c1f2ab50a82fd5f466aaeb7af44a (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.h | 18 |
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; } |
