Enable BTF generation in the BPF backend
This patch changes the BPF GCC backend in order to use the DWARF debug hooks and therefore enables the user to generate BTF debugging information with -gbtf. Generating BTF is crucial when compiling BPF programs, since the CO-RE (compile-once, run-everwhere) mechanism used by the kernel BPF loader relies on it. Note that since in eBPF it is not possible to unwind frames due to the restrictive nature of the target architecture, we are disabling the generation of CFA in this target. 2021-06-28 David Faust <david.faust@oracle.com> * config/bpf/bpf.c (bpf_expand_prologue): Do not mark insns as frame related. (bpf_expand_epilogue): Likewise. * config/bpf/bpf.h (DWARF2_FRAME_INFO): Define to 0. Do not define DBX_DEBUGGING_INFO.
This commit is contained in:
parent
824a6a52a6
commit
d5cf2b5db3
@ -349,7 +349,6 @@ bpf_expand_prologue (void)
|
|||||||
hard_frame_pointer_rtx,
|
hard_frame_pointer_rtx,
|
||||||
fp_offset - 8));
|
fp_offset - 8));
|
||||||
insn = emit_move_insn (mem, gen_rtx_REG (DImode, regno));
|
insn = emit_move_insn (mem, gen_rtx_REG (DImode, regno));
|
||||||
RTX_FRAME_RELATED_P (insn) = 1;
|
|
||||||
fp_offset -= 8;
|
fp_offset -= 8;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -364,7 +363,6 @@ bpf_expand_prologue (void)
|
|||||||
{
|
{
|
||||||
insn = emit_move_insn (stack_pointer_rtx,
|
insn = emit_move_insn (stack_pointer_rtx,
|
||||||
hard_frame_pointer_rtx);
|
hard_frame_pointer_rtx);
|
||||||
RTX_FRAME_RELATED_P (insn) = 1;
|
|
||||||
|
|
||||||
if (size > 0)
|
if (size > 0)
|
||||||
{
|
{
|
||||||
@ -372,7 +370,6 @@ bpf_expand_prologue (void)
|
|||||||
gen_rtx_PLUS (Pmode,
|
gen_rtx_PLUS (Pmode,
|
||||||
stack_pointer_rtx,
|
stack_pointer_rtx,
|
||||||
GEN_INT (-size))));
|
GEN_INT (-size))));
|
||||||
RTX_FRAME_RELATED_P (insn) = 1;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -412,7 +409,6 @@ bpf_expand_epilogue (void)
|
|||||||
hard_frame_pointer_rtx,
|
hard_frame_pointer_rtx,
|
||||||
fp_offset - 8));
|
fp_offset - 8));
|
||||||
insn = emit_move_insn (gen_rtx_REG (DImode, regno), mem);
|
insn = emit_move_insn (gen_rtx_REG (DImode, regno), mem);
|
||||||
RTX_FRAME_RELATED_P (insn) = 1;
|
|
||||||
fp_offset -= 8;
|
fp_offset -= 8;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -235,17 +235,9 @@ enum reg_class
|
|||||||
|
|
||||||
/**** Debugging Info ****/
|
/**** Debugging Info ****/
|
||||||
|
|
||||||
/* We cannot support DWARF2 because of the limitations of eBPF. */
|
/* In eBPF it is not possible to unwind frames. Disable CFA. */
|
||||||
|
|
||||||
/* elfos.h insists in using DWARF. Undo that here. */
|
#define DWARF2_FRAME_INFO 0
|
||||||
#ifdef DWARF2_DEBUGGING_INFO
|
|
||||||
# undef DWARF2_DEBUGGING_INFO
|
|
||||||
#endif
|
|
||||||
#ifdef PREFERRED_DEBUGGING_TYPE
|
|
||||||
# undef PREFERRED_DEBUGGING_TYPE
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#define DBX_DEBUGGING_INFO
|
|
||||||
|
|
||||||
/**** Stack Layout and Calling Conventions. */
|
/**** Stack Layout and Calling Conventions. */
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user