From 68eb05a3b6ae3a973c858811dc11c7d54a77a58b Mon Sep 17 00:00:00 2001 From: Justin Squirek Date: Tue, 10 May 2022 18:19:10 +0000 Subject: [PATCH] [Ada] Gnatbind crash during checksum calculation This patch corrects an error in the compiler whereby gnatbind may crash during calculation of file checksums in certain corner cases due to uninitialized lookup tables. gcc/ada/ * gnatbind.adb (Gnatbind): Add initialize call for Uintp * gnatls.adb (Gnatls): Likewise. * gprep.adb (Gnatprep): Likewise. * make.adb (Initialize): Likewise. --- gcc/ada/gnatbind.adb | 2 ++ gcc/ada/gnatls.adb | 2 ++ gcc/ada/gprep.adb | 2 ++ gcc/ada/make.adb | 2 ++ 4 files changed, 8 insertions(+) diff --git a/gcc/ada/gnatbind.adb b/gcc/ada/gnatbind.adb index 4c50e61..475702a 100644 --- a/gcc/ada/gnatbind.adb +++ b/gcc/ada/gnatbind.adb @@ -50,6 +50,7 @@ with Switch; use Switch; with Switch.B; use Switch.B; with Targparm; use Targparm; with Types; use Types; +with Uintp; with System.Case_Util; use System.Case_Util; with System.Response_File; @@ -617,6 +618,7 @@ begin -- is in some cases important. Csets.Initialize; + Uintp.Initialize; Snames.Initialize; -- Scan the switches and arguments. Note that Snames must already be diff --git a/gcc/ada/gnatls.adb b/gcc/ada/gnatls.adb index 4b6ba03..9b62f71 100644 --- a/gcc/ada/gnatls.adb +++ b/gcc/ada/gnatls.adb @@ -44,6 +44,7 @@ with Snames; with Stringt; with Switch; use Switch; with Types; use Types; +with Uintp; with GNAT.Case_Util; use GNAT.Case_Util; with GNAT.Command_Line; use GNAT.Command_Line; @@ -2023,6 +2024,7 @@ begin -- Initialize standard packages Csets.Initialize; + Uintp.Initialize; Snames.Initialize; Stringt.Initialize; diff --git a/gcc/ada/gprep.adb b/gcc/ada/gprep.adb index 36ec1d8..58ae104 100644 --- a/gcc/ada/gprep.adb +++ b/gcc/ada/gprep.adb @@ -37,6 +37,7 @@ with Snames; with Stringt; use Stringt; with Switch; use Switch; with Types; use Types; +with Uintp; with Ada.Command_Line; use Ada.Command_Line; with Ada.Text_IO; use Ada.Text_IO; @@ -169,6 +170,7 @@ package body GPrep is -- Do some initializations (order is important here) Csets.Initialize; + Uintp.Initialize; Snames.Initialize; Stringt.Initialize; Prep.Initialize; diff --git a/gcc/ada/make.adb b/gcc/ada/make.adb index bbabd76..3ed4656 100644 --- a/gcc/ada/make.adb +++ b/gcc/ada/make.adb @@ -44,6 +44,7 @@ with SFN_Scan; with Sinput; with Snames; with Stringt; +with Uintp; pragma Warnings (Off); with System.HTable; @@ -3676,6 +3677,7 @@ package body Make is Linker_Switches.Init; Csets.Initialize; + Uintp.Initialize; Snames.Initialize; Stringt.Initialize; -- 2.7.4