diff --git a/llvm/lib/Target/BPF/BTF.h b/llvm/lib/Target/BPF/BTF.h --- a/llvm/lib/Target/BPF/BTF.h +++ b/llvm/lib/Target/BPF/BTF.h @@ -180,8 +180,6 @@ enum : uint8_t { VAR_STATIC = 0, ///< Linkage: InternalLinkage VAR_GLOBAL_ALLOCATED = 1, ///< Linkage: ExternalLinkage - VAR_GLOBAL_TENTATIVE = 2, ///< Linkage: CommonLinkage - VAR_GLOBAL_EXTERNAL = 3, ///< Linkage: ExternalLinkage }; /// BTF_KIND_DATASEC are followed by multiple "struct BTFDataSecVar". diff --git a/llvm/lib/Target/BPF/BTFDebug.cpp b/llvm/lib/Target/BPF/BTFDebug.cpp --- a/llvm/lib/Target/BPF/BTFDebug.cpp +++ b/llvm/lib/Target/BPF/BTFDebug.cpp @@ -1076,6 +1076,11 @@ SmallVector GVs; Global.getDebugInfo(GVs); + + // No type information, mostly internal, skip it. + if (GVs.size() == 0) + continue; + uint32_t GVTypeId = 0; for (auto *GVE : GVs) { if (SecName.startswith(".maps")) @@ -1087,7 +1092,7 @@ // Only support the following globals: // . static variables - // . non-static global variables with section attributes + // . non-static global variables // Essentially means: // . .bcc/.data/.rodata DataSec entities only contain static data // . Other DataSec entities contain static or initialized global data. @@ -1096,7 +1101,7 @@ // corresponding ELF section flags. auto Linkage = Global.getLinkage(); if (Linkage != GlobalValue::InternalLinkage && - (Linkage != GlobalValue::ExternalLinkage || !Global.hasSection())) + Linkage != GlobalValue::ExternalLinkage) continue; uint32_t GVarInfo = Linkage == GlobalValue::ExternalLinkage diff --git a/llvm/test/CodeGen/BPF/BTF/global-var-inited.ll b/llvm/test/CodeGen/BPF/BTF/global-var-inited.ll --- a/llvm/test/CodeGen/BPF/BTF/global-var-inited.ll +++ b/llvm/test/CodeGen/BPF/BTF/global-var-inited.ll @@ -14,16 +14,30 @@ ; CHECK-NEXT: .byte 0 ; CHECK-NEXT: .long 24 ; CHECK-NEXT: .long 0 -; CHECK-NEXT: .long 16 -; CHECK-NEXT: .long 16 -; CHECK-NEXT: .long 5 +; CHECK-NEXT: .long 56 +; CHECK-NEXT: .long 56 +; CHECK-NEXT: .long 13 ; CHECK-NEXT: .long 1 # BTF_KIND_INT(id = 1) ; CHECK-NEXT: .long 16777216 # 0x1000000 ; CHECK-NEXT: .long 4 ; CHECK-NEXT: .long 16777248 # 0x1000020 +; CHECK-NEXT: .long 5 # BTF_KIND_VAR(id = 2) +; CHECK-NEXT: .long 234881024 # 0xe000000 +; CHECK-NEXT: .long 1 +; CHECK-NEXT: .long 1 +; CHECK-NEXT: .long 7 # BTF_KIND_DATASEC(id = 3) +; CHECK-NEXT: .long 251658241 # 0xf000001 +; CHECK-NEXT: .long 0 +; CHECK-NEXT: .long 2 +; CHECK-NEXT: .long a +; CHECK-NEXT: .long 4 ; CHECK-NEXT: .byte 0 # string offset=0 ; CHECK-NEXT: .ascii "int" # string offset=1 ; CHECK-NEXT: .byte 0 +; CHECK-NEXT: .byte 97 # string offset=5 +; CHECK-NEXT: .byte 0 +; CHECK-NEXT: .ascii ".data" # string offset=7 +; CHECK-NEXT: .byte 0 !llvm.dbg.cu = !{!2} !llvm.module.flags = !{!7, !8, !9}