The BPF-specific .BTF.ext section is always generated for BPF programs
if -gbtf is specified, and generating it requires BTF information and
assumes that the BTF info has already been generated.
Compiling non-C languages to BPF is not supported, nor is generating
CTF/BTF for non-C. But, compiling another language like C++ to BPF
with -gbtf specified meant that we would try to generate the .BTF.ext
section anyway, and then ICE because no BTF information was available.
Add a check to bail out of btf_ext_output if the TU CTFC does not exist,
meaning no BTF info is available.
Tested on x86_64-linux-gnu host for bpf-unknown-none.
gcc/
PR target/117447
* config/bpf/btfext-out.cc (btf_ext_output): Bail if TU CTFC is null.
---
gcc/config/bpf/btfext-out.cc | 3 +++
1 file changed, 3 insertions(+)
diff --git a/gcc/config/bpf/btfext-out.cc b/gcc/config/bpf/btfext-out.cc
index ca6241aa52e..760b2b59ff6 100644
--- a/gcc/config/bpf/btfext-out.cc
+++ b/gcc/config/bpf/btfext-out.cc
@@ -611,6 +611,9 @@ btf_ext_init (void)
void
btf_ext_output (void)
{
+ if (!ctf_get_tu_ctfc ())
+ return;
+
output_btfext_header ();
output_btfext_func_info (btf_ext);
if (TARGET_BPF_CORE)
--
2.45.2