This fixes a couple of thinkos in the previous change.

Tested on x86_64-pc-linux-gnu, committed on trunk

gcc/ada/

        * libgnat/s-dwalin.adb (Skip_Form): Fix cases of DW_FORM_addrx
        and DW_FORM_implicit_const.  Replace Constraint_Error with
        Dwarf_Error.
diff --git a/gcc/ada/libgnat/s-dwalin.adb b/gcc/ada/libgnat/s-dwalin.adb
--- a/gcc/ada/libgnat/s-dwalin.adb
+++ b/gcc/ada/libgnat/s-dwalin.adb
@@ -1114,8 +1114,6 @@ package body System.Dwarf_Lines is
       case Form is
          when DW_FORM_addr =>
             Skip := Offset (Ptr_Sz);
-         when DW_FORM_addrx =>
-            Skip := Offset (uint32'(Read_LEB128 (S)));
          when DW_FORM_block1 =>
             Skip := Offset (uint8'(Read (S)));
          when DW_FORM_block2 =>
@@ -1161,11 +1159,12 @@ package body System.Dwarf_Lines is
             begin
                return;
             end;
-         when DW_FORM_udata
-            | DW_FORM_ref_udata
+         when DW_FORM_addrx
             | DW_FORM_loclistx
+            | DW_FORM_ref_udata
             | DW_FORM_rnglistx
             | DW_FORM_strx
+            | DW_FORM_udata
            =>
             declare
                Val : constant uint32 := Read_LEB128 (S);
@@ -1173,7 +1172,7 @@ package body System.Dwarf_Lines is
             begin
                return;
             end;
-         when DW_FORM_flag_present =>
+         when DW_FORM_flag_present | DW_FORM_implicit_const =>
             return;
          when DW_FORM_ref_addr
             | DW_FORM_sec_offset
@@ -1187,10 +1186,10 @@ package body System.Dwarf_Lines is
                null;
             end loop;
             return;
-         when DW_FORM_implicit_const | DW_FORM_indirect =>
-            raise Constraint_Error;
+         when DW_FORM_indirect =>
+            raise Dwarf_Error with "DW_FORM_indirect not implemented";
          when others =>
-            raise Constraint_Error;
+            raise Dwarf_Error with "DWARF form not implemented";
       end case;
 
       Seek (S, Tell (S) + Skip);


Reply via email to