[DTrace-devel] [PATCH 05/61] Explicitly define BPF helper function IDs if necessary

eugene.loh at oracle.com eugene.loh at oracle.com
Fri Jul 8 14:44:49 UTC 2022


From: Eugene Loh <eugene.loh at oracle.com>

Some Oracle Linux systems have very out-of-date linux/bpf.h header
files.  E.g. they may not have BPF_FUNC_send_signal (which appeared
in Linux 5.2) or BPF_FUNC_get_stack (which appeared in 4.17).

Signed-off-by: Eugene Loh <eugene.loh at oracle.com>
---
 libdtrace/dt_cg.c | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/libdtrace/dt_cg.c b/libdtrace/dt_cg.c
index 58f0ddd1..3c97a6c9 100644
--- a/libdtrace/dt_cg.c
+++ b/libdtrace/dt_cg.c
@@ -1670,6 +1670,9 @@ dt_cg_act_raise(dt_pcb_t *pcb, dt_node_t *dnp, dtrace_actkind_t kind)
 
 	dt_cg_node(dnp->dn_args, &pcb->pcb_ir, drp);
 
+#ifndef BPF_FUNC_send_signal
+#define BPF_FUNC_send_signal 109
+#endif
 	if (dt_regset_xalloc_args(drp) == -1)
 		longjmp(yypcb->pcb_jmpbuf, EDT_NOREG);
 	emit(dlp, BPF_MOV_REG(BPF_REG_1, dnp->dn_args->dn_reg));
@@ -1779,6 +1782,9 @@ dt_cg_act_stack(dt_pcb_t *pcb, dt_node_t *dnp, dtrace_actkind_t kind)
 			 sizeof(uint64_t) * nframes, sizeof(uint64_t),
 			 NULL, nframes);
 
+#ifndef BPF_FUNC_get_stack
+#define BPF_FUNC_get_stack 67
+#endif
 	/* Now call bpf_get_stack(ctx, buf, size, flags). */
 	if (dt_regset_xalloc_args(drp) == -1)
 		longjmp(yypcb->pcb_jmpbuf, EDT_NOREG);
-- 
2.18.4




More information about the DTrace-devel mailing list