[DTrace-devel] [PATCH 1/2] bpf: add PC to fault reporting using dt_probe_error()
Kris Van Hees
kris.van.hees at oracle.com
Thu May 11 05:23:38 UTC 2023
Signed-off-by: Kris Van Hees <kris.van.hees at oracle.com>
---
bpf/get_bvar.c | 3 ++-
bpf/speculation.c | 3 ++-
2 files changed, 4 insertions(+), 2 deletions(-)
diff --git a/bpf/get_bvar.c b/bpf/get_bvar.c
index ef2e2ca6..4fc6b880 100644
--- a/bpf/get_bvar.c
+++ b/bpf/get_bvar.c
@@ -23,13 +23,14 @@ extern struct bpf_map_def cpuinfo;
extern struct bpf_map_def probes;
extern struct bpf_map_def state;
+extern uint64_t PC;
extern uint64_t STBSZ;
extern uint64_t STKSIZ;
extern uint64_t BOOTTM;
#define error(dctx, fault, illval) \
({ \
- dt_probe_error((dctx), -1, (fault), (illval)); \
+ dt_probe_error((dctx), (uint64_t)&PC, (fault), (illval)); \
-1; \
})
diff --git a/bpf/speculation.c b/bpf/speculation.c
index 6e032a44..c565c8da 100644
--- a/bpf/speculation.c
+++ b/bpf/speculation.c
@@ -20,6 +20,7 @@
extern struct bpf_map_def specs;
extern struct bpf_map_def state;
+extern uint64_t PC;
extern uint64_t NSPEC;
/*
@@ -151,7 +152,7 @@ dt_speculation_set_drainable(const dt_dctx_t *dctx, uint32_t id)
if ((spec = bpf_map_lookup_elem(&specs, &id)) == NULL) {
if (id <= (uint64_t) &NSPEC)
return 0;
- dt_probe_error(dctx, -1, DTRACEFLT_ILLOP, 0);
+ dt_probe_error(dctx, (uint64_t)&PC, DTRACEFLT_ILLOP, 0);
return -1;
}
spec->draining = 1;
--
2.40.1
More information about the DTrace-devel
mailing list