Add some basic support for the fission addr forms to DebugInfo.
authorEric Christopher <echristo@gmail.com>
Fri, 16 Nov 2012 23:44:11 +0000 (23:44 +0000)
committerEric Christopher <echristo@gmail.com>
Fri, 16 Nov 2012 23:44:11 +0000 (23:44 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@168223 91177308-0d34-0410-b5e6-96231b3b80d8

lib/DebugInfo/DWARFFormValue.cpp

index 07f7b446431d9026d2648510368e1cb563e8e77a..1d8ea011100e8fe874c45ce76ce214596680cbb6 100644 (file)
@@ -46,6 +46,8 @@ static const uint8_t form_sizes_addr4[] = {
   0, // 0x18 DW_FORM_exprloc
   0, // 0x19 DW_FORM_flag_present
   8, // 0x20 DW_FORM_ref_sig8
+  4, // 0x1f01 DW_FORM_GNU_addr_index
+  4, // 0x1f02 DW_FORM_GNU_str_index
 };
 
 static const uint8_t form_sizes_addr8[] = {
@@ -76,6 +78,8 @@ static const uint8_t form_sizes_addr8[] = {
   0, // 0x18 DW_FORM_exprloc
   0, // 0x19 DW_FORM_flag_present
   8, // 0x20 DW_FORM_ref_sig8
+  8, // 0x1f01 DW_FORM_GNU_addr_index
+  8, // 0x1f01 DW_FORM_GNU_str_index
 };
 
 const uint8_t *
@@ -185,6 +189,12 @@ DWARFFormValue::extractValue(DataExtractor data, uint32_t *offset_ptr,
     case DW_FORM_ref_sig8:
       Value.uval = data.getU64(offset_ptr);
       break;
+    case DW_FORM_GNU_addr_index:
+      Value.uval = data.getULEB128(offset_ptr);
+      break;
+    case DW_FORM_GNU_str_index:
+      Value.uval = data.getULEB128(offset_ptr);
+      break;
     default:
       return false;
     }