aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEric Botcazou <ebotcazou@adacore.com>2021-07-06 12:18:57 +0200
committerPierre-Marie de Rodat <derodat@adacore.com>2021-09-21 15:24:59 +0000
commit97c5d522c6ee36b7ed1824d1eb6b8f30172c1818 (patch)
treea6da96ce91f2206f76a1d7ac533d832ec879cc88
parentcf7aa7d8e8523ca246804ba7c8ef6ab4c7910cb8 (diff)
downloadgcc-97c5d522c6ee36b7ed1824d1eb6b8f30172c1818.zip
gcc-97c5d522c6ee36b7ed1824d1eb6b8f30172c1818.tar.gz
gcc-97c5d522c6ee36b7ed1824d1eb6b8f30172c1818.tar.bz2
[Ada] Follow-up tweaks to System.Dwarf_Line
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.
-rw-r--r--gcc/ada/libgnat/s-dwalin.adb15
1 files changed, 7 insertions, 8 deletions
diff --git a/gcc/ada/libgnat/s-dwalin.adb b/gcc/ada/libgnat/s-dwalin.adb
index 530b802..74700e6 100644
--- 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);