[Lldb-commits] [lldb] [lldb][DWARF] Sort ranges list in dwarf 5. (PR #91343)
via lldb-commits
lldb-commits at lists.llvm.org
Tue May 7 07:56:32 PDT 2024
llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-lldb
Author: Zequan Wu (ZequanWu)
<details>
<summary>Changes</summary>
Dwarf 5 says "There is no requirement that the entries be ordered in any particular way" in 2.17.3 Non-Contiguous Address Ranges for rnglist. Some places assume the ranges are already sorted but it's not. This fixes it.
---
Full diff: https://github.com/llvm/llvm-project/pull/91343.diff
2 Files Affected:
- (modified) lldb/source/Plugins/SymbolFile/DWARF/DWARFUnit.cpp (+1)
- (modified) lldb/test/Shell/SymbolFile/DWARF/x86/debug_rnglists.s (+3-3)
``````````diff
diff --git a/lldb/source/Plugins/SymbolFile/DWARF/DWARFUnit.cpp b/lldb/source/Plugins/SymbolFile/DWARF/DWARFUnit.cpp
index dabc595427df..3a57ec970b07 100644
--- a/lldb/source/Plugins/SymbolFile/DWARF/DWARFUnit.cpp
+++ b/lldb/source/Plugins/SymbolFile/DWARF/DWARFUnit.cpp
@@ -1062,6 +1062,7 @@ DWARFUnit::FindRnglistFromOffset(dw_offset_t offset) {
ranges.Append(DWARFRangeList::Entry(llvm_range.LowPC,
llvm_range.HighPC - llvm_range.LowPC));
}
+ ranges.Sort();
return ranges;
}
diff --git a/lldb/test/Shell/SymbolFile/DWARF/x86/debug_rnglists.s b/lldb/test/Shell/SymbolFile/DWARF/x86/debug_rnglists.s
index 89b5d94c68c3..af8a1796f3ab 100644
--- a/lldb/test/Shell/SymbolFile/DWARF/x86/debug_rnglists.s
+++ b/lldb/test/Shell/SymbolFile/DWARF/x86/debug_rnglists.s
@@ -124,12 +124,12 @@ lookup_rnglists2:
.Lrnglists_table_base0:
.long .Ldebug_ranges0-.Lrnglists_table_base0
.Ldebug_ranges0:
- .byte 4 # DW_RLE_offset_pair
- .uleb128 .Lblock1_begin-rnglists # starting offset
- .uleb128 .Lblock1_end-rnglists # ending offset
.byte 4 # DW_RLE_offset_pair
.uleb128 .Lblock2_begin-rnglists # starting offset
.uleb128 .Lblock2_end-rnglists # ending offset
+ .byte 4 # DW_RLE_offset_pair
+ .uleb128 .Lblock1_begin-rnglists # starting offset
+ .uleb128 .Lblock1_end-rnglists # ending offset
.byte 0 # DW_RLE_end_of_list
.Ldebug_rnglist_table_end0:
``````````
</details>
https://github.com/llvm/llvm-project/pull/91343
More information about the lldb-commits
mailing list