gcc 3.4 - gnatmake has wrong gcc name
Joel Sherrill
joel.sherrill@OARcorp.com
Thu Mar 18 14:24:00 GMT 2004
Jim Wilson wrote:
> Joel Sherrill wrote:
> The routines in question here are Find_Program_Name and Program_Name in
> ada/osint.adb.
>
> Find_Program_Name gets the executable name, removes everything up to the
> last slash, which gives us a program name without any leading path
> components.
>
> It then removes everything after the last dot. This is probably
> assuming that if there is a dot, then there must be some extension like
> .exe to be stripped off. This can be see in the above. Note the error
> message says sparc-rtems4, not sparc-rtems4.7-gnatmake because the
> supposed file name extension has been removed.
>
> Program_name then removes everything after the last dash, which should
> be gnatmake, but in your case is rtems4. This leaves just sparc-. Then
> it appends gcc giving sparc-gcc.
>
> The Program_Name ("gcc") call is in make.adb.
>
> I haven't tried to verify any of this with a build or debugger.
I didn't do this because I remembered having submitted a patch for
similar behvior in the gnattools years ago and wanted to find it to
before doing the above.
I think your description of the behavior is correct. I can fix it
but need to know what the real behavior should be. Would the
Ada equivalent of name() in this shell script be the desired behavior?
--------------------------------------------------------------------
#! /bin/sh
name()
{
# Equivalent of Find_Program_Name
progname=`echo $1 | sed -e 's/\.exe$//'`
# Equivalent of Program_Name
target=`echo $progname | sed -e 's/-[a-zA-Z0-9]*$//'`
echo ${target}-$2
}
name sparc-rtems-gnatmake gcc
name sparc-rtems4.7-gnatmake gcc
name sparc-rtems-gnatmake.exe gcc
name sparc-rtems4.7-gnatmake.exe gcc
---------------------------------------------------------------------
My impression is that Find_Program_Name is broken for
versioned target names with '.' in them and that it really
needs to be removing a known set of extensions. Is there anything
other than .exe$ that needs to be taken off?
--joel
More information about the Gcc
mailing list