This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Status of ACT GNAT with GCC mainline
- From: Rainer Orth <ro at TechFak dot Uni-Bielefeld dot DE>
- To: Geert Bosch <bosch at gnat dot com>, Arnaud Charlet <charlet at ACT-Europe dot FR>
- Cc: gcc at gcc dot gnu dot org
- Date: Fri, 18 Jul 2003 20:21:09 +0200 (MEST)
- Subject: Status of ACT GNAT with GCC mainline
I've just tried to bootstrap GCC mainline with ACT GNAT sources from the
gcc-head branch:
http://gcc.gnu.org/ml/gcc/2003-04/msg00752.html
I tried four platforms:
alpha-dec-osf5.1, sparc-sun-solaris2.8, i386-pc-solaris2.9, and
mips-sgi-irix6.5
On the first three, I started with GCC 3.1 as the bootstrap compiler, while
I had to use GNAT 3.13p on IRIX 6 (more below).
I ran into a few problems, one generic and some platform specific:
* lang.opt is missing from the repository, so original opts.sh couldn't
extract the necessary information. Fixed by copying from the FSF gcc/ada
subdir.
* Bootstrap on Solaris 8/SPARC originally failed with
warnings-turned-to-errors in ada/init.c and ada/tracebak.c:
gcc/ada/init.c: In function `__gnat_error_handler':
gcc/ada/init.c:1222: warning: assignment discards qualifiers from pointer target type
gcc/ada/init.c:1234: warning: assignment discards qualifiers from pointer target type
gcc/ada/init.c:1240: warning: assignment discards qualifiers from pointer target type
gcc/ada/init.c:1245: warning: assignment discards qualifiers from pointer target type
gcc/ada/init.c:1250: warning: assignment discards qualifiers from pointer target type
gcc/ada/tracebak.c:330:1: warning: "MAX" redefined
In file included from /vol/gnu/src/gcc/gcc-dist/gcc/ada/tracebak.c:58:
gcc/system.h:245:1: warning: this is the location of the previous definition
The following trivial patch fixes this:
Thu Jul 17 22:23:43 2003 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
* tracebak.c (MAX): Avoid redefinition warning.
* init.c (__gnat_error_handler): Change msg to const char *.
Index: gcc/ada/init.c
===================================================================
RCS file: /anoncvs/gnat/init.c,v
retrieving revision 1.34
diff -u -p -r1.34 init.c
--- gcc/ada/init.c 12 Jun 2003 17:44:19 -0000 1.34
+++ gcc/ada/init.c 18 Jul 2003 18:06:13 -0000
@@ -1194,7 +1194,7 @@ __gnat_error_handler (sig, sip)
{
struct Exception_Data *exception;
static int recurse = 0;
- char *msg;
+ const char *msg;
/* If this was an explicit signal from a "kill", just resignal it. */
if (SI_FROMUSER (sip))
Index: gcc/ada/tracebak.c
===================================================================
RCS file: /anoncvs/gnat/tracebak.c,v
retrieving revision 1.17
diff -u -p -r1.17 tracebak.c
--- gcc/ada/tracebak.c 4 Jun 2003 13:04:00 -0000 1.17
+++ gcc/ada/tracebak.c 18 Jul 2003 18:06:13 -0000
@@ -327,7 +327,9 @@ extern unsigned int _image_base__;
#define VALID_STACK_FRAME(ptr) 1
#endif
+#ifndef MAX
#define MAX(x,y) ((x) > (y) ? (x) : (y))
+#endif
/* Define a dummy function to call if FORCE_CALL is defined. Don't
define it otherwise, as this could lead to "defined but not used"
After this change, bootstrap and make gnatlib_and_tools almost completed,
except for building gnatmem, which failed due to lack of -laddr2line and
-lbfd. This needs to be autoconfed, of course.
* Bootstrap etc. on Solaris 9/Intel was completely seamless.
* Bootstrap on Tru64 UNIX V5.1 was moderately easy. When starting with GCC
3.1, some binaries created during stage1 (xnmake, xsinfo, xeinfo,
xtreeprs, like xgnatug during a FSF bootstrap) get into an infinite
loop. I avoided this problem by copying over gcc/ada/{nmake.ad[bs],
einfo.h, sinfo.h, treeprs.ads} from one of the other builds. After that,
bootstrap finished seamlessly, except again for the lack of -laddr2line.
* Bootstrap on IRIX 6.5 was a nightmare, and provided no useful result,
though: I had to start off GNAT 3.13p since GCC 3.1 (or any other FSF
release of GCC 3) doesn't provide a working GNAT on IRIX 6. This is
documented in PR ada/6552, which has been completely ignored to date. To
avoid the GNAT 3.13p bug described in PR ada/6669, I had to remove -g
from STAGE1_CFLAGS. Even so, bootstrap fails at the end of stage1,
building libgcc:
gcc/libgcc2.c: In function `__divdi3':
gcc/libgcc2.c:1066: internal compiler error: in fixup_reorder_chain, at cfglayout.c:592
It looks like GNAT 3.13p/GCC 2.8.1 miscompiled the stage1 compiler. The
same happens when I try GNAT 3.15p instead.
As a last resort, I tried to go via GNAT 5.01h with the GCC 3.2 branch
and the patches in gcc-32.dif, i.e. bootstrap that one starting with GNAT
3.13p and then try to bootstrap GNAT 5.01w with GCC mainline.
Unfortunately, while the bootstrap completed, I ran into PR ada/6552
again, so I get no usable Ada runtime library either and cannot attempt
the second step to get to GNAT 5.01w.
So GNAT on IRIX seems to be completely hosed in any combination of tools
and sources ;-(
Btw., what are the current plans for merging ACT GNAT sources with the FSF
repository?
Rainer
-----------------------------------------------------------------------------
Rainer Orth, Faculty of Technology, Bielefeld University