[llvm] [BOLT][DWARF] Slice .debug_str from the DWP for each CU (PR #159540)
Alexander Yermolovich via llvm-commits
llvm-commits at lists.llvm.org
Sun Nov 2 16:49:14 PST 2025
================
@@ -1723,7 +1723,66 @@ StringRef getSectionName(const SectionRef &Section) {
return Name;
}
-// Extracts an appropriate slice if input is DWP.
+// Exctracts some appropriate slices of .debug_str.dwo from DWP.
+// Updates the .debug_str_offets.dwo for CUs.
+void UpdateStrAndStrOffsets(StringRef StrDWOContent,
+ StringRef StrOffsetsContent,
+ SmallVectorImpl<StringRef> &StrDWOOutData,
+ std::string &StrOffsetsOutData,
+ unsigned DwarfVersion, bool IsLittleEndian) {
+ const llvm::endianness Endian =
+ IsLittleEndian ? llvm::endianness::little : llvm::endianness::big;
+ // ignore DWARF64
+ const uint64_t HeaderOffset = (DwarfVersion >= 5) ? 8 : 0;
+ const uint64_t NumOffsets = (StrOffsetsContent.size() - HeaderOffset) / 4;
+
+ DataExtractor Extractor(StrOffsetsContent, IsLittleEndian, 0);
+ uint64_t ExtractionOffset = HeaderOffset;
+
+ using StringFragment = DWARFUnitIndex::Entry::SectionContribution;
+ auto getStringLength = [](StringRef Content, uint64_t Offset) -> uint64_t {
+ size_t NullPos = Content.find('\0', Offset);
----------------
ayermolo wrote:
const
https://github.com/llvm/llvm-project/pull/159540
More information about the llvm-commits
mailing list