bpf: Always emit .BTF.ext section if generating BTF

BPF applications, when generating BTF information should always create a
.BTF.ext section.
Current implementation was only creating it when -mco-re option was used.
This patch makes .BTF.ext always be generated for BPF target objects.
The patch also adds conditions around btf_finalize function call
such that BTF deallocation happens later for BPF target.
For BPF, btf_finalize is only called after .BTF.ext is generated.

gcc/ChangeLog:

	* config/bpf/bpf.cc (bpf_option_override): Make .BTF.ext
	enabled by default for BPF.
	(bpf_file_end): Call BTF deallocation.
	(bpf_asm_init_sections): Correct condition.
	* dwarf2ctf.cc (ctf_debug_finalize): Conditionally execute BTF
	deallocation.
	(ctf_debuf_finish): Correct condition for calling
	ctf_debug_finalize.
This commit is contained in:
Cupertino Miranda 2024-02-12 17:37:37 +00:00
parent 69a3ce49bd
commit 38d2eb337b
2 changed files with 15 additions and 17 deletions

View file

@ -195,10 +195,8 @@ bpf_option_override (void)
if (TARGET_BPF_CORE && !btf_debuginfo_p ())
error ("BPF CO-RE requires BTF debugging information, use %<-gbtf%>");
/* To support the portability needs of BPF CO-RE approach, BTF debug
information includes the BPF CO-RE relocations. */
if (TARGET_BPF_CORE)
write_symbols |= BTF_WITH_CORE_DEBUG;
/* BPF applications always generate .BTF.ext. */
write_symbols |= BTF_WITH_CORE_DEBUG;
/* Unlike much of the other BTF debug information, the information necessary
for CO-RE relocations is added to the CTF container by the BPF backend.
@ -218,10 +216,7 @@ bpf_option_override (void)
/* -gbtf implies -mcore when using the BPF backend, unless -mno-co-re
is specified. */
if (btf_debuginfo_p () && !(target_flags_explicit & MASK_BPF_CORE))
{
target_flags |= MASK_BPF_CORE;
write_symbols |= BTF_WITH_CORE_DEBUG;
}
target_flags |= MASK_BPF_CORE;
/* Determine available features from ISA setting (-mcpu=). */
if (bpf_has_jmpext == -1)
@ -267,7 +262,7 @@ bpf_option_override (void)
static void
bpf_asm_init_sections (void)
{
if (TARGET_BPF_CORE)
if (btf_debuginfo_p () && btf_with_core_debuginfo_p ())
btf_ext_init ();
}
@ -279,8 +274,11 @@ bpf_asm_init_sections (void)
static void
bpf_file_end (void)
{
if (TARGET_BPF_CORE)
btf_ext_output ();
if (btf_debuginfo_p () && btf_with_core_debuginfo_p ())
{
btf_ext_output ();
btf_finalize ();
}
}
#undef TARGET_ASM_FILE_END

View file

@ -944,7 +944,10 @@ ctf_debug_finalize (const char *filename, bool btf)
if (btf)
{
btf_output (filename);
btf_finalize ();
/* btf_finalize when compiling BPF applciations gets deallocated by the
BPF target in bpf_file_end. */
if (btf_debuginfo_p () && !btf_with_core_debuginfo_p ())
btf_finalize ();
}
else
@ -1027,11 +1030,8 @@ ctf_debug_finish (const char * filename)
/* Emit BTF debug info here when CO-RE relocations need to be generated.
BTF with CO-RE relocations needs to be generated when CO-RE is in effect
for the BPF target. */
if (btf_with_core_debuginfo_p ())
{
gcc_assert (btf_debuginfo_p ());
ctf_debug_finalize (filename, btf_debuginfo_p ());
}
if (btf_debuginfo_p () && btf_with_core_debuginfo_p ())
ctf_debug_finalize (filename, btf_debuginfo_p ());
}
#include "gt-dwarf2ctf.h"