[BPF] emit BTF sections only if debuginfo available
Currently, without -g, BTF sections may still be emitted with
data sections, e.g., for linux kernel bpf selftest
test_tcp_check_syncookie_kern.c issue discovered by Martin
as shown below.
-bash-4.4$ bpftool btf dump file test_tcp_check_syncookie_kern.o
[1] VAR 'results' type_id=0, linkage=global-alloc
[2] VAR '_license' type_id=0, linkage=global-alloc
[3] DATASEC 'license' size=0 vlen=1
type_id=2 offset=0 size=4
[4] DATASEC 'maps' size=0 vlen=1
type_id=1 offset=0 size=28
Let disable BTF generation if no debuginfo, which is
the original design.
Signed-off-by: Yonghong Song <yhs@fb.com>
Differential Revision: https://reviews.llvm.org/D61826
llvm-svn: 360556
This commit is contained in:
parent
4513929094
commit
98fe9c9869
|
|
@ -54,7 +54,8 @@ public:
|
|||
bool BPFAsmPrinter::doInitialization(Module &M) {
|
||||
AsmPrinter::doInitialization(M);
|
||||
|
||||
if (MAI->doesSupportDebugInformation()) {
|
||||
// Only emit BTF when debuginfo available.
|
||||
if (MAI->doesSupportDebugInformation() && !empty(M.debug_compile_units())) {
|
||||
Handlers.emplace_back(llvm::make_unique<BTFDebug>(this), "emit",
|
||||
"Debug Info Emission", "BTF", "BTF Emission");
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,31 @@
|
|||
; RUN: llc -march=bpfel -filetype=asm -o - %s | FileCheck -check-prefixes=CHECK %s
|
||||
; RUN: llc -march=bpfeb -filetype=asm -o - %s | FileCheck -check-prefixes=CHECK %s
|
||||
|
||||
; Source code:
|
||||
; int g __attribute__((section("maps"))) = 5;
|
||||
; int test() { return g; }
|
||||
; Compilation flag:
|
||||
; clang -target bpf -O2 -S -emit-llvm t.c
|
||||
|
||||
@g = dso_local local_unnamed_addr global i32 5, section "maps", align 4
|
||||
|
||||
; Function Attrs: norecurse nounwind readonly
|
||||
define dso_local i32 @test() local_unnamed_addr #0 {
|
||||
%1 = load i32, i32* @g, align 4, !tbaa !2
|
||||
ret i32 %1
|
||||
}
|
||||
|
||||
; CHECK-NOT: .section .BTF
|
||||
; CHECK-NOT: .section .BTF.ext
|
||||
|
||||
attributes #0 = { norecurse nounwind readonly "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "less-precise-fpmad"="false" "no-frame-pointer-elim"="true" "no-frame-pointer-elim-non-leaf" "no-infs-fp-math"="false" "no-jump-tables"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" }
|
||||
|
||||
!llvm.module.flags = !{!0}
|
||||
!llvm.ident = !{!1}
|
||||
|
||||
!0 = !{i32 1, !"wchar_size", i32 4}
|
||||
!1 = !{!"clang version 8.0.20181009 "}
|
||||
!2 = !{!3, !3, i64 0}
|
||||
!3 = !{!"int", !4, i64 0}
|
||||
!4 = !{!"omnipotent char", !5, i64 0}
|
||||
!5 = !{!"Simple C/C++ TBAA"}
|
||||
Loading…
Reference in New Issue