[PATCH] D70145: [BPF] generate BTF_KIND_VARs for all non-static globals
Yonghong Song via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Tue Nov 12 14:03:10 PST 2019
yonghong-song created this revision.
yonghong-song added reviewers: ast, anakryiko.
Herald added subscribers: llvm-commits, hiraditya.
Herald added a project: LLVM.
Enable to generate BTF_KIND_VARs for non-static default-section globals which is not allowed previously. Modified the existing test case to accommodate the new change.
Also removed unused linkage enum members VAR_GLOBAL_TENTATIVE and
VAR_GLOBAL_EXTERNAL.
Repository:
rG LLVM Github Monorepo
https://reviews.llvm.org/D70145
Files:
llvm/lib/Target/BPF/BTF.h
llvm/lib/Target/BPF/BTFDebug.cpp
llvm/test/CodeGen/BPF/BTF/global-var-inited.ll
Index: llvm/test/CodeGen/BPF/BTF/global-var-inited.ll
===================================================================
--- llvm/test/CodeGen/BPF/BTF/global-var-inited.ll
+++ 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}
Index: llvm/lib/Target/BPF/BTFDebug.cpp
===================================================================
--- llvm/lib/Target/BPF/BTFDebug.cpp
+++ llvm/lib/Target/BPF/BTFDebug.cpp
@@ -1076,6 +1076,11 @@
SmallVector<DIGlobalVariableExpression *, 1> 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
Index: llvm/lib/Target/BPF/BTF.h
===================================================================
--- llvm/lib/Target/BPF/BTF.h
+++ 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".
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D70145.228956.patch
Type: text/x-patch
Size: 3450 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20191112/fc3b55a9/attachment.bin>
More information about the llvm-commits
mailing list