Re: r272976 - in /trunk/gcc/ada: ChangeLog ali.adb ...

2019-11-05 Thread Arnaud Charlet
> That should be @uref{prerequisites.html#GNAT-prerequisite,,GNAT 
> prerequisites}.

Thanks. I wouldn't have been able to guess that!

Corresponding patch installed.

2019-11-05  Arnaud Charlet  

* doc/install.texi: Further fix syntax for html generation.

Index: doc/install.texi
===
--- doc/install.texi(revision 277823)
+++ doc/install.texi(working copy)
@@ -2731,7 +2731,7 @@
 @ref{GNAT-prerequisite}.
 @end ifnothtml
 @ifhtml
-@uref{GNAT-prerequisite}.
+@uref{prerequisites.html#GNAT-prerequisite,,GNAT prerequisites}.
 @end ifhtml

 @section Building with profile feedback



Re: r272976 - in /trunk/gcc/ada: ChangeLog ali.adb ...

2019-10-28 Thread Andreas Schwab
On Sep 10 2019, Arnaud Charlet wrote:

> Allright, there are already similar kludges elsewhere, so I've applied the
> following patch which fixes it:
>
> 2019-09-10  Arnaud Charlet  
>
>   * doc/install.texi: Fix syntax for html generation.
>
> Index: doc/install.texi
> ===
> --- doc/install.texi(revision 275400)
> +++ doc/install.texi(working copy)
> @@ -2727,7 +2727,12 @@
>
>  @section Building the Ada compiler
>
> -See @ref{GNAT-prerequisite}.
> +@ifnothtml
> +@ref{GNAT-prerequisite}.
> +@end ifnothtml
> +@ifhtml
> +@uref{GNAT-prerequisite}.

That should be @uref{prerequisites.html#GNAT-prerequisite,,GNAT prerequisites}.

Andreas.

-- 
Andreas Schwab, SUSE Labs, sch...@suse.de
GPG Key fingerprint = 0196 BAD8 1CE9 1970 F4BE  1748 E4D4 88E3 0EEA B9D7
"And now for something completely different."


Re: r272976 - in /trunk/gcc/ada: ChangeLog ali.adb ...

2019-10-28 Thread Arnaud Charlet
> > 2019-09-10  Arnaud Charlet  
> > 
> > * doc/install.texi: Fix syntax for html generation.
> > 
> > Index: doc/install.texi
> > ===
> > --- doc/install.texi(revision 275400)
> > +++ doc/install.texi(working copy)
> > @@ -2727,7 +2727,12 @@
> > 
> >  @section Building the Ada compiler
> > 
> > -See @ref{GNAT-prerequisite}.
> > +@ifnothtml
> > +@ref{GNAT-prerequisite}.
> > +@end ifnothtml
> > +@ifhtml
> > +@uref{GNAT-prerequisite}.
> > +@end ifhtml
> 
> Hmm, I'm afraid this does not work as intended.
> 
> https://gcc.gnu.org/install/build.html now links to
> https://gcc.gnu.org/install/GNAT-prerequisite which simply does not
> exit.
> 
> Mind looking into this?

OK. Would be good to switch to another doc generation tool one of these
days, these things are not fun to deal with.

(I'm on vacation this week, so will take a look next week).

Arno


Re: r272976 - in /trunk/gcc/ada: ChangeLog ali.adb ...

2019-10-24 Thread Gerald Pfeifer
On Tue, 10 Sep 2019, Arnaud Charlet wrote:
> Allright, there are already similar kludges elsewhere, so I've applied the
> following patch which fixes it:
> 
> 2019-09-10  Arnaud Charlet  
> 
>   * doc/install.texi: Fix syntax for html generation.
> 
> Index: doc/install.texi
> ===
> --- doc/install.texi(revision 275400)
> +++ doc/install.texi(working copy)
> @@ -2727,7 +2727,12 @@
> 
>  @section Building the Ada compiler
> 
> -See @ref{GNAT-prerequisite}.
> +@ifnothtml
> +@ref{GNAT-prerequisite}.
> +@end ifnothtml
> +@ifhtml
> +@uref{GNAT-prerequisite}.
> +@end ifhtml

Hmm, I'm afraid this does not work as intended.

https://gcc.gnu.org/install/build.html now links to
https://gcc.gnu.org/install/GNAT-prerequisite which simply does not
exit.

Mind looking into this?

Thanks,
Gerald


Re: r272976 - in /trunk/gcc/ada: ChangeLog ali.adb ...

2019-09-10 Thread Christophe Lyon

On 10/09/2019 12:17, Arnaud Charlet wrote:

It seems there's a problem with this patch:
/snapshots/gcc.git~master/gcc/doc/install.texi:2730: @ref reference to
nonexistent node `GNAT-prerequisite'
Makefile:3300: recipe for target
'/builds/armv8l-unknown-linux-gnueabihf/armv8l-unknown-linux-gnueabihf/gcc.git~master-stage2/gcc/HTML/gcc-10.0.0/gccinstall/index.html'
failed

Hmm strange, the ref should be there:


Indeed, that's what I thought too

Allright, there are already similar kludges elsewhere, so I've applied the
following patch which fixes it:

2019-09-10  Arnaud Charlet  

* doc/install.texi: Fix syntax for html generation.

Index: doc/install.texi
===
--- doc/install.texi(revision 275400)
+++ doc/install.texi(working copy)
@@ -2727,7 +2727,12 @@

  @section Building the Ada compiler

-See @ref{GNAT-prerequisite}.
+@ifnothtml
+@ref{GNAT-prerequisite}.
+@end ifnothtml
+@ifhtml
+@uref{GNAT-prerequisite}.
+@end ifhtml

  @section Building with profile feedback

I've verified that the do-install-html and do-install-info targets are now
happy with the change.

Arno
.


Thanks!




Re: r272976 - in /trunk/gcc/ada: ChangeLog ali.adb ...

2019-09-10 Thread Arnaud Charlet
> > > It seems there's a problem with this patch:
> > > /snapshots/gcc.git~master/gcc/doc/install.texi:2730: @ref reference to
> > > nonexistent node `GNAT-prerequisite'
> > > Makefile:3300: recipe for target
> > > '/builds/armv8l-unknown-linux-gnueabihf/armv8l-unknown-linux-gnueabihf/gcc.git~master-stage2/gcc/HTML/gcc-10.0.0/gccinstall/index.html'
> > > failed
> >
> > Hmm strange, the ref should be there:
> >
> Indeed, that's what I thought too

Allright, there are already similar kludges elsewhere, so I've applied the
following patch which fixes it:

2019-09-10  Arnaud Charlet  

* doc/install.texi: Fix syntax for html generation.

Index: doc/install.texi
===
--- doc/install.texi(revision 275400)
+++ doc/install.texi(working copy)
@@ -2727,7 +2727,12 @@

 @section Building the Ada compiler

-See @ref{GNAT-prerequisite}.
+@ifnothtml
+@ref{GNAT-prerequisite}.
+@end ifnothtml
+@ifhtml
+@uref{GNAT-prerequisite}.
+@end ifhtml

 @section Building with profile feedback

I've verified that the do-install-html and do-install-info targets are now
happy with the change.

Arno


Re: r272976 - in /trunk/gcc/ada: ChangeLog ali.adb ...

2019-09-09 Thread Christophe Lyon
On Mon, 9 Sep 2019 at 17:18, Arnaud Charlet  wrote:
>
> > > Just installed the following change on trunk, thanks again for your 
> > > feedback!
> > >
> > > 2019-09-05  Arnaud Charlet  
> > >
> > > * doc/install.texi: Update and clarify requirements to build GNAT.
> > >
> > Hi Arnaud,
> >
> > It seems there's a problem with this patch:
> > /snapshots/gcc.git~master/gcc/doc/install.texi:2730: @ref reference to
> > nonexistent node `GNAT-prerequisite'
> > Makefile:3300: recipe for target
> > '/builds/armv8l-unknown-linux-gnueabihf/armv8l-unknown-linux-gnueabihf/gcc.git~master-stage2/gcc/HTML/gcc-10.0.0/gccinstall/index.html'
> > failed
>
> Hmm strange, the ref should be there:
>
Indeed, that's what I thought too

> > > -@item GNAT
> > > +@item @anchor{GNAT-prerequisite}GNAT
>
> which "make" target is failing for you?

My log says:
make: *** [do-install-html] Error 2

> I guess the HTML generation is not handling the above anchor properly, 
> although
> it's not the first such use of @anchor{}.
>
> Generating install.info certainly works fine and generates the proper xref.
>
Maybe a problem with makeinfo version?

> Arno


Re: r272976 - in /trunk/gcc/ada: ChangeLog ali.adb ...

2019-09-09 Thread Arnaud Charlet
> > Just installed the following change on trunk, thanks again for your 
> > feedback!
> >
> > 2019-09-05  Arnaud Charlet  
> >
> > * doc/install.texi: Update and clarify requirements to build GNAT.
> >
> Hi Arnaud,
> 
> It seems there's a problem with this patch:
> /snapshots/gcc.git~master/gcc/doc/install.texi:2730: @ref reference to
> nonexistent node `GNAT-prerequisite'
> Makefile:3300: recipe for target
> '/builds/armv8l-unknown-linux-gnueabihf/armv8l-unknown-linux-gnueabihf/gcc.git~master-stage2/gcc/HTML/gcc-10.0.0/gccinstall/index.html'
> failed

Hmm strange, the ref should be there:

> > -@item GNAT
> > +@item @anchor{GNAT-prerequisite}GNAT

which "make" target is failing for you?

I guess the HTML generation is not handling the above anchor properly, although
it's not the first such use of @anchor{}.

Generating install.info certainly works fine and generates the proper xref.

Arno


Re: r272976 - in /trunk/gcc/ada: ChangeLog ali.adb ...

2019-09-09 Thread Christophe Lyon
On Thu, 5 Sep 2019 at 11:52, Arnaud Charlet  wrote:
>
> > > Can someone please remind me in which repository I can find the GCC
> > > prerequisites doc sources?
> >
> > Answering my own question: found it under gcc/doc/install.texi
> >
> > Working on it...
>
> Just installed the following change on trunk, thanks again for your feedback!
>
> 2019-09-05  Arnaud Charlet  
>
> * doc/install.texi: Update and clarify requirements to build GNAT.
>
Hi Arnaud,

It seems there's a problem with this patch:
/snapshots/gcc.git~master/gcc/doc/install.texi:2730: @ref reference to
nonexistent node `GNAT-prerequisite'
Makefile:3300: recipe for target
'/builds/armv8l-unknown-linux-gnueabihf/armv8l-unknown-linux-gnueabihf/gcc.git~master-stage2/gcc/HTML/gcc-10.0.0/gccinstall/index.html'
failed

Christophe

> Index: doc/install.texi
> ===
> --- doc/install.texi(revision 275399)
> +++ doc/install.texi(working copy)
> @@ -270,13 +270,35 @@
>  @option{--disable-multilib}.  Otherwise, you may encounter an error such as
>  @samp{fatal error: gnu/stubs-32.h: No such file}
>
> -@item GNAT
> +@item @anchor{GNAT-prerequisite}GNAT
>
> -In order to build the Ada compiler (GNAT) you must already have GNAT
> -installed because portions of the Ada frontend are written in Ada (with
> -GNAT extensions.)  Refer to the Ada installation instructions for more
> -specific information.
> +In order to build GNAT, the Ada compiler, you need a working GNAT
> +compiler (GCC version 4.7 or later).
>
> +This includes GNAT tools such as @command{gnatmake} and
> +@command{gnatlink}, since the Ada front end is written in Ada and
> +uses some GNAT-specific extensions.
> +
> +In order to build a cross compiler, it is strongly recommended to install
> +the new compiler as native first, and then use it to build the cross
> +compiler. Other native compiler versions may work but this is not guaranteed 
> and
> +will typically fail with hard to understand compilation errors during the
> +build.
> +
> +Similarly, it is strongly recommended to use an older version of GNAT to 
> build
> +GNAT. More recent versions of GNAT than the version built are not guaranteed
> +to work and will often fail during the build with compilation errors.
> +
> +Note that @command{configure} does not test whether the GNAT installation 
> works
> +and has a sufficiently recent version; if too old a GNAT version is
> +installed and @option{--enable-languages=ada} is used, the build will fail.
> +
> +@env{ADA_INCLUDE_PATH} and @env{ADA_OBJECT_PATH} environment variables
> +must not be set when building the Ada compiler, the Ada tools, or the
> +Ada runtime libraries. You can check that your build environment is clean
> +by verifying that @samp{gnatls -v} lists only one explicit path in each
> +section.
> +
>  @item A ``working'' POSIX compatible shell, or GNU bash
>
>  Necessary when running @command{configure} because some
> @@ -2705,27 +2727,8 @@
>
>  @section Building the Ada compiler
>
> -In order to build GNAT, the Ada compiler, you need a working GNAT
> -compiler (GCC version 4.0 or later).
> -This includes GNAT tools such as @command{gnatmake} and
> -@command{gnatlink}, since the Ada front end is written in Ada and
> -uses some GNAT-specific extensions.
> +See @ref{GNAT-prerequisite}.
>
> -In order to build a cross compiler, it is suggested to install
> -the new compiler as native first, and then use it to build the cross
> -compiler.
> -
> -@command{configure} does not test whether the GNAT installation works
> -and has a sufficiently recent version; if too old a GNAT version is
> -installed, the build will fail unless @option{--enable-languages} is
> -used to disable building the Ada front end.
> -
> -@env{ADA_INCLUDE_PATH} and @env{ADA_OBJECT_PATH} environment variables
> -must not be set when building the Ada compiler, the Ada tools, or the
> -Ada runtime libraries. You can check that your build environment is clean
> -by verifying that @samp{gnatls -v} lists only one explicit path in each
> -section.
> -
>  @section Building with profile feedback
>
>  It is possible to use profile feedback to optimize the compiler itself.  This


Re: r272976 - in /trunk/gcc/ada: ChangeLog ali.adb ...

2019-09-05 Thread Arnaud Charlet
> > Can someone please remind me in which repository I can find the GCC
> > prerequisites doc sources?
> 
> Answering my own question: found it under gcc/doc/install.texi
> 
> Working on it...

Just installed the following change on trunk, thanks again for your feedback!

2019-09-05  Arnaud Charlet  

* doc/install.texi: Update and clarify requirements to build GNAT.

Index: doc/install.texi
===
--- doc/install.texi(revision 275399)
+++ doc/install.texi(working copy)
@@ -270,13 +270,35 @@
 @option{--disable-multilib}.  Otherwise, you may encounter an error such as
 @samp{fatal error: gnu/stubs-32.h: No such file}
 
-@item GNAT
+@item @anchor{GNAT-prerequisite}GNAT
 
-In order to build the Ada compiler (GNAT) you must already have GNAT
-installed because portions of the Ada frontend are written in Ada (with
-GNAT extensions.)  Refer to the Ada installation instructions for more
-specific information.
+In order to build GNAT, the Ada compiler, you need a working GNAT
+compiler (GCC version 4.7 or later).
 
+This includes GNAT tools such as @command{gnatmake} and
+@command{gnatlink}, since the Ada front end is written in Ada and
+uses some GNAT-specific extensions.
+
+In order to build a cross compiler, it is strongly recommended to install
+the new compiler as native first, and then use it to build the cross
+compiler. Other native compiler versions may work but this is not guaranteed 
and
+will typically fail with hard to understand compilation errors during the
+build.
+
+Similarly, it is strongly recommended to use an older version of GNAT to build
+GNAT. More recent versions of GNAT than the version built are not guaranteed
+to work and will often fail during the build with compilation errors.
+
+Note that @command{configure} does not test whether the GNAT installation works
+and has a sufficiently recent version; if too old a GNAT version is
+installed and @option{--enable-languages=ada} is used, the build will fail.
+
+@env{ADA_INCLUDE_PATH} and @env{ADA_OBJECT_PATH} environment variables
+must not be set when building the Ada compiler, the Ada tools, or the
+Ada runtime libraries. You can check that your build environment is clean
+by verifying that @samp{gnatls -v} lists only one explicit path in each
+section.
+
 @item A ``working'' POSIX compatible shell, or GNU bash
 
 Necessary when running @command{configure} because some
@@ -2705,27 +2727,8 @@
 
 @section Building the Ada compiler
 
-In order to build GNAT, the Ada compiler, you need a working GNAT
-compiler (GCC version 4.0 or later).
-This includes GNAT tools such as @command{gnatmake} and
-@command{gnatlink}, since the Ada front end is written in Ada and
-uses some GNAT-specific extensions.
+See @ref{GNAT-prerequisite}.
 
-In order to build a cross compiler, it is suggested to install
-the new compiler as native first, and then use it to build the cross
-compiler.
-
-@command{configure} does not test whether the GNAT installation works
-and has a sufficiently recent version; if too old a GNAT version is
-installed, the build will fail unless @option{--enable-languages} is
-used to disable building the Ada front end.
-
-@env{ADA_INCLUDE_PATH} and @env{ADA_OBJECT_PATH} environment variables
-must not be set when building the Ada compiler, the Ada tools, or the
-Ada runtime libraries. You can check that your build environment is clean
-by verifying that @samp{gnatls -v} lists only one explicit path in each
-section.
-
 @section Building with profile feedback
 
 It is possible to use profile feedback to optimize the compiler itself.  This


Re: r272976 - in /trunk/gcc/ada: ChangeLog ali.adb ...

2019-09-05 Thread Arnaud Charlet
> Can someone please remind me in which repository I can find the GCC
> prerequisites doc sources?

Answering my own question: found it under gcc/doc/install.texi

Working on it...


Re: r272976 - in /trunk/gcc/ada: ChangeLog ali.adb ...

2019-09-05 Thread Arnaud Charlet
Maciej,

Thank you for your comments, I definitely agree with you that the document is
too well hidden and could be improved, I'll work on that and put the Ada
build requirements in a single, easier to find place (probably the
prerequisites since both you and I started from there).

Can someone please remind me in which repository I can find the GCC
prerequisites doc sources?

> buried in the build section.  Still I think the former paragraph really 
> belongs to the prerequisites section and so does the latter, perhaps with 
> a change to make it more explicit that building a cross-compiler may not 
> actually work if the versions do not match.  WDYT?

Agreed.

>  NB I have no specific interest in the Ada frontend.  Rather I want to 
> have all the frontends built and included in testing so that when making 
> changes any regressions trigger that would not with, say, the C frontend 
> only.

Makes sense, and definitely appreciated to have more people building and
testing the Ada front-end!

Arno


Re: r272976 - in /trunk/gcc/ada: ChangeLog ali.adb ...

2019-09-04 Thread Maciej W. Rozycki
Arnaud,

> >  This change (not posted to `gcc-patches' for some reason) has caused a 
> > regression in the form of a build failure with the `riscv-linux-gnu' 
> > target (and for the record the `x86_64-linux-gnu' build/host running GCC 
> > 8.3.0):
> > 
> > ali.adb:34:28: warning: use clause for package "GNAT" has no effect
> > ali.adb:35:28: warning: use clause for package "Dynamic_HTables" has no 
> > effect
> > ali.adb:155:52: "Bucket_Range_Type" is undefined (more references follow)
> > ali.adb:158:27: "Dynamic_Hash_Tables" is undefined
> > ali.adb:173:30: "Sig_Map" is undefined (more references follow)
> > gnatmake: ".../gcc/ada/ali.adb" compilation error
> > make[3]: *** [../gcc-interface/Makefile:469: gnatmake-re] Error 4
> > make[3]: Leaving directory '.../gcc/ada/tools'
> > make[2]: *** [Makefile:216: gnattools-cross] Error 2
> > make[2]: Leaving directory '.../gnattools'
> > make[1]: *** [Makefile:11224: all-gnattools] Error 2
> > 
> > -- that has persisted ever since.
> 
> As documented in https://gcc.gnu.org/install/build.html
> you need a matching native GNAT compiler to build a GNAT cross compiler.

 Hmm, I used to use matching versions of the whole GCC suite for building 
cross-compilers, but that was long ago, up to GCC 4.1, and not with GNAT 
specifically in mind.  I stopped being involved with the Ada frontend in 
any way then until recently.  Having come across this build problem I did 
check  and then 
 and all I found was:

"  GNAT
  In order to build the Ada compiler (GNAT) you must already have
  GNAT installed because portions of the Ada frontend are written
  in Ada (with GNAT extensions.) Refer to the Ada installation
  instructions for more specific information."

Notice that an earlier "ISO C++98 compiler" section mentions GCC "version 
3.4 or later" as required for building a cross-compiler, so arguably no 
version restriction (including though not limited to requiring the host 
compiler's version to match) being mentioned here may be interpreted as 
none at all (of course the 3.4 requirement for other parts of the compiler 
built alongside still applies).  Which is why I stopped looking further.

 NB I wasn't able to locate "the Ada installation instructions" referred.

> If I understood properly, you are using a GCC 8.3.0 as the host compiler
> to build a GNAT cross compiler, which indeed won't work: you need to first
> build a native matching compiler and then use this matching compiler to build
> the cross.

 Thanks for the hint.  I have now successfully natively bootstrapped 
current GCC trunk using my usual `--enable-languages=all' setting, and 
then used that `x86_64-linux-gnu' compiler suite to build my original 
`riscv-linux-gnu' cross-compilation environment.  I guess I'll have to 
wire a preparatory native build stage into my setup somehow.  Sorry about 
the noise.

 Perhaps it would make sense to make the prerequisites section of the 
installation instructions a little bit more explicit about the strict 
version match requirement though?  I guess someone being new to a GCC 
build would go through the whole document and then find this:

"  In order to build GNAT, the Ada compiler, you need a working GNAT
   compiler (GCC version 4.0 or later). This includes GNAT tools such as
   gnatmake and gnatlink, since the Ada front end is written in Ada and
   uses some GNAT-specific extensions."

and than that:

"  In order to build a cross compiler, it is suggested to install the new
   compiler as native first, and then use it to build the cross compiler."

buried in the build section.  Still I think the former paragraph really 
belongs to the prerequisites section and so does the latter, perhaps with 
a change to make it more explicit that building a cross-compiler may not 
actually work if the versions do not match.  WDYT?

 NB I have no specific interest in the Ada frontend.  Rather I want to 
have all the frontends built and included in testing so that when making 
changes any regressions trigger that would not with, say, the C frontend 
only.

  Maciej


Re: r272976 - in /trunk/gcc/ada: ChangeLog ali.adb ...

2019-09-04 Thread Andreas Schwab
On Sep 04 2019, "Maciej W. Rozycki"  wrote:

>  This means that no released GCC version can be used to build trunk GNAT, 
> which would provide a clean upgrade path, and there is only a narrow 
> window between r272860 and r272975 inclusive that lets one move on to GNAT 
> 10.  I find this rather unfortunate.

I don't see that here.  My gcc testers can still build trunk GNAT with
gcc 9.

http://gcc.gnu.org/ml/gcc-testresults/2019-09/msg00072.html
http://gcc.gnu.org/ml/gcc-testresults/2019-09/msg00349.html

Andreas.

-- 
Andreas Schwab, SUSE Labs, sch...@suse.de
GPG Key fingerprint = 0196 BAD8 1CE9 1970 F4BE  1748 E4D4 88E3 0EEA B9D7
"And now for something completely different."


Re: r272976 - in /trunk/gcc/ada: ChangeLog ali.adb ...

2019-09-04 Thread Arnaud Charlet
Maciej,

>  This change (not posted to `gcc-patches' for some reason) has caused a 
> regression in the form of a build failure with the `riscv-linux-gnu' 
> target (and for the record the `x86_64-linux-gnu' build/host running GCC 
> 8.3.0):
> 
> ali.adb:34:28: warning: use clause for package "GNAT" has no effect
> ali.adb:35:28: warning: use clause for package "Dynamic_HTables" has no effect
> ali.adb:155:52: "Bucket_Range_Type" is undefined (more references follow)
> ali.adb:158:27: "Dynamic_Hash_Tables" is undefined
> ali.adb:173:30: "Sig_Map" is undefined (more references follow)
> gnatmake: ".../gcc/ada/ali.adb" compilation error
> make[3]: *** [../gcc-interface/Makefile:469: gnatmake-re] Error 4
> make[3]: Leaving directory '.../gcc/ada/tools'
> make[2]: *** [Makefile:216: gnattools-cross] Error 2
> make[2]: Leaving directory '.../gnattools'
> make[1]: *** [Makefile:11224: all-gnattools] Error 2
> 
> -- that has persisted ever since.

As documented in https://gcc.gnu.org/install/build.html
you need a matching native GNAT compiler to build a GNAT cross compiler.

If I understood properly, you are using a GCC 8.3.0 as the host compiler
to build a GNAT cross compiler, which indeed won't work: you need to first
build a native matching compiler and then use this matching compiler to build
the cross.

Arno


Re: r272976 - in /trunk/gcc/ada: ChangeLog ali.adb ...

2019-09-04 Thread Maciej W. Rozycki
Hi,

On Wed, 3 Jul 2019, pmdero...@gcc.gnu.org wrote:

> Author: pmderodat
> Date: Wed Jul  3 08:14:57 2019
> New Revision: 272976
> 
> URL: https://gcc.gnu.org/viewcvs?rev=272976=gcc=rev
> Log:
> [Ada] ABE checks v3.0, foundations of Elaboration order v4.0
> 
> 
> -- Elaboration checks --
> 
> 
> The dynamic ABE checks model now emits the same diagnostics as those of the
> static ABE checks model.
> 
> The ABE checks mechanism has been redesigned and refactored in the face of
> increasing requirements. Most of the functionality can now be toggled, thus
> allowing for various combinations of behavior. The combinations are defined
> as "initial states" and may be further altered.
> 
> Scenarios and targets have been distinctly separated at the higher level,
> instead of directly working with nodes and entitites. Scenarios and targets
> now carry a representation which removes the need to constantly recompute
> relevant attributes, and offers a common interface for the various processors.
> 
> Most processing has now been refactored into "services" which perform a single
> ABE-related function.
> 
> ---
> -- Elaboration order --
> ---
> 
> A new elaboration order mechanism based on the use of an invocation graph to
> provide extra information about the flow of execution at elaboration time has
> been introduced.
> 
> The ABE checks mechanism has been altered to encode pieces of the invocation
> graph in the associated ALI files of units.
> 
> The new elaboration order mechanism reconstructs the full invocation graph at
> bind time, and coupled with the library item graph, determines the elaboration
> order of units.
> 
> The new elaboration order mechanism is currently inaccessible.

 This change (not posted to `gcc-patches' for some reason) has caused a 
regression in the form of a build failure with the `riscv-linux-gnu' 
target (and for the record the `x86_64-linux-gnu' build/host running GCC 
8.3.0):

ali.adb:34:28: warning: use clause for package "GNAT" has no effect
ali.adb:35:28: warning: use clause for package "Dynamic_HTables" has no effect
ali.adb:155:52: "Bucket_Range_Type" is undefined (more references follow)
ali.adb:158:27: "Dynamic_Hash_Tables" is undefined
ali.adb:173:30: "Sig_Map" is undefined (more references follow)
gnatmake: ".../gcc/ada/ali.adb" compilation error
make[3]: *** [../gcc-interface/Makefile:469: gnatmake-re] Error 4
make[3]: Leaving directory '.../gcc/ada/tools'
make[2]: *** [Makefile:216: gnattools-cross] Error 2
make[2]: Leaving directory '.../gnattools'
make[1]: *** [Makefile:11224: all-gnattools] Error 2

-- that has persisted ever since.

 I have noticed that the `Bucket_Range_Type' data type has only been added 
after GCC 8 has branched, so I tried GCC 9 instead, Debian 9.2.1 20190821 
specifically, but that still fails:

ali.adb:35:28: warning: use clause for package "Dynamic_HTables" has no effect
ali.adb:158:27: "Dynamic_Hash_Tables" is undefined
ali.adb:173:30: "Sig_Map" is undefined (more references follow)
gnatmake: ".../gcc/ada/ali.adb" compilation error
../gcc-interface/Makefile:468: recipe for target 'gnatmake-re' failed

-- likely due to r272860, which renamed the `Dynamic_HTable' package to 
`Dynamic_Hash_Tables' (r272860 is earlier than r272976, but it is only 
r272976 that has made GNAT proper use `Dynamic_Hash_Tables'; previously 
only `libgnat' used that package).

 This means that no released GCC version can be used to build trunk GNAT, 
which would provide a clean upgrade path, and there is only a narrow 
window between r272860 and r272975 inclusive that lets one move on to GNAT 
10.  I find this rather unfortunate.

 Can you please look into it?

  Maciej