[LLDB][NativePDB] terminal entry has lower precedence than new entry
authorZequan Wu <zequanwu@google.com>
Thu, 3 Feb 2022 23:41:18 +0000 (15:41 -0800)
committerZequan Wu <zequanwu@google.com>
Thu, 3 Feb 2022 23:41:26 +0000 (15:41 -0800)
lldb/source/Plugins/SymbolFile/NativePDB/SymbolFileNativePDB.cpp

index c514cac..cda9d42 100644 (file)
@@ -1119,8 +1119,13 @@ bool SymbolFileNativePDB::ParseLineTable(CompileUnit &comp_unit) {
 
         uint32_t lno = cur_info.getStartLine();
 
-        line_set.emplace(addr, lno, 0, file_index, is_statement, false,
-                         is_prologue, is_epilogue, false);
+        LineTable::Entry new_entry(addr, lno, 0, file_index, is_statement, false,
+                                 is_prologue, is_epilogue, false);
+        // Terminal entry has lower precedence than new entry.
+        auto iter = line_set.find(new_entry);
+        if (iter != line_set.end() && iter->is_terminal_entry)
+          line_set.erase(iter);
+        line_set.insert(new_entry);
 
         if (line_entry.GetRangeBase() != LLDB_INVALID_ADDRESS) {
           line_entry.SetRangeEnd(addr);