From b7e215a8ee81d44281d9e0a2a25eceb47b6911dd Mon Sep 17 00:00:00 2001 From: Indu Bhagat Date: Thu, 20 May 2021 11:15:52 -0700 Subject: CTF/BTF debug formats This commit introduces support for generating CTF debugging information and BTF debugging information from GCC. 2021-06-28 Indu Bhagat David Faust Jose E. Marchesi Weimin Pan gcc/ * Makefile.in: Add ctfc.*, ctfout.c and btfout.c files to GTFILES. Add new object files. * common.opt: Add CTF and BTF debug info options. * btfout.c: New file. * ctfc.c: Likewise. * ctfc.h: Likewise. * ctfout.c: Likewise. * dwarf2ctf.c: Likewise. * dwarf2ctf.h: Likewise. * dwarf2cfi.c (dwarf2out_do_frame): Acknowledge CTF_DEBUG and BTF_DEBUG. * dwarf2out.c (dwarf2out_source_line): Likewise. (dwarf2out_finish): Skip emitting DWARF if CTF or BTF are to be generated. (debug_format_do_cu): New function. (dwarf2out_early_finish): Traverse DIEs and emit CTF/BTF for them if requested. Include dwarf2ctf.c. * final.c (dwarf2_debug_info_emitted_p): Acknowledge DWARF-based debug formats. * flag-types.h (enum debug_info_type): Add CTF_DEBUG and BTF_DEBUG. (CTF_DEBUG): New bitmask. (BTF_DEBUG): Likewise. (enum ctf_debug_info_levels): New enum. * gengtype.c (open_base_files): Handle ctfc.h. (main): Handle uint32_t type. * flags.h (btf_debuginfo_p): New definition. (dwarf_based_debuginfo_p): Likewise. * opts.c (debug_type_names): Add entries for CTF and BTF. (btf_debuginfo_p): New function. (dwarf_based_debuginfo_p): Likewise. (common_handle_option): Handle -gctfN and -gbtf options. (set_debug_level): Set CTF_DEBUG, BTF_DEBUG whenever appropriate. * toplev.c (process_options): Inform the user and ignore -gctfLEVEL if frontend is not C. include/ * ctf.h: New file. * btf.h: Likewise. libiberty/ * simple-object.c (handle_lto_debug_sections): Copy over .ctf sections. --- gcc/dwarf2cfi.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'gcc/dwarf2cfi.c') diff --git a/gcc/dwarf2cfi.c b/gcc/dwarf2cfi.c index c27ac19..df9b625 100644 --- a/gcc/dwarf2cfi.c +++ b/gcc/dwarf2cfi.c @@ -3558,7 +3558,7 @@ dwarf2out_do_frame (void) /* We want to emit correct CFA location expressions or lists, so we have to return true if we're going to generate debug info, even if we're not going to output frame or unwind info. */ - if (dwarf_debuginfo_p ()) + if (dwarf_debuginfo_p () || dwarf_based_debuginfo_p ()) return true; if (saved_do_cfi_asm > 0) -- cgit v1.1