aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Faust <david.faust@oracle.com>2024-11-07 09:27:07 -0800
committerDavid Faust <david.faust@oracle.com>2024-11-07 09:58:03 -0800
commit0e1382034246a594f1da8dbaee97c4a06743f31a (patch)
treea2ff8c294231a5f26f280b4ed507d01745b69755
parent6571e8f863736b7705f59c9ab0f17b7c4fdbcf92 (diff)
downloadgcc-0e1382034246a594f1da8dbaee97c4a06743f31a.zip
gcc-0e1382034246a594f1da8dbaee97c4a06743f31a.tar.gz
gcc-0e1382034246a594f1da8dbaee97c4a06743f31a.tar.bz2
bpf: avoid possible null deref in btf_ext_output [PR target/117447]
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. gcc/ PR target/117447 * config/bpf/btfext-out.cc (btf_ext_output): Bail if TU CTFC is null.
-rw-r--r--gcc/config/bpf/btfext-out.cc3
1 files changed, 3 insertions, 0 deletions
diff --git a/gcc/config/bpf/btfext-out.cc b/gcc/config/bpf/btfext-out.cc
index ca6241a..760b2b5 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)