This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH][Ada] Add option to gnatlink to fix gnat.dg on some platforms


For reference the patch worked fine:

http://gcc.gnu.org/ml/gcc-testresults/2009-05/msg02440.html

I checked manually that in the context of gnat.dg gnatlink is calling
xgcc with the right multilib for both compiling the binder file and
linking.

So waiting for approval or another suggestion :).

Thanks in advance,

Laurent

On Wed, 2009-05-27 at 10:12 +0200, Laurent GUERBY wrote:
> On Thu, 2009-05-07 at 16:30 +0200, Arnaud Charlet wrote:
> > 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;
> >    end if;
> > 
> > instead of
> > 
> >    if Program_Args.all (1).all /= Gcc.all then
> >       Gcc := new String'(Program_Args.all (1).all);
> >       Standard_Gcc := False;
> >    end if;
> 
> Did you mean the following?
> 
> We still need to update Gcc.all otherwise gnatlink won't call xgcc
> unless I'm reading the code wrong.
> 
> Laurent
> 
> Index: gcc/ada/gnatlink.adb
> ===================================================================
> --- gcc/ada/gnatlink.adb	(revision 147903)
> +++ gcc/ada/gnatlink.adb	(working copy)
> @@ -523,7 +523,10 @@
>                    begin
>                       if Program_Args.all (1).all /= Gcc.all then
>                          Gcc := new String'(Program_Args.all (1).all);
> -                        Standard_Gcc := False;
> +
> +                        if Program_Args.all'Length > 1 then
> +                           Standard_Gcc := False;
> +                        end if;
>                       end if;
>  
>                       --  Set appropriate flags for switches passed
> 



Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]