aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOlivier Hainque <hainque@adacore.com>2020-09-02 19:10:59 +0200
committerPierre-Marie de Rodat <derodat@adacore.com>2020-10-26 04:59:03 -0400
commitd111f09ee50cdf65bbcd8b6bd8c0e764431810ff (patch)
treed90496093a963fa3120218544065ea67b6af8041
parent51fb7000aa3e53f663e66519074b7bb0767f09f7 (diff)
downloadgcc-d111f09ee50cdf65bbcd8b6bd8c0e764431810ff.zip
gcc-d111f09ee50cdf65bbcd8b6bd8c0e764431810ff.tar.gz
gcc-d111f09ee50cdf65bbcd8b6bd8c0e764431810ff.tar.bz2
[Ada] Restore hex addresses and improve symbolic backtraces
gcc/ada/ * libgnat/s-dwalin.adb (Symbolic_Traceback): Always emit the hex address at the beginning of an entry if suppression is not requested. Consistently output a "???" for the subprogram name when it is unknown.
-rw-r--r--gcc/ada/libgnat/s-dwalin.adb21
1 files changed, 12 insertions, 9 deletions
diff --git a/gcc/ada/libgnat/s-dwalin.adb b/gcc/ada/libgnat/s-dwalin.adb
index abb499c..d8b15c5d 100644
--- a/gcc/ada/libgnat/s-dwalin.adb
+++ b/gcc/ada/libgnat/s-dwalin.adb
@@ -1582,6 +1582,13 @@ package body System.Dwarf_Lines is
Subprg_Name,
Line_Num);
+ -- If we're not requested to suppress hex addresses, emit it now.
+
+ if not Suppress_Hex then
+ Append_Address (Res, Addr_In_Traceback);
+ Append (Res, ' ');
+ end if;
+
if File_Name /= null then
declare
Last : constant Natural := String_Length (File_Name);
@@ -1626,26 +1633,22 @@ package body System.Dwarf_Lines is
(Res,
String (Subprg_Name.Ptr (Off .. Subprg_Name.Len)));
end if;
- Append (Res, ' ');
+ else
+ Append (Res, "???");
end if;
- Append (Res, "at ");
+ Append (Res, " at ");
Append (Res, String (File_Name (1 .. Last)));
Append (Res, ':');
Append (Res, Line_Image (2 .. Line_Image'Last));
end;
else
- if Suppress_Hex then
- Append (Res, "...");
- else
- Append_Address (Res, Addr_In_Traceback);
- end if;
-
if Subprg_Name.Len > 0 then
Off := Strip_Leading_Char (C.Obj.all, Subprg_Name);
- Append (Res, ' ');
Append (Res, String (Subprg_Name.Ptr (Off .. Subprg_Name.Len)));
+ else
+ Append (Res, "???");
end if;
Append (Res, " at ???");