https://gcc.gnu.org/g:0e1382034246a594f1da8dbaee97c4a06743f31a

commit r15-5026-g0e1382034246a594f1da8dbaee97c4a06743f31a
Author: David Faust <david.fa...@oracle.com>
Date:   Thu Nov 7 09:27:07 2024 -0800

    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.

Diff:
---
 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 ca6241aa52ee..760b2b59ff6a 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)

Reply via email to