[BOLT] Allow sections in --print-only flag (#109622)

While printing functions, expand --print-only flag to accept section
names. E.g., "--print-only=\.init" will only print functions from
".init" section.
This commit is contained in:
Maksim Panchenko 2024-09-25 23:44:06 +02:00 committed by GitHub
parent 1bfca99909
commit 4db0cc4c55
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 35 additions and 0 deletions

View File

@ -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;
}

View File

@ -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",@progbits
.globl foo
.type foo, %function
foo:
.cfi_startproc
ret
.cfi_endproc
.size foo, .-foo