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:
parent
69a3ce49bd
commit
38d2eb337b
2 changed files with 15 additions and 17 deletions
|
@ -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
|
||||
|
|
|
@ -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"
|
||||
|
|
Loading…
Add table
Reference in a new issue