[llvm] [BOLT] Allow sections in --print-only flag (PR #109622)
via llvm-commits
llvm-commits at lists.llvm.org
Mon Sep 23 00:35:01 PDT 2024
llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-bolt
Author: Maksim Panchenko (maksfb)
<details>
<summary>Changes</summary>
While printing functions, expand --print-only flag to accept section names. E.g., "--print-only=\.init" will only print functions from ".init" section.
---
Full diff: https://github.com/llvm/llvm-project/pull/109622.diff
2 Files Affected:
- (modified) bolt/lib/Core/BinaryFunction.cpp (+6)
- (added) bolt/test/X86/print-only-section.s (+29)
``````````diff
diff --git a/bolt/lib/Core/BinaryFunction.cpp b/bolt/lib/Core/BinaryFunction.cpp
index 46bdf208be6ad3..36c42fced93d08 100644
--- a/bolt/lib/Core/BinaryFunction.cpp
+++ b/bolt/lib/Core/BinaryFunction.cpp
@@ -165,6 +165,12 @@ bool shouldPrint(const BinaryFunction &Function) {
}
}
+ std::optional<StringRef> Origin = Function.getOriginSectionName();
+ if (Origin && llvm::any_of(opts::PrintOnly, [&](const std::string &Name) {
+ return Name == *Origin;
+ }))
+ return true;
+
return false;
}
diff --git a/bolt/test/X86/print-only-section.s b/bolt/test/X86/print-only-section.s
new file mode 100644
index 00000000000000..d580818ca4fc69
--- /dev/null
+++ b/bolt/test/X86/print-only-section.s
@@ -0,0 +1,29 @@
+## Check that --print-only flag works with sections.
+
+# REQUIRES: system-linux
+
+# RUN: llvm-mc -filetype=obj -triple x86_64-unknown-linux %s -o %t.o
+# RUN: ld.lld %t.o -o %t.exe
+# RUN: llvm-bolt %t.exe -o %t.out --print-cfg --print-only=unused_code 2>&1 \
+# RUN: | FileCheck %s
+
+# CHECK: Binary Function "foo"
+# CHECK-NOT: Binary Function "_start"
+
+ .text
+ .globl _start
+ .type _start, %function
+_start:
+ .cfi_startproc
+ ret
+ .cfi_endproc
+ .size _start, .-_start
+
+ .section unused_code,"ax", at progbits
+ .globl foo
+ .type foo, %function
+foo:
+ .cfi_startproc
+ ret
+ .cfi_endproc
+ .size foo, .-foo
``````````
</details>
https://github.com/llvm/llvm-project/pull/109622
More information about the llvm-commits
mailing list