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
This commit is contained in:
Joel Sherrill 2004-04-08 17:30:32 +00:00 committed by Joel Sherrill
parent 467f3af023
commit 4afae4b9c8
2 changed files with 36 additions and 5 deletions

View File

@ -1,3 +1,9 @@
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.
2004-04-08 Andrew Pinski <pinskia@physics.uc.edu>
PR target/10129

View File

@ -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);