Hi people,
I have been looking into the support for ARM binary images by lldb. One
of the ARM tool chains I use produces .debug_line tables as specified by
DWARF v3. With lldb and llvm-dwarfdump built from the top of the tree, I
observed that the dwarfdump tool dumps the line table, but lldb does
not. After some investigation I discovered that the dump tool is built
against llvm/lib/DebugInfo/DWARFDebugLine.cpp, whereas lldb uses
lldb/source/Plugins/SymbolFile/DWARF/DWARFDebugLine.cpp.
It turned out that the source used by lldb has a subtle difference in
flow-control with regards the treatment of the line table's prologue
version number compared to that of the llvm source. After duplication of
this flow-control, it is possible for lldb to print the line-table built
according to DWARF standards above and beyond v2.
Could somebody submit the following patch to the lldb tree which fixes
this issue?
Index: source/Plugins/SymbolFile/DWARF/DWARFDebugLine.cpp
===================================================================
--- source/Plugins/SymbolFile/DWARF/DWARFDebugLine.cpp (revision 205611)
+++ source/Plugins/SymbolFile/DWARF/DWARFDebugLine.cpp (working copy)
@@ -418,7 +418,7 @@
const char * s;
prologue->total_length =
debug_line_data.GetDWARFInitialLength(offset_ptr);
prologue->version = debug_line_data.GetU16(offset_ptr);
- if (prologue->version != 2)
+ if (prologue->version < 2)
return false;
prologue->prologue_length =
debug_line_data.GetDWARFOffset(offset_ptr);
@@ -486,7 +486,7 @@
(void)debug_line_data.GetDWARFInitialLength(&offset);
const char * s;
uint32_t version = debug_line_data.GetU16(&offset);
- if (version != 2)
+ if (version < 2)
return false;
const dw_offset_t end_prologue_offset =
debug_line_data.GetDWARFOffset(&offset) + offset;
thank you
Matthew Gardiner
Member of the CSR plc group of companies. CSR plc registered in England and
Wales, registered number 4187346, registered office Churchill House, Cambridge
Business Park, Cowley Road, Cambridge, CB4 0WZ, United Kingdom
More information can be found at www.csr.com. Keep up to date with CSR on our
technical blog, www.csr.com/blog, CSR people blog, www.csr.com/people, YouTube,
www.youtube.com/user/CSRplc, Facebook,
www.facebook.com/pages/CSR/191038434253534, or follow us on Twitter at
www.twitter.com/CSR_plc.
New for 2014, you can now access the wide range of products powered by aptX at
www.aptx.com.
Index: source/Plugins/SymbolFile/DWARF/DWARFDebugLine.cpp
===================================================================
--- source/Plugins/SymbolFile/DWARF/DWARFDebugLine.cpp (revision 205611)
+++ source/Plugins/SymbolFile/DWARF/DWARFDebugLine.cpp (working copy)
@@ -418,7 +418,7 @@
const char * s;
prologue->total_length = debug_line_data.GetDWARFInitialLength(offset_ptr);
prologue->version = debug_line_data.GetU16(offset_ptr);
- if (prologue->version != 2)
+ if (prologue->version < 2)
return false;
prologue->prologue_length = debug_line_data.GetDWARFOffset(offset_ptr);
@@ -486,7 +486,7 @@
(void)debug_line_data.GetDWARFInitialLength(&offset);
const char * s;
uint32_t version = debug_line_data.GetU16(&offset);
- if (version != 2)
+ if (version < 2)
return false;
const dw_offset_t end_prologue_offset = debug_line_data.GetDWARFOffset(&offset) + offset;
_______________________________________________
lldb-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/lldb-commits