aboutsummaryrefslogtreecommitdiff
path: root/gcc/ada/sem_dist.adb
diff options
context:
space:
mode:
authorBob Duff <duff@adacore.com>2022-02-10 14:55:32 -0500
committerPierre-Marie de Rodat <derodat@adacore.com>2022-05-12 12:38:38 +0000
commit3b4ae9b98b07764b074110ba7215428df9efe320 (patch)
tree49ce9e36e9cb09d1df770cdc97d958a047293ae6 /gcc/ada/sem_dist.adb
parent86c7b1617f0ae0da828d1107795f57c96c848d8f (diff)
downloadgcc-3b4ae9b98b07764b074110ba7215428df9efe320.zip
gcc-3b4ae9b98b07764b074110ba7215428df9efe320.tar.gz
gcc-3b4ae9b98b07764b074110ba7215428df9efe320.tar.bz2
[Ada] Make debug printouts more robust
This patch improves some debug printouts so that they avoid crashing on invalid data. In addition, the relevant code uses Global_Name_Buffer all over the place. This patch cleans up some of those uses, in particular ones in the same code as the robustness changes, and code called by that code. gcc/ada/ * namet.ads, namet.adb (Write_Name_For_Debug): New more-robust version of Write_Name. (Destroy_Global_Name_Buffer): New procedure to help detect bugs related to use of Global_Name_Buffer. Misc cleanup and comment improvements. E.g. we don't need to document every detail of debugging printouts, especially since they can change. * uname.ads, uname.adb (Write_Unit_Name_For_Debug): New more-robust version of Write_Unit_Name. (Get_Unit_Name_String): Pass buffer in, instead of using the global variable. Misc cleanup. Remove the "special fudge", which is apparently not needed, and anyway the comment "the %s or %b has already been eliminated" seems wrong. (Write_Unit_Name): Call the new version of Get_Unit_Name_String. * errout.adb (Set_Msg_Insertion_Unit_Name): Call the new version of Get_Unit_Name_String. We pass the global variable here, because it's too much trouble to disentangle such uses in Errout. * sem_util.ads, sem_util.adb, sem_dist.adb (Get_Library_Unit_Name): New version of Get_Library_Unit_Name_String that avoids usage of the global variable. * casing.ads, casing.adb, exp_prag.adb, exp_util.adb (Set_All_Upper_Case): Remove. There is no need for a wrapper here -- code is clearer without it. * treepr.adb (Print_Name): Call Write_Name_For_Debug, which deals with No_Name (etc), rather than duplicating that here. Note that the call to Get_Name_String was superfluous. (Tree_Dump): Call Write_Unit_Name_For_Debug instead of Write_Unit_Name, which crashes if not Is_Valid_Name. * erroutc.ads: Improve comments. * erroutc.adb (Set_Msg_Name_Buffer): Call Destroy_Global_Name_Buffer to detect potential bugs where it incorrectly looks at the global variable. * sinput.adb (Write_Location): Call Write_Name_For_Debug instead of Write_Name, so it won't blow up on invalid data. * sinput.ads: Improve comments; remove some verbosity. * libgnat/s-imagef.adb: Fix typo in comment.
Diffstat (limited to 'gcc/ada/sem_dist.adb')
-rw-r--r--gcc/ada/sem_dist.adb7
1 files changed, 3 insertions, 4 deletions
diff --git a/gcc/ada/sem_dist.adb b/gcc/ada/sem_dist.adb
index ea9c7ef..3109408 100644
--- a/gcc/ada/sem_dist.adb
+++ b/gcc/ada/sem_dist.adb
@@ -394,11 +394,10 @@ package body Sem_Dist is
(RTE (RE_Get_Local_Partition_Id), Loc);
end if;
- -- Get and store the String_Id corresponding to the name of the
- -- library unit whose Partition_Id is needed.
+ -- Get the String_Id corresponding to the name of the library unit whose
+ -- Partition_Id is needed.
- Get_Library_Unit_Name_String (Unit_Declaration_Node (Ety));
- Prefix_String := String_From_Name_Buffer;
+ Prefix_String := Get_Library_Unit_Name (Unit_Declaration_Node (Ety));
-- Build the function call which will replace the attribute