[llvm] 1f83fdb - Revert "[llvm-profgen] Support [buildid:]0xaddr format in perfscript input" (#195551)
via llvm-commits
llvm-commits at lists.llvm.org
Sun May 3 14:34:43 PDT 2026
Author: Thurston Dang
Date: 2026-05-03T14:34:38-07:00
New Revision: 1f83fdbb10e8ace8b9c9aed0c472bb65a2f9b4e8
URL: https://github.com/llvm/llvm-project/commit/1f83fdbb10e8ace8b9c9aed0c472bb65a2f9b4e8
DIFF: https://github.com/llvm/llvm-project/commit/1f83fdbb10e8ace8b9c9aed0c472bb65a2f9b4e8.diff
LOG: Revert "[llvm-profgen] Support [buildid:]0xaddr format in perfscript input" (#195551)
Reverts llvm/llvm-project#190863 due to buildbot breakage e.g.,
https://lab.llvm.org/buildbot/#/builders/52/builds/16951
```
Failed Tests (1):
LLVM :: tools/llvm-profgen/filter-build-id.test
```
```
==llvm-profgen==3809550==ERROR: AddressSanitizer: container-overflow on address 0x6e80441e1762 at pc 0x6216c3f2cdce bp 0x7fff3c3ddf60 sp 0x7fff3c3dd710
READ of size 8 at 0x6e80441e1762 thread T0
#0 0x6216c3f2cdcd in MemcmpInterceptorCommon(void*, int (*)(void const*, void const*, unsigned long), void const*, void const*, unsigned long) /home/b/sanitizer-x86_64-linux-bootstrap-asan/build/llvm-project/compiler-rt/lib/asan/../sanitizer_common/sanitizer_common_interceptors.inc:848:7
#1 0x6216c3f2d25c in bcmp /home/b/sanitizer-x86_64-linux-bootstrap-asan/build/llvm-project/compiler-rt/lib/asan/../sanitizer_common/sanitizer_common_interceptors.inc:894:10
#2 0x6216c400b836 in operator== /home/b/sanitizer-x86_64-linux-bootstrap-asan/build/llvm-project/llvm/include/llvm/ADT/StringRef.h:914:10
#3 0x6216c400b836 in operator!= /home/b/sanitizer-x86_64-linux-bootstrap-asan/build/llvm-project/llvm/include/llvm/ADT/StringRef.h:917:69
#4 0x6216c400b836 in llvm::sampleprof::PerfScriptReader::extractCallstack(llvm::sampleprof::TraceStream&, llvm::SmallVectorImpl<unsigned long>&) /home/b/sanitizer-x86_64-linux-bootstrap-asan/build/llvm-project/llvm/tools/llvm-profgen/PerfReader.cpp:801:36
#5 0x6216c400d37a in llvm::sampleprof::HybridPerfReader::parseSample(llvm::sampleprof::TraceStream&, unsigned long) /home/b/sanitizer-x86_64-linux-bootstrap-asan/build/llvm-project/llvm/tools/llvm-profgen/PerfReader.cpp:881:8
#6 0x6216c40150d8 in parseSample /home/b/sanitizer-x86_64-linux-bootstrap-asan/build/llvm-project/llvm/tools/llvm-profgen/PerfReader.cpp:1118:3
#7 0x6216c40150d8 in llvm::sampleprof::PerfScriptReader::parseEventOrSample(llvm::sampleprof::TraceStream&) /home/b/sanitizer-x86_64-linux-bootstrap-asan/build/llvm-project/llvm/tools/llvm-profgen/PerfReader.cpp:1201:5
#8 0x6216c401539a in llvm::sampleprof::PerfScriptReader::parseAndAggregateTrace() /home/b/sanitizer-x86_64-linux-bootstrap-asan/build/llvm-project/llvm/tools/llvm-profgen/PerfReader.cpp:1210:5
#9 0x6216c4018c88 in llvm::sampleprof::PerfScriptReader::parsePerfTraces() /home/b/sanitizer-x86_64-linux-bootstrap-asan/build/llvm-project/llvm/tools/llvm-profgen/PerfReader.cpp:1457:3
#10 0x6216c3ff2c7a in main /home/b/sanitizer-x86_64-linux-bootstrap-asan/build/llvm-project/llvm/tools/llvm-profgen/llvm-profgen.cpp:229:19
#11 0x72404502a8c0 (/usr/lib/x86_64-linux-gnu/libc.so.6+0x2a8c0) (BuildId: ae327f26c123ea1374623c41e676a4bf00e5c1cb)
#12 0x72404502a9d7 in __libc_start_main (/usr/lib/x86_64-linux-gnu/libc.so.6+0x2a9d7) (BuildId: ae327f26c123ea1374623c41e676a4bf00e5c1cb)
#13 0x6216c3f0f3d4 in _start (/home/b/sanitizer-x86_64-linux-bootstrap-asan/build/llvm_build_asan/bin/llvm-profgen+0x2f083d4)
0x6e80441e1762 is located 18 bytes inside of 48-byte region [0x6e80441e1750,0x6e80441e1780)
allocated by thread T0 here:
#0 0x6216c3feab0d in operator new(unsigned long) /home/b/sanitizer-x86_64-linux-bootstrap-asan/build/llvm-project/compiler-rt/lib/asan/asan_new_delete.cpp:109:35
#1 0x724045511c07 in __libcpp_allocate<char> /home/b/sanitizer-x86_64-linux-bootstrap-asan/build/llvm-project/libcxx/include/__new/allocate.h:42:28
#2 0x724045511c07 in allocate /home/b/sanitizer-x86_64-linux-bootstrap-asan/build/llvm-project/libcxx/include/__memory/allocator.h:92:14
#3 0x724045511c07 in allocate_at_least /home/b/sanitizer-x86_64-linux-bootstrap-asan/build/llvm-project/libcxx/include/__memory/allocator.h:99:13
#4 0x724045511c07 in allocate_at_least<std::__1::allocator<char> > /home/b/sanitizer-x86_64-linux-bootstrap-asan/build/llvm-project/libcxx/include/__memory/allocator_traits.h:340:22
#5 0x724045511c07 in __allocate_at_least<std::__1::allocator<char> > /home/b/sanitizer-x86_64-linux-bootstrap-asan/build/llvm-project/libcxx/include/__memory/allocate_at_least.h:36:16
#6 0x724045511c07 in __allocate_long_buffer /home/b/sanitizer-x86_64-linux-bootstrap-asan/build/llvm-project/libcxx/include/string:2259:21
#7 0x724045511c07 in std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>::__grow_by(unsigned long, unsigned long, unsigned long, unsigned long, unsigned long, unsigned long) /home/b/sanitizer-x86_64-linux-bootstrap-asan/build/llvm-project/libcxx/include/string:2769:25
#8 0x6216c401d90a in __grow_by_without_replace /home/b/sanitizer-x86_64-linux-bootstrap-asan/build/libcxx_install_asan/include/c++/v1/string:2795:3
#9 0x6216c401d90a in std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>& std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>::append[abi:sqn230000]<char const*, 0>(char const*, char const*) /home/b/sanitizer-x86_64-linux-bootstrap-asan/build/libcxx_install_asan/include/c++/v1/string:1431:9
#10 0x6216c401d1a6 in std::__1::basic_istream<char, std::__1::char_traits<char>>& std::__1::getline[abi:sqn230000]<char, std::__1::char_traits<char>, std::__1::allocator<char>>(std::__1::basic_istream<char, std::__1::char_traits<char>>&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>&, char) /home/b/sanitizer-x86_64-linux-bootstrap-asan/build/libcxx_install_asan/include/c++/v1/istream:1309:15
#11 0x6216c4014a76 in getline<char, std::__1::char_traits<char>, std::__1::allocator<char> > /home/b/sanitizer-x86_64-linux-bootstrap-asan/build/libcxx_install_asan/include/c++/v1/istream:1343:10
#12 0x6216c4014a76 in advance /home/b/sanitizer-x86_64-linux-bootstrap-asan/build/llvm-project/llvm/tools/llvm-profgen/PerfReader.h:52:10
#13 0x6216c4014a76 in llvm::sampleprof::PerfScriptReader::parseAggregatedCount(llvm::sampleprof::TraceStream&) /home/b/sanitizer-x86_64-linux-bootstrap-asan/build/llvm-project/llvm/tools/llvm-profgen/PerfReader.cpp:1110:13
#14 0x6216c4015095 in parseSample /home/b/sanitizer-x86_64-linux-bootstrap-asan/build/llvm-project/llvm/tools/llvm-profgen/PerfReader.cpp:1116:20
#15 0x6216c4015095 in llvm::sampleprof::PerfScriptReader::parseEventOrSample(llvm::sampleprof::TraceStream&) /home/b/sanitizer-x86_64-linux-bootstrap-asan/build/llvm-project/llvm/tools/llvm-profgen/PerfReader.cpp:1201:5
#16 0x6216c401539a in llvm::sampleprof::PerfScriptReader::parseAndAggregateTrace() /home/b/sanitizer-x86_64-linux-bootstrap-asan/build/llvm-project/llvm/tools/llvm-profgen/PerfReader.cpp:1210:5
#17 0x6216c4018c88 in llvm::sampleprof::PerfScriptReader::parsePerfTraces() /home/b/sanitizer-x86_64-linux-bootstrap-asan/build/llvm-project/llvm/tools/llvm-profgen/PerfReader.cpp:1457:3
#18 0x6216c3ff2c7a in main /home/b/sanitizer-x86_64-linux-bootstrap-asan/build/llvm-project/llvm/tools/llvm-profgen/llvm-profgen.cpp:229:19
#19 0x72404502a8c0 (/usr/lib/x86_64-linux-gnu/libc.so.6+0x2a8c0) (BuildId: ae327f26c123ea1374623c41e676a4bf00e5c1cb)
#20 0x72404502a9d7 in __libc_start_main (/usr/lib/x86_64-linux-gnu/libc.so.6+0x2a9d7) (BuildId: ae327f26c123ea1374623c41e676a4bf00e5c1cb)
#21 0x6216c3f0f3d4 in _start (/home/b/sanitizer-x86_64-linux-bootstrap-asan/build/llvm_build_asan/bin/llvm-profgen+0x2f083d4)
```
Added:
Modified:
llvm/tools/llvm-profgen/PerfReader.cpp
Removed:
llvm/test/tools/llvm-profgen/Inputs/buildid-cs-noprobe.aggperfscript
llvm/test/tools/llvm-profgen/Inputs/buildid-cs-noprobe.perfscript
llvm/test/tools/llvm-profgen/filter-build-id.test
################################################################################
diff --git a/llvm/test/tools/llvm-profgen/Inputs/buildid-cs-noprobe.aggperfscript b/llvm/test/tools/llvm-profgen/Inputs/buildid-cs-noprobe.aggperfscript
deleted file mode 100644
index 9dbd2725c8e4d..0000000000000
--- a/llvm/test/tools/llvm-profgen/Inputs/buildid-cs-noprobe.aggperfscript
+++ /dev/null
@@ -1,11 +0,0 @@
-2
- aabb1122:4005dc
- aabb1122:400634
- aabb1122:400684
- 7f68c5788793
- aabb1122:0x4005c8/aabb1122:0x4005dc aabb1122:0x40062f/aabb1122:0x4005b0 aabb1122:0x400645/aabb1122:0x4005ff aabb1122:0x400637/aabb1122:0x400645 aabb1122:0x4005e9/aabb1122:0x400634 aabb1122:0x4005d7/aabb1122:0x4005e5 aabb1122:0x40062f/aabb1122:0x4005b0 aabb1122:0x400645/aabb1122:0x4005ff aabb1122:0x400637/aabb1122:0x400645 aabb1122:0x4005e9/aabb1122:0x400634 aabb1122:0x4005d7/aabb1122:0x4005e5 aabb1122:0x40062f/aabb1122:0x4005b0 aabb1122:0x400645/aabb1122:0x4005ff aabb1122:0x400637/aabb1122:0x400645 aabb1122:0x4005e9/aabb1122:0x400634 aabb1122:0x4005c8/aabb1122:0x4005dc
-2
- aabb1122:4005b0
- aabb1122:400684
- 7f68c5788793
- aabb1122:0x40062f/aabb1122:0x4005b0 aabb1122:0x400645/aabb1122:0x4005ff aabb1122:0x400637/aabb1122:0x400645 aabb1122:0x4005e9/aabb1122:0x400634 aabb1122:0x4005c8/aabb1122:0x4005dc aabb1122:0x40062f/aabb1122:0x4005b0 aabb1122:0x400645/aabb1122:0x4005ff aabb1122:0x400637/aabb1122:0x400645 aabb1122:0x4005e9/aabb1122:0x400634 aabb1122:0x4005d7/aabb1122:0x4005e5 aabb1122:0x40062f/aabb1122:0x4005b0 aabb1122:0x400645/aabb1122:0x4005ff aabb1122:0x400637/aabb1122:0x400645 aabb1122:0x4005e9/aabb1122:0x400634 aabb1122:0x4005d7/aabb1122:0x4005e5 aabb1122:0x40062f/aabb1122:0x4005b0
diff --git a/llvm/test/tools/llvm-profgen/Inputs/buildid-cs-noprobe.perfscript b/llvm/test/tools/llvm-profgen/Inputs/buildid-cs-noprobe.perfscript
deleted file mode 100644
index fdc5c721b91a6..0000000000000
--- a/llvm/test/tools/llvm-profgen/Inputs/buildid-cs-noprobe.perfscript
+++ /dev/null
@@ -1,9 +0,0 @@
- aabb1122:4005dc
- aabb1122:400634
- aabb1122:400684
- 7f68c5788793
- aabb1122:0x4005c8/aabb1122:0x4005dc aabb1122:0x40062f/aabb1122:0x4005b0 aabb1122:0x400645/aabb1122:0x4005ff aabb1122:0x400637/aabb1122:0x400645 aabb1122:0x4005e9/aabb1122:0x400634 aabb1122:0x4005d7/aabb1122:0x4005e5 aabb1122:0x40062f/aabb1122:0x4005b0 aabb1122:0x400645/aabb1122:0x4005ff aabb1122:0x400637/aabb1122:0x400645 aabb1122:0x4005e9/aabb1122:0x400634 aabb1122:0x4005d7/aabb1122:0x4005e5 aabb1122:0x40062f/aabb1122:0x4005b0 aabb1122:0x400645/aabb1122:0x4005ff aabb1122:0x400637/aabb1122:0x400645 aabb1122:0x4005e9/aabb1122:0x400634 aabb1122:0x4005c8/aabb1122:0x4005dc
- aabb1122:4005b0
- aabb1122:400684
- 7f68c5788793
- aabb1122:0x40062f/aabb1122:0x4005b0 aabb1122:0x400645/aabb1122:0x4005ff aabb1122:0x400637/aabb1122:0x400645 aabb1122:0x4005e9/aabb1122:0x400634 aabb1122:0x4005c8/aabb1122:0x4005dc aabb1122:0x40062f/aabb1122:0x4005b0 aabb1122:0x400645/aabb1122:0x4005ff aabb1122:0x400637/aabb1122:0x400645 aabb1122:0x4005e9/aabb1122:0x400634 aabb1122:0x4005d7/aabb1122:0x4005e5 aabb1122:0x40062f/aabb1122:0x4005b0 aabb1122:0x400645/aabb1122:0x4005ff aabb1122:0x400637/aabb1122:0x400645 aabb1122:0x4005e9/aabb1122:0x400634 aabb1122:0x4005d7/aabb1122:0x4005e5 aabb1122:0x40062f/aabb1122:0x4005b0
diff --git a/llvm/test/tools/llvm-profgen/filter-build-id.test b/llvm/test/tools/llvm-profgen/filter-build-id.test
deleted file mode 100644
index 498d3b8f7ba4d..0000000000000
--- a/llvm/test/tools/llvm-profgen/filter-build-id.test
+++ /dev/null
@@ -1,57 +0,0 @@
-; REQUIRES: x86_64-linux
-; Test that [buildid:]0xaddr format is correctly parsed in hybrid perfscript
-; input. Both callstack frames and LBR entries may carry buildid prefixes.
-
-;; Test 1: Hybrid perfscript with buildid prefix on callstack frames and
-;; LBR entries, using --filter-build-id to match "aabb1122".
-; RUN: llvm-profgen --format=text --perfscript=%S/Inputs/buildid-cs-noprobe.aggperfscript --binary=%S/Inputs/noinline-cs-noprobe.perfbin --output=%t --skip-symbolization --profile-summary-cold-count=0 --filter-build-id=aabb1122
-; RUN: FileCheck %s --input-file %t --check-prefix=CHECK-HYBRID
-
-; CHECK-HYBRID: [foo]
-; CHECK-HYBRID-NEXT: 3
-; CHECK-HYBRID-NEXT: 5ff-62f:6
-; CHECK-HYBRID-NEXT: 634-637:6
-; CHECK-HYBRID-NEXT: 645-645:6
-; CHECK-HYBRID-NEXT: 3
-; CHECK-HYBRID-NEXT: 62f->5b0:6
-; CHECK-HYBRID-NEXT: 637->645:6
-; CHECK-HYBRID-NEXT: 645->5ff:6
-; CHECK-HYBRID-NEXT: [foo:3 @ bar]
-; CHECK-HYBRID-NEXT: 4
-; CHECK-HYBRID-NEXT: 5b0-5c8:2
-; CHECK-HYBRID-NEXT: 5b0-5d7:4
-; CHECK-HYBRID-NEXT: 5dc-5e9:2
-; CHECK-HYBRID-NEXT: 5e5-5e9:4
-; CHECK-HYBRID-NEXT: 3
-; CHECK-HYBRID-NEXT: 5c8->5dc:4
-; CHECK-HYBRID-NEXT: 5d7->5e5:4
-; CHECK-HYBRID-NEXT: 5e9->634:6
-
-;; Test 2: Non-pre-aggregated perfscript with buildid prefix (no leading count).
-; RUN: llvm-profgen --format=text --perfscript=%S/Inputs/buildid-cs-noprobe.perfscript --binary=%S/Inputs/noinline-cs-noprobe.perfbin --output=%t2 --skip-symbolization --profile-summary-cold-count=0 --filter-build-id=aabb1122
-; RUN: FileCheck %s --input-file %t2 --check-prefix=CHECK-NOAGG
-
-; CHECK-NOAGG: [foo]
-; CHECK-NOAGG-NEXT: 3
-; CHECK-NOAGG-NEXT: 5ff-62f:3
-; CHECK-NOAGG-NEXT: 634-637:3
-; CHECK-NOAGG-NEXT: 645-645:3
-; CHECK-NOAGG-NEXT: 3
-; CHECK-NOAGG-NEXT: 62f->5b0:3
-; CHECK-NOAGG-NEXT: 637->645:3
-; CHECK-NOAGG-NEXT: 645->5ff:3
-; CHECK-NOAGG-NEXT: [foo:3 @ bar]
-; CHECK-NOAGG-NEXT: 4
-; CHECK-NOAGG-NEXT: 5b0-5c8:1
-; CHECK-NOAGG-NEXT: 5b0-5d7:2
-; CHECK-NOAGG-NEXT: 5dc-5e9:1
-; CHECK-NOAGG-NEXT: 5e5-5e9:2
-; CHECK-NOAGG-NEXT: 3
-; CHECK-NOAGG-NEXT: 5c8->5dc:2
-; CHECK-NOAGG-NEXT: 5d7->5e5:2
-; CHECK-NOAGG-NEXT: 5e9->634:3
-
-;; Test 3: With non-matching filter, callstack frames are filtered out,
-;; resulting in no samples.
-; RUN: llvm-profgen --format=text --perfscript=%S/Inputs/buildid-cs-noprobe.aggperfscript --binary=%S/Inputs/noinline-cs-noprobe.perfbin --output=%t3 --skip-symbolization --filter-build-id=ccdd3344 2>&1 | FileCheck %s --check-prefix=CHECK-NOMATCH
-; CHECK-NOMATCH: warning: No samples in perf script!
diff --git a/llvm/tools/llvm-profgen/PerfReader.cpp b/llvm/tools/llvm-profgen/PerfReader.cpp
index 75909f3083e03..d61c70e69d6e9 100644
--- a/llvm/tools/llvm-profgen/PerfReader.cpp
+++ b/llvm/tools/llvm-profgen/PerfReader.cpp
@@ -69,13 +69,6 @@ cl::opt<bool> TimeProfGen("time-profgen", cl::desc("Time llvm-profgen phases"),
static const char *TimerGroupName = "profgen";
static const char *TimerGroupDesc = "llvm-profgen";
-static cl::opt<std::string> FilterBuildID(
- "filter-build-id",
- cl::desc("Override auto-detected build ID for filtering perfscript "
- "addresses in [buildid:]addr format. When set, only addresses "
- "with a matching build ID prefix are kept."),
- cl::cat(ProfGenCategory));
-
namespace sampleprof {
void VirtualUnwinder::unwindCall(UnwindState &State) {
@@ -672,37 +665,12 @@ void HybridPerfReader::unwindSamples() {
}
/// Parse a hex address from \p Str.
-/// Parse an optional [buildid:] prefix into \p BuildID.
-static bool parseAddress(StringRef Str, uint64_t &Addr, bool HasPrefix,
- StringRef &BuildID) {
- size_t ColonPos = Str.find(':');
- if (ColonPos != StringRef::npos) {
- BuildID = Str.substr(0, ColonPos);
- Str = Str.substr(ColonPos + 1);
- }
+static bool parseAddress(StringRef Str, uint64_t &Addr, bool HasPrefix) {
if (Str.consume_front("0x") != HasPrefix)
return true;
return Str.getAsInteger(16, Addr);
}
-/// Return the build ID to use for filtering perfscript addresses.
-/// If --filter-build-id is specified, use it as an override (with a warning
-/// if it doesn't match the binary's auto-detected build ID).
-/// Otherwise, use the auto-detected value from the binary.
-static StringRef getFilterBuildID(const ProfiledBinary *Binary) {
- StringRef BinaryBuildID = Binary->getFilterBuildID();
- if (FilterBuildID.getNumOccurrences() == 0)
- return BinaryBuildID;
- static bool Warned = false;
- if (!Warned && !BinaryBuildID.empty() && FilterBuildID != BinaryBuildID) {
- WithColor::warning() << "--filter-build-id=" << FilterBuildID
- << " does not match binary build ID " << BinaryBuildID
- << "\n";
- Warned = true;
- }
- return FilterBuildID;
-}
-
bool PerfScriptReader::extractLBRStack(TraceStream &TraceIt,
SmallVectorImpl<LBREntry> &LBRStack) {
// The raw format of LBR stack is like:
@@ -720,9 +688,8 @@ bool PerfScriptReader::extractLBRStack(TraceStream &TraceIt,
// Skip the leading instruction pointer.
size_t Index = 0;
uint64_t LeadingAddr;
- StringRef LeadingBuildID;
if (!Records.empty() && !Records[0].contains('/')) {
- if (parseAddress(Records[0], LeadingAddr, false, LeadingBuildID)) {
+ if (parseAddress(Records[0], LeadingAddr, false)) {
WarnInvalidLBR(TraceIt);
TraceIt.advance();
return false;
@@ -742,12 +709,10 @@ bool PerfScriptReader::extractLBRStack(TraceStream &TraceIt,
Token.split(Addresses, "/");
uint64_t Src;
uint64_t Dst;
- StringRef SrcBuildID, DstBuildID;
// Stop at broken LBR records.
- if (Addresses.size() < 2 ||
- parseAddress(Addresses[0], Src, true, SrcBuildID) ||
- parseAddress(Addresses[1], Dst, true, DstBuildID)) {
+ if (Addresses.size() < 2 || parseAddress(Addresses[0], Src, true) ||
+ parseAddress(Addresses[1], Dst, true)) {
WarnInvalidLBR(TraceIt);
break;
}
@@ -755,12 +720,8 @@ bool PerfScriptReader::extractLBRStack(TraceStream &TraceIt,
// Canonicalize to use preferred load address as base address.
Src = Binary->canonicalizeVirtualAddress(Src);
Dst = Binary->canonicalizeVirtualAddress(Dst);
- // Filter by build ID.
- StringRef BinaryBuildID = getFilterBuildID(Binary);
- bool SrcIsInternal =
- SrcBuildID == BinaryBuildID && Binary->addressIsCode(Src);
- bool DstIsInternal =
- DstBuildID == BinaryBuildID && Binary->addressIsCode(Dst);
+ bool SrcIsInternal = Binary->addressIsCode(Src);
+ bool DstIsInternal = Binary->addressIsCode(Dst);
if (!SrcIsInternal)
Src = ExternalAddr;
if (!DstIsInternal)
@@ -778,17 +739,16 @@ bool PerfScriptReader::extractLBRStack(TraceStream &TraceIt,
bool PerfScriptReader::extractCallstack(TraceStream &TraceIt,
SmallVectorImpl<uint64_t> &CallStack) {
// The raw format of call stack is like:
- // 4005dc # leaf frame (no buildid)
+ // 4005dc # leaf frame
// 400634
- // deadbeef:400684 # root frame (with buildid prefix)
+ // 400684 # root frame
// It's in bottom-up order with each frame in one line.
// Extract stack frames from sample
while (!TraceIt.isAtEoF() && !isLBRSample(TraceIt.getCurrentLine(), true)) {
StringRef FrameStr = TraceIt.getCurrentLine().ltrim();
uint64_t FrameAddr = 0;
- StringRef FrameBuildID;
- if (parseAddress(FrameStr, FrameAddr, false, FrameBuildID)) {
+ if (parseAddress(FrameStr, FrameAddr, false)) {
// We might parse a non-perf sample line like empty line and comments,
// skip it
TraceIt.advance();
@@ -798,9 +758,7 @@ bool PerfScriptReader::extractCallstack(TraceStream &TraceIt,
FrameAddr = Binary->canonicalizeVirtualAddress(FrameAddr);
// Currently intermixed frame from
diff erent binaries is not supported.
- bool IsExternal = FrameBuildID != getFilterBuildID(Binary) ||
- !Binary->addressIsCode(FrameAddr);
- if (IsExternal) {
+ if (!Binary->addressIsCode(FrameAddr)) {
if (CallStack.empty())
NumLeafExternalFrame++;
// Push a special value(ExternalAddr) for the external frames so that
@@ -1213,7 +1171,7 @@ void PerfScriptReader::parseAndAggregateTrace() {
// A LBR sample is like:
// 40062f 0x5c6313f/0x5c63170/P/-/-/0 0x5c630e7/0x5c63130/P/-/-/0 ...
// A heuristic for fast detection by checking whether a
-// leading " 0x" or " buildid:0x" and the '/' exist.
+// leading " 0x" and the '/' exist.
bool PerfScriptReader::isLBRSample(StringRef Line, bool CheckLineStart) {
// Skip the leading instruction pointer
SmallVector<StringRef, 32> Records;
@@ -1222,8 +1180,7 @@ bool PerfScriptReader::isLBRSample(StringRef Line, bool CheckLineStart) {
Line.split(Records, " ", 2, CheckLineStart);
if (Records.size() < 2)
return false;
- if ((Records[1].starts_with("0x") || Records[1].contains(":0x")) &&
- Records[1].contains('/'))
+ if (Records[1].starts_with("0x") && Records[1].contains('/'))
return true;
return false;
}
@@ -1261,10 +1218,8 @@ PerfContent PerfScriptReader::checkPerfScriptType(StringRef FileName) {
// Detect sample with call stack
int32_t Count = 0;
- StringRef FrameBuildId;
while (!TraceIt.isAtEoF() &&
- !parseAddress(TraceIt.getCurrentLine().ltrim(), FrameAddr, false,
- FrameBuildId)) {
+ !parseAddress(TraceIt.getCurrentLine().ltrim(), FrameAddr, false)) {
Count++;
TraceIt.advance();
}
More information about the llvm-commits
mailing list