[Lldb-commits] [PATCH] D12757: Fix prologue end handling when code compiled by gcc

Greg Clayton via lldb-commits lldb-commits at lists.llvm.org
Thu Sep 10 10:46:39 PDT 2015

clayborg requested changes to this revision.
clayborg added a comment.
This revision now requires changes to proceed.

see inlined comments.

Comment at: source/Symbol/LineTable.cpp:107-117
@@ -106,3 +106,13 @@
     if (!entries.empty() && entries.back().file_addr == file_addr)
+    {
+        // GCC don't use the is_prologue_end flag to mark the first instruction after the prologue.
+        // Instead of it it is issueing a line table entry for the first instruction of the prologue
+        // and one for the first instruction after the prologue. If the size of the prologue is 0
+        // instruction then the 2 line entry will have the same file address. Removing it will remove
+        // our ability to properly detect the location of the end of prologe so we set the prologue_end
+        // flag to preserve this information (setting the prologue_end flag for an entry what is after
+        // the prologue end don't have any effect)
+        entry.is_prologue_end = true;
         entries.back() = entry;
+    }
I am not sure I like this solution. Now if we ever have two line entries with the same address we will automatically mark the item as the prologue end? This seems like a hack and it will mark all sorts of line entries as being "is_prologue_end = true" all throughout the line table.


More information about the lldb-commits mailing list