gold: Fix 64-bit sparc GOLD crash in gdb-index code.
[binutils-gdb.git] / gold / reduced_debug_output.cc
index 93757bfa1c642785adcee8322ae8b90ba819ee3f..31eaf779cd3231977db259f1297aa2afaa051147 100644 (file)
@@ -61,8 +61,10 @@ Output_reduced_debug_info_section::get_die_end(
       switch(form)
         {
           case elfcpp::DW_FORM_null:
+          case elfcpp::DW_FORM_flag_present:
             break;
           case elfcpp::DW_FORM_strp:
+          case elfcpp::DW_FORM_sec_offset:
             die += is64 ? 8 : 4;
             break;
           case elfcpp::DW_FORM_addr:
@@ -88,6 +90,7 @@ Output_reduced_debug_info_section::get_die_end(
               break;
             }
           case elfcpp::DW_FORM_block:
+          case elfcpp::DW_FORM_exprloc:
             LEB_decoded = read_unsigned_LEB_128(die, &LEB_size);
             die += (LEB_decoded + LEB_size);
             break;
@@ -106,6 +109,7 @@ Output_reduced_debug_info_section::get_die_end(
             break;
           case elfcpp::DW_FORM_data8:
           case elfcpp::DW_FORM_ref8:
+          case elfcpp::DW_FORM_ref_sig8:
             die += 8;
             break;
           case elfcpp::DW_FORM_ref_udata:
@@ -113,14 +117,20 @@ Output_reduced_debug_info_section::get_die_end(
             read_unsigned_LEB_128(die, &LEB_size);
             die += LEB_size;
             break;
+          case elfcpp::DW_FORM_sdata:
+            read_signed_LEB_128(die, &LEB_size);
+            die += LEB_size;
+            break;
           case elfcpp::DW_FORM_string:
             {
               size_t length = strlen(reinterpret_cast<char*>(die));
               die += length + 1;
               break;
             }
-          case elfcpp::DW_FORM_sdata:
           case elfcpp::DW_FORM_indirect:
+          case elfcpp::DW_FORM_GNU_ref_index:
+          case elfcpp::DW_FORM_GNU_addr_index:
+          case elfcpp::DW_FORM_GNU_str_index:
             return false;
       }
     }