Add support for DW_FORM_GNU_[addr,str]_index

These are 2 new value currently in experimental status used when split
debug info is enabled.

Differential revision: http://reviews.llvm.org/D12238

llvm-svn: 245931
diff --git a/lldb/source/Symbol/ClangASTContext.cpp b/lldb/source/Symbol/ClangASTContext.cpp
index 50cbc13..84afaba 100644
--- a/lldb/source/Symbol/ClangASTContext.cpp
+++ b/lldb/source/Symbol/ClangASTContext.cpp
@@ -8883,7 +8883,7 @@
                     {
                         case DW_AT_name:
                             if (attributes.ExtractFormValueAtIndex(dwarf, i, form_value))
-                                name = form_value.AsCString(&dwarf->get_debug_str_data());
+                                name = form_value.AsCString(dwarf);
                             break;
 
                         case DW_AT_type:
@@ -9437,7 +9437,7 @@
                                 break;
 
                             case DW_AT_name:
-                                name = form_value.AsCString(&dwarf->get_debug_str_data());
+                                name = form_value.AsCString(dwarf);
                                 break;
 
                             case DW_AT_description:
@@ -9816,7 +9816,7 @@
                                 case DW_AT_decl_file:   decl.SetFile(sc.comp_unit->GetSupportFiles().GetFileSpecAtIndex(form_value.Unsigned())); break;
                                 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:        name = form_value.AsCString(&dwarf->get_debug_str_data()); break;
+                                case DW_AT_name:        name = form_value.AsCString(dwarf); break;
                                 case DW_AT_type:        encoding_uid = form_value.Reference(); break;
                                 case DW_AT_bit_offset:  bit_offset = form_value.Unsigned(); break;
                                 case DW_AT_bit_size:    bit_size = form_value.Unsigned(); break;
@@ -9856,9 +9856,12 @@
 
                                 case DW_AT_accessibility: accessibility = DW_ACCESS_to_AccessType (form_value.Unsigned()); break;
                                 case DW_AT_artificial: is_artificial = form_value.Boolean(); break;
-                                case DW_AT_APPLE_property_name:      prop_name = form_value.AsCString(&dwarf->get_debug_str_data()); break;
-                                case DW_AT_APPLE_property_getter:    prop_getter_name = form_value.AsCString(&dwarf->get_debug_str_data()); break;
-                                case DW_AT_APPLE_property_setter:    prop_setter_name = form_value.AsCString(&dwarf->get_debug_str_data()); break;
+                                case DW_AT_APPLE_property_name:      prop_name = form_value.AsCString(dwarf);
+                                                                     break;
+                                case DW_AT_APPLE_property_getter:    prop_getter_name = form_value.AsCString(dwarf);
+                                                                     break;
+                                case DW_AT_APPLE_property_setter:    prop_setter_name = form_value.AsCString(dwarf);
+                                                                     break;
                                 case DW_AT_APPLE_property_attribute: prop_attributes = form_value.Unsigned(); break;
                                 case DW_AT_external:                 is_external = form_value.Boolean(); break;
 
@@ -10375,7 +10378,8 @@
                                 case DW_AT_decl_file:   decl.SetFile(sc.comp_unit->GetSupportFiles().GetFileSpecAtIndex(form_value.Unsigned())); break;
                                 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:        name = form_value.AsCString(&dwarf->get_debug_str_data()); break;
+                                case DW_AT_name:        name = form_value.AsCString(dwarf);
+                                                        break;
                                 case DW_AT_type:        param_type_die_offset = form_value.Reference(); break;
                                 case DW_AT_artificial:  is_artificial = form_value.Boolean(); break;
                                 case DW_AT_location:
@@ -10975,7 +10979,7 @@
                                     case DW_AT_decl_column: decl.SetColumn(form_value.Unsigned()); break;
                                     case DW_AT_name:
 
-                                        type_name_cstr = form_value.AsCString(&dwarf->get_debug_str_data());
+                                        type_name_cstr = form_value.AsCString(dwarf);
                                         // 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)
@@ -11178,7 +11182,7 @@
                                         break;
 
                                     case DW_AT_name:
-                                        type_name_cstr = form_value.AsCString(&dwarf->get_debug_str_data());
+                                        type_name_cstr = form_value.AsCString(dwarf);
                                         type_name_const_str.SetCString(type_name_cstr);
                                         break;
 
@@ -11575,7 +11579,7 @@
                                     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(&dwarf->get_debug_str_data());
+                                        type_name_cstr = form_value.AsCString(dwarf);
                                         type_name_const_str.SetCString(type_name_cstr);
                                         break;
                                     case DW_AT_type:            encoding_uid = form_value.Reference(); break;
@@ -11693,7 +11697,7 @@
                                     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(&dwarf->get_debug_str_data());
+                                        type_name_cstr = form_value.AsCString(dwarf);
                                         type_name_const_str.SetCString(type_name_cstr);
                                         break;
 
@@ -12166,7 +12170,7 @@
                                     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(&dwarf->get_debug_str_data());
+                                        type_name_cstr = form_value.AsCString(dwarf);
                                         type_name_const_str.SetCString(type_name_cstr);
                                         break;