aboutsummaryrefslogtreecommitdiff
path: root/gcc/ada/libgnat
diff options
context:
space:
mode:
authorEric Botcazou <ebotcazou@adacore.com>2021-07-06 16:47:31 +0200
committerPierre-Marie de Rodat <derodat@adacore.com>2021-09-21 15:24:59 +0000
commit97a5ed2071fffe85ee1a07e0655740162e4cce64 (patch)
treeb2a939596ff0c398f454b2acdfed436fbd1ee232 /gcc/ada/libgnat
parent97c5d522c6ee36b7ed1824d1eb6b8f30172c1818 (diff)
downloadgcc-97a5ed2071fffe85ee1a07e0655740162e4cce64.zip
gcc-97a5ed2071fffe85ee1a07e0655740162e4cce64.tar.gz
gcc-97a5ed2071fffe85ee1a07e0655740162e4cce64.tar.bz2
[Ada] Small optimization to DWARF 5 mode in System.Dwarf_Line
gcc/ada/ * libgnat/s-dwalin.adb (To_File_Name): Fetch only the last string from the .debug_line_str section. (Symbolic_Address.Set_Result): Likewise.
Diffstat (limited to 'gcc/ada/libgnat')
-rw-r--r--gcc/ada/libgnat/s-dwalin.adb18
1 files changed, 12 insertions, 6 deletions
diff --git a/gcc/ada/libgnat/s-dwalin.adb b/gcc/ada/libgnat/s-dwalin.adb
index 74700e6..4bcd741 100644
--- a/gcc/ada/libgnat/s-dwalin.adb
+++ b/gcc/ada/libgnat/s-dwalin.adb
@@ -957,8 +957,10 @@ package body System.Dwarf_Lines is
when DW_FORM_line_strp =>
Read_Section_Offset (C.Lines, Off, C.Header.Is64);
- Seek (C.Line_Str, Off);
- Read_C_String (C.Line_Str, Buf);
+ if J = File then
+ Seek (C.Line_Str, Off);
+ Read_C_String (C.Line_Str, Buf);
+ end if;
when others =>
raise Dwarf_Error with "DWARF form not implemented";
@@ -1674,8 +1676,10 @@ package body System.Dwarf_Lines is
when DW_FORM_line_strp =>
Read_Section_Offset (C.Lines, Off, C.Header.Is64);
- Seek (C.Line_Str, Off);
- File_Name := Read_C_String (C.Line_Str);
+ if J = Match.File then
+ Seek (C.Line_Str, Off);
+ File_Name := Read_C_String (C.Line_Str);
+ end if;
when others =>
raise Dwarf_Error with "DWARF form not implemented";
@@ -1718,8 +1722,10 @@ package body System.Dwarf_Lines is
when DW_FORM_line_strp =>
Read_Section_Offset (C.Lines, Off, C.Header.Is64);
- Seek (C.Line_Str, Off);
- Dir_Name := Read_C_String (C.Line_Str);
+ if J = Dir_Idx then
+ Seek (C.Line_Str, Off);
+ Dir_Name := Read_C_String (C.Line_Str);
+ end if;
when others =>
raise Dwarf_Error with "DWARF form not implemented";