diff options
author | Joel Sherrill <joel@OARcorp.com> | 2004-04-08 17:30:32 +0000 |
---|---|---|
committer | Joel Sherrill <joel@gcc.gnu.org> | 2004-04-08 17:30:32 +0000 |
commit | 4afae4b9c87a32dd832f2b28670a8e074982db98 (patch) | |
tree | 23b4a09cb41bb8b497bc34ac574ec87bee101e9b /gcc/ada | |
parent | 467f3af023d0794a67636bed334683a62fdb7058 (diff) | |
download | gcc-4afae4b9c87a32dd832f2b28670a8e074982db98.zip gcc-4afae4b9c87a32dd832f2b28670a8e074982db98.tar.gz gcc-4afae4b9c87a32dd832f2b28670a8e074982db98.tar.bz2 |
re PR ada/14665 (gnatmake invokes wrong cross tools)
2004-04-08 Joel Sherrill <joel@oarcorp.com>
PR ada/14665
* ada/osint.adb (Find_Program_Name): Rework to properly handle
filenames which end in .exe or have versioning suffixes like VMS.
From-SVN: r80514
Diffstat (limited to 'gcc/ada')
-rw-r--r-- | gcc/ada/osint.adb | 35 |
1 files changed, 30 insertions, 5 deletions
diff --git a/gcc/ada/osint.adb b/gcc/ada/osint.adb index e2e559f..2dc5c32 100644 --- a/gcc/ada/osint.adb +++ b/gcc/ada/osint.adb @@ -1008,12 +1008,37 @@ package body Osint is end if; end loop; - for J in reverse Cindex1 .. Cindex2 loop - if Command_Name (J) = '.' then - Cindex2 := J - 1; - exit; + -- Command_Name(Cindex1 .. Cindex2) is now the equivalent of the + -- POSIX command "basename argv[0]" + + -- Strip off any versioning information such as found on VMS. + -- This would take the form of TOOL.exe followed by a ";" or "." + -- and a sequence of one or more numbers. + + if Command_Name (Cindex2) in '0' .. '9' then + for J in reverse Cindex1 .. Cindex2 loop + + exit when Command_Name (J) not in '0' .. '9'; + + if Command_Name (J) = '.' or Command_Name (J) = ';' then + Cindex2 := J - 1; + exit; + end if; + end loop; + end if; + + -- Strip off any executable extension (usually nothing or .exe) + -- but formally reported by autoconf in the variable EXEEXT + + if Cindex2 - Cindex1 >= 4 then + if To_Lower (Command_Name (Cindex2 - 3)) = '.' + and then To_Lower (Command_Name (Cindex2 - 2)) = 'e' + and then To_Lower (Command_Name (Cindex2 - 1)) = 'x' + and then To_Lower (Command_Name (Cindex2)) = 'e' + then + Cindex2 := Cindex2 - 4; end if; - end loop; + end if; Name_Len := Cindex2 - Cindex1 + 1; Name_Buffer (1 .. Name_Len) := Command_Name (Cindex1 .. Cindex2); |