[llvm] 8a87f42 - [memprof] Print out the segment information in YAML format.
Snehasish Kumar via llvm-commits
llvm-commits at lists.llvm.org
Wed Jun 1 19:26:44 PDT 2022
Author: Snehasish Kumar
Date: 2022-06-02T02:26:39Z
New Revision: 8a87f42fc6ca14d13454465490dbf47333918907
URL: https://github.com/llvm/llvm-project/commit/8a87f42fc6ca14d13454465490dbf47333918907
DIFF: https://github.com/llvm/llvm-project/commit/8a87f42fc6ca14d13454465490dbf47333918907.diff
LOG: [memprof] Print out the segment information in YAML format.
This change prints out the segment information in the raw profile in
YAML format for testing. Since we don't capture build ids yet, we print
out <None> for now.
Reviewed By: tejohnson
Differential Revision: https://reviews.llvm.org/D126840
Added:
Modified:
llvm/lib/ProfileData/RawMemProfReader.cpp
llvm/test/tools/llvm-profdata/memprof-basic.test
llvm/test/tools/llvm-profdata/memprof-inline.test
Removed:
################################################################################
diff --git a/llvm/lib/ProfileData/RawMemProfReader.cpp b/llvm/lib/ProfileData/RawMemProfReader.cpp
index aa9291203201..2c9977c75568 100644
--- a/llvm/lib/ProfileData/RawMemProfReader.cpp
+++ b/llvm/lib/ProfileData/RawMemProfReader.cpp
@@ -18,6 +18,7 @@
#include "llvm/ADT/ArrayRef.h"
#include "llvm/ADT/DenseMap.h"
#include "llvm/ADT/SmallVector.h"
+#include "llvm/ADT/StringExtras.h"
#include "llvm/DebugInfo/DWARF/DWARFContext.h"
#include "llvm/DebugInfo/Symbolize/SymbolizableModule.h"
#include "llvm/DebugInfo/Symbolize/SymbolizableObjectFile.h"
@@ -150,6 +151,21 @@ bool isRuntimePath(const StringRef Path) {
return StringRef(llvm::sys::path::convert_to_slash(Path))
.contains("memprof/memprof_");
}
+
+std::string getBuildIdString(const SegmentEntry &Entry) {
+ constexpr size_t Size = sizeof(Entry.BuildId) / sizeof(uint8_t);
+ constexpr uint8_t Zeros[Size] = {0};
+ // If the build id is unset print a helpful string instead of all zeros.
+ if (memcmp(Entry.BuildId, Zeros, Size) == 0)
+ return "<None>";
+
+ std::string Str;
+ raw_string_ostream OS(Str);
+ for (size_t I = 0; I < Size; I++) {
+ OS << format_hex_no_prefix(Entry.BuildId[I], 2);
+ }
+ return OS.str();
+}
} // namespace
Expected<std::unique_ptr<RawMemProfReader>>
@@ -217,6 +233,15 @@ void RawMemProfReader::printYAML(raw_ostream &OS) {
OS << " NumMibInfo: " << NumMibInfo << "\n";
OS << " NumAllocFunctions: " << NumAllocFunctions << "\n";
OS << " NumStackOffsets: " << StackMap.size() << "\n";
+ // Print out the segment information.
+ OS << " Segments:\n";
+ for (const auto &Entry : SegmentInfo) {
+ OS << " -\n";
+ OS << " BuildId: " << getBuildIdString(Entry) << "\n";
+ OS << " Start: 0x" << llvm::utohexstr(Entry.Start) << "\n";
+ OS << " End: 0x" << llvm::utohexstr(Entry.End) << "\n";
+ OS << " Offset: 0x" << llvm::utohexstr(Entry.Offset) << "\n";
+ }
// Print out the merged contents of the profiles.
OS << " Records:\n";
for (const auto &Entry : *this) {
diff --git a/llvm/test/tools/llvm-profdata/memprof-basic.test b/llvm/test/tools/llvm-profdata/memprof-basic.test
index cd2b607ff5eb..b0086fbc7ea3 100644
--- a/llvm/test/tools/llvm-profdata/memprof-basic.test
+++ b/llvm/test/tools/llvm-profdata/memprof-basic.test
@@ -43,6 +43,52 @@ CHECK-NEXT: NumSegments: 9
CHECK-NEXT: NumMibInfo: 2
CHECK-NEXT: NumAllocFunctions: 1
CHECK-NEXT: NumStackOffsets: 2
+CHECK-NEXT: Segments:
+CHECK-NEXT: -
+CHECK-NEXT: BuildId: <None>
+CHECK-NEXT: Start: 0x200000
+CHECK-NEXT: End: 0x298000
+CHECK-NEXT: Offset: 0x0
+CHECK-NEXT: -
+CHECK-NEXT: BuildId: <None>
+CHECK-NEXT: Start: 0x7FFFF7C7C000
+CHECK-NEXT: End: 0x7FFFF7DC5000
+CHECK-NEXT: Offset: 0x26000
+CHECK-NEXT: -
+CHECK-NEXT: BuildId: <None>
+CHECK-NEXT: Start: 0x7FFFF7E1E000
+CHECK-NEXT: End: 0x7FFFF7E30000
+CHECK-NEXT: Offset: 0x3000
+CHECK-NEXT: -
+CHECK-NEXT: BuildId: <None>
+CHECK-NEXT: Start: 0x7FFFF7E36000
+CHECK-NEXT: End: 0x7FFFF7E38000
+CHECK-NEXT: Offset: 0x1000
+CHECK-NEXT: -
+CHECK-NEXT: BuildId: <None>
+CHECK-NEXT: Start: 0x7FFFF7E4A000
+CHECK-NEXT: End: 0x7FFFF7EE5000
+CHECK-NEXT: Offset: 0xF000
+CHECK-NEXT: -
+CHECK-NEXT: BuildId: <None>
+CHECK-NEXT: Start: 0x7FFFF7F83000
+CHECK-NEXT: End: 0x7FFFF7F87000
+CHECK-NEXT: Offset: 0x3000
+CHECK-NEXT: -
+CHECK-NEXT: BuildId: <None>
+CHECK-NEXT: Start: 0x7FFFF7F92000
+CHECK-NEXT: End: 0x7FFFF7FA1000
+CHECK-NEXT: Offset: 0x7000
+CHECK-NEXT: -
+CHECK-NEXT: BuildId: <None>
+CHECK-NEXT: Start: 0x7FFFF7FD0000
+CHECK-NEXT: End: 0x7FFFF7FD2000
+CHECK-NEXT: Offset: 0x0
+CHECK-NEXT: -
+CHECK-NEXT: BuildId: <None>
+CHECK-NEXT: Start: 0x7FFFF7FD3000
+CHECK-NEXT: End: 0x7FFFF7FF3000
+CHECK-NEXT: Offset: 0x1000
CHECK-NEXT: Records:
CHECK-NEXT: -
CHECK-NEXT: FunctionGUID: {{[0-9]+}}
diff --git a/llvm/test/tools/llvm-profdata/memprof-inline.test b/llvm/test/tools/llvm-profdata/memprof-inline.test
index 49f39ac65a33..a08af1d4873c 100644
--- a/llvm/test/tools/llvm-profdata/memprof-inline.test
+++ b/llvm/test/tools/llvm-profdata/memprof-inline.test
@@ -44,6 +44,52 @@ CHECK-NEXT: NumSegments: 9
CHECK-NEXT: NumMibInfo: 2
CHECK-NEXT: NumAllocFunctions: 2
CHECK-NEXT: NumStackOffsets: 1
+CHECK-NEXT: Segments:
+CHECK-NEXT: -
+CHECK-NEXT: BuildId: <None>
+CHECK-NEXT: Start: 0x200000
+CHECK-NEXT: End: 0x29B000
+CHECK-NEXT: Offset: 0x0
+CHECK-NEXT: -
+CHECK-NEXT: BuildId: <None>
+CHECK-NEXT: Start: 0x7F5871485000
+CHECK-NEXT: End: 0x7F58715CD000
+CHECK-NEXT: Offset: 0x26000
+CHECK-NEXT: -
+CHECK-NEXT: BuildId: <None>
+CHECK-NEXT: Start: 0x7F587162D000
+CHECK-NEXT: End: 0x7F587163F000
+CHECK-NEXT: Offset: 0x3000
+CHECK-NEXT: -
+CHECK-NEXT: BuildId: <None>
+CHECK-NEXT: Start: 0x7F5871646000
+CHECK-NEXT: End: 0x7F5871648000
+CHECK-NEXT: Offset: 0x2000
+CHECK-NEXT: -
+CHECK-NEXT: BuildId: <None>
+CHECK-NEXT: Start: 0x7F587165A000
+CHECK-NEXT: End: 0x7F58716F4000
+CHECK-NEXT: Offset: 0xF000
+CHECK-NEXT: -
+CHECK-NEXT: BuildId: <None>
+CHECK-NEXT: Start: 0x7F5871791000
+CHECK-NEXT: End: 0x7F5871795000
+CHECK-NEXT: Offset: 0x3000
+CHECK-NEXT: -
+CHECK-NEXT: BuildId: <None>
+CHECK-NEXT: Start: 0x7F58717A0000
+CHECK-NEXT: End: 0x7F58717AF000
+CHECK-NEXT: Offset: 0x7000
+CHECK-NEXT: -
+CHECK-NEXT: BuildId: <None>
+CHECK-NEXT: Start: 0x7F58717D6000
+CHECK-NEXT: End: 0x7F58717FA000
+CHECK-NEXT: Offset: 0x1000
+CHECK-NEXT: -
+CHECK-NEXT: BuildId: <None>
+CHECK-NEXT: Start: 0x7FFFC77BD000
+CHECK-NEXT: End: 0x7FFFC77BF000
+CHECK-NEXT: Offset: 0x0
CHECK-NEXT: Records:
CHECK-NEXT: -
CHECK-NEXT: FunctionGUID: 15505678318020221912
More information about the llvm-commits
mailing list