aboutsummaryrefslogtreecommitdiff
path: root/gcc/ada
diff options
context:
space:
mode:
authorJoel Sherrill <joel@OARcorp.com>2004-04-08 17:30:32 +0000
committerJoel Sherrill <joel@gcc.gnu.org>2004-04-08 17:30:32 +0000
commit4afae4b9c87a32dd832f2b28670a8e074982db98 (patch)
tree23b4a09cb41bb8b497bc34ac574ec87bee101e9b /gcc/ada
parent467f3af023d0794a67636bed334683a62fdb7058 (diff)
downloadgcc-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.adb35
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);