On Mon, May 31, 2021 at 7:18 PM Jose E. Marchesi via Gcc-patches <gcc-patches@gcc.gnu.org> wrote: > > 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.
You want to CC the BPF maintainer here. Note that IIRC RTX_FRAME_RELATED_P also prevents code-motion for some insns, so I'm not sure removing that is 100% safe. > 2021-05-14 David Faust <david.fa...@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. > --- > gcc/config/bpf/bpf.c | 4 ---- > gcc/config/bpf/bpf.h | 12 ++---------- > 2 files changed, 2 insertions(+), 14 deletions(-) > > diff --git a/gcc/config/bpf/bpf.c b/gcc/config/bpf/bpf.c > index 126d4a2798d..e635f9edb40 100644 > --- a/gcc/config/bpf/bpf.c > +++ b/gcc/config/bpf/bpf.c > @@ -349,7 +349,6 @@ bpf_expand_prologue (void) > hard_frame_pointer_rtx, > fp_offset - 8)); > insn = emit_move_insn (mem, gen_rtx_REG (DImode, regno)); > - RTX_FRAME_RELATED_P (insn) = 1; > fp_offset -= 8; > } > } > @@ -364,7 +363,6 @@ bpf_expand_prologue (void) > { > insn = emit_move_insn (stack_pointer_rtx, > hard_frame_pointer_rtx); > - RTX_FRAME_RELATED_P (insn) = 1; > > if (size > 0) > { > @@ -372,7 +370,6 @@ bpf_expand_prologue (void) > gen_rtx_PLUS (Pmode, > stack_pointer_rtx, > GEN_INT (-size)))); > - RTX_FRAME_RELATED_P (insn) = 1; > } > } > } > @@ -412,7 +409,6 @@ bpf_expand_epilogue (void) > hard_frame_pointer_rtx, > fp_offset - 8)); > insn = emit_move_insn (gen_rtx_REG (DImode, regno), mem); > - RTX_FRAME_RELATED_P (insn) = 1; > fp_offset -= 8; > } > } > diff --git a/gcc/config/bpf/bpf.h b/gcc/config/bpf/bpf.h > index 4c5b19e262b..55beecbcb36 100644 > --- a/gcc/config/bpf/bpf.h > +++ b/gcc/config/bpf/bpf.h > @@ -235,17 +235,9 @@ enum reg_class > > /**** 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. */ > -#ifdef DWARF2_DEBUGGING_INFO > -# undef DWARF2_DEBUGGING_INFO > -#endif > -#ifdef PREFERRED_DEBUGGING_TYPE > -# undef PREFERRED_DEBUGGING_TYPE > -#endif > - > -#define DBX_DEBUGGING_INFO > +#define DWARF2_FRAME_INFO 0 > > /**** Stack Layout and Calling Conventions. */ > > -- > 2.25.0.2.g232378479e >