This is the mail archive of the
mailing list for the GCC project.
Re: [PATCH][Ada] Add option to gnatlink to fix gnat.dg on some platforms
Adding also Vincent in the loop, since he implement (in 2001!) this switch,
after lots of discussion at AdaCore (under 9510-006...) and refined it
later on, see below:
> On Thu, 2009-05-07 at 14:17 +0200, Laurent GUERBY wrote:
> > On Thu, 2009-05-07 at 14:10 +0200, Arnaud Charlet wrote:
> > > Actually that's not what we want: what we want is to have --GCC be
> > > smarter and recognize that the compiler specified is "gcc" or "another
> > > non GCC compiler", which would also solve this issue.
> > Ok if this was the idea behind the --GCC behaviour I believe it's easy
> > to extend the current gnatlink --GCC check to accept "xgcc" as well
> > as what it accepts now:
> > gcc/ada/gnatlink.adb:
> > if Program_Args.all (1).all /= Gcc.all then
> > Gcc := new String'(Program_Args.all (1).all);
> > Standard_Gcc := False;
> > end if;
> > I will submit a new patch shortly, thanks for your help on this issue.
> Here it is.
> I've not changed the documentation because in the light about what you
> said about the intended semantics I think it covers xgcc as well
> since it's gcc too :).
Right. Actually what was initially intended was to pass switches from the
main ALI file if no --GCC is specified, or if --GCC specifies additional
switches (so not just --GCC=<some-gcc>), and not as I misremembered to
differenciate between "some gcc" and "non gcc compilers".
Now, that's NOT what Vincent implemented: originally he implemented a simple
"if --GCC is passed, then do not read switches from ALI". Then later
he modified to the current behavior by comparing between --GCC=xxx and the
default gcc used by gnatlink (under our internal ticket H423-001), and
documented this behavior at the same tim.
I'm not sure why though, and believe that the original suggestion is
the right one.
So if we go back to the original intent (no additional switches specified in
--GCC), that would solve this specific issue as far as I can see, but maybe
there was a good reason why Vincent did things differently?
If not, then a possible patch would be something like:
if Program_Args'Length > 1 then
Standard_Gcc := False;
if Program_Args.all (1).all /= Gcc.all then
Gcc := new String'(Program_Args.all (1).all);
Standard_Gcc := False;
(and update gnat_ugn.texi accordingly).