[Lldb-commits] [lldb] r129620 - /lldb/trunk/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp

Jim Ingham jingham at apple.com
Fri Apr 15 16:41:23 PDT 2011


Author: jingham
Date: Fri Apr 15 18:41:23 2011
New Revision: 129620

URL: http://llvm.org/viewvc/llvm-project?rev=129620&view=rev
Log:
Work around a llvm gcc bug where the name of a reference doesn't include the "&".

Modified:
    lldb/trunk/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp

Modified: lldb/trunk/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp?rev=129620&r1=129619&r2=129620&view=diff
==============================================================================
--- lldb/trunk/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp (original)
+++ lldb/trunk/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp Fri Apr 15 18:41:23 2011
@@ -3026,8 +3026,17 @@
                                 case DW_AT_decl_line:   decl.SetLine(form_value.Unsigned()); break;
                                 case DW_AT_decl_column: decl.SetColumn(form_value.Unsigned()); break;
                                 case DW_AT_name:
+                                    
                                     type_name_cstr = form_value.AsCString(&get_debug_str_data());
-                                    type_name_const_str.SetCString(type_name_cstr);
+                                    // Work around a bug in llvm-gcc where they give a name to a reference type which doesn't
+                                    // include the "&"...
+                                    if (tag == DW_TAG_reference_type)
+                                    {
+                                        if (strchr (type_name_cstr, '&') == NULL)
+                                            type_name_cstr = NULL;
+                                    }
+                                    if (type_name_cstr)
+                                        type_name_const_str.SetCString(type_name_cstr);
                                     break;
                                 case DW_AT_byte_size:   byte_size = form_value.Unsigned();  byte_size_valid = true; break;
                                 case DW_AT_encoding:    encoding = form_value.Unsigned(); break;





More information about the lldb-commits mailing list