https://gcc.gnu.org/g:432b8a346e10488a1751b86e7c51fff3ee870ae4
commit r15-1684-g432b8a346e10488a1751b86e7c51fff3ee870ae4 Author: Ronan Desplanques <desplanq...@adacore.com> Date: Thu May 2 09:52:34 2024 +0200 ada: Fix array-manipulating code in Mdll This patch fixes a duo of array assigments in Mdll that were bound to fail. gcc/ada/ * mdll.adb (Build_Non_Reloc_DLL): Fix incorrect assignment to array object. (Ada_Build_Non_Reloc_DLL): Likewise. Diff: --- gcc/ada/mdll.adb | 43 ++++++++++++++++++++++++++----------------- 1 file changed, 26 insertions(+), 17 deletions(-) diff --git a/gcc/ada/mdll.adb b/gcc/ada/mdll.adb index 2f946b0a5bb..ac4af8363aa 100644 --- a/gcc/ada/mdll.adb +++ b/gcc/ada/mdll.adb @@ -322,17 +322,21 @@ package body MDLL is -- Build the DLL declare - Params : OS_Lib.Argument_List := - Adr_Opt'Unchecked_Access & All_Options; + Params : constant OS_Lib.Argument_List := + Map_Opt'Unchecked_Access & + Adr_Opt'Unchecked_Access & All_Options; + First_Param : Positive := Params'First + 1; + begin if Map_File then - Params := Map_Opt'Unchecked_Access & Params; + First_Param := Params'First; end if; - Utl.Gcc (Output_File => Dll_File, - Files => Exp_File'Unchecked_Access & Ofiles, - Options => Params, - Build_Lib => True); + Utl.Gcc + (Output_File => Dll_File, + Files => Exp_File'Unchecked_Access & Ofiles, + Options => Params (First_Param .. Params'Last), + Build_Lib => True); end; OS_Lib.Delete_File (Exp_File, Success); @@ -377,20 +381,25 @@ package body MDLL is Utl.Gnatbind (L_Afiles, Options & Bargs_Options); declare - Params : OS_Lib.Argument_List := - Out_Opt'Unchecked_Access & - Dll_File'Unchecked_Access & - Lib_Opt'Unchecked_Access & - Exp_File'Unchecked_Access & - Adr_Opt'Unchecked_Access & - Ofiles & - All_Options; + Params : constant OS_Lib.Argument_List := + Map_Opt'Unchecked_Access & + Out_Opt'Unchecked_Access & + Dll_File'Unchecked_Access & + Lib_Opt'Unchecked_Access & + Exp_File'Unchecked_Access & + Adr_Opt'Unchecked_Access & + Ofiles & + All_Options; + First_Param : Positive := Params'First + 1; + begin if Map_File then - Params := Map_Opt'Unchecked_Access & Params; + First_Param := Params'First; end if; - Utl.Gnatlink (L_Afiles (L_Afiles'Last).all, Params); + Utl.Gnatlink + (L_Afiles (L_Afiles'Last).all, + Params (First_Param .. Params'Last)); end; OS_Lib.Delete_File (Exp_File, Success);