diff options
author | Ronan Desplanques <desplanques@adacore.com> | 2024-04-24 10:18:13 +0200 |
---|---|---|
committer | Marc Poulhiès <poulhies@adacore.com> | 2024-06-13 15:30:29 +0200 |
commit | 2afa7fd8c6d32264d4d3d917318fbac9f7f38508 (patch) | |
tree | 5fa65eb2a55e8917f08b4252b0a494f2fac23aac | |
parent | 7fce8735baf3160ff8c0952d1944c1216a0d9374 (diff) | |
download | gcc-2afa7fd8c6d32264d4d3d917318fbac9f7f38508.zip gcc-2afa7fd8c6d32264d4d3d917318fbac9f7f38508.tar.gz gcc-2afa7fd8c6d32264d4d3d917318fbac9f7f38508.tar.bz2 |
ada: Fix incorrect String lower bound in gnatlink
This patch fixes code in gnatlink that incorrectly assumed that the
lower bound of a particular string was always 1.
gcc/ada/
* gnatlink.adb (Gnatlink): Fix incorrect lower bound assumption.
(Is_Prefix): New function.
-rw-r--r-- | gcc/ada/gnatlink.adb | 31 |
1 files changed, 24 insertions, 7 deletions
diff --git a/gcc/ada/gnatlink.adb b/gcc/ada/gnatlink.adb index 1455412..db0fd14 100644 --- a/gcc/ada/gnatlink.adb +++ b/gcc/ada/gnatlink.adb @@ -1885,6 +1885,24 @@ begin Shared_Libgcc_Seen : Boolean := False; Static_Libgcc_Seen : Boolean := False; + function Is_Prefix + (Complete_String : String; Prefix : String) return Boolean; + -- Returns whether Prefix is a prefix of Complete_String + + --------------- + -- Is_Prefix -- + --------------- + + function Is_Prefix + (Complete_String : String; Prefix : String) return Boolean + is + S : String renames Complete_String; + P : String renames Prefix; + begin + return P'Length <= S'Length + and then S (S'First .. S'First + P'Length - 1) = P; + end Is_Prefix; + begin J := Linker_Options.First; while J <= Linker_Options.Last loop @@ -1936,13 +1954,12 @@ begin -- Here we just check for a canonical form that matches the -- pragma Linker_Options set in the NT runtime. - if (Linker_Options.Table (J)'Length > 17 - and then Linker_Options.Table (J) (1 .. 17) = - "-Xlinker --stack=") - or else - (Linker_Options.Table (J)'Length > 12 - and then Linker_Options.Table (J) (1 .. 12) = - "-Wl,--stack=") + if Is_Prefix + (Complete_String => Linker_Options.Table (J).all, + Prefix => "-Xlinker --stack=") + or else Is_Prefix + (Complete_String => Linker_Options.Table (J).all, + Prefix => "-Wl,--stack=") then if Stack_Op then Linker_Options.Table (J .. Linker_Options.Last - 1) := |