r163773 doesn't want to bootstrap with Ada because of dependency problems.
I think I've tracked it down to ultimately '-I-' not working as described.
The symptom during make is while building gnattools in gcc/ada/tools:

error: "make.adb" must be recompiled ("a-except.ads" has been modified)
error: "ali.adb" must be recompiled ("a-except.ads" has been modified)
error: "output.adb" must be recompiled ("a-except.ads" has been modified)

(and many more about a-except.ads being out-of-date)

This is because there are conflicting entries for a-except.ads (and for Richi
also a-strunb.ads) in the different .ali files.  In a-except.ali:
D a-except.ads          20090806060045 34786013

But for instance in make.ali:
D a-except.ads          20090419230738 d4161513

Clearly two different files.  This is because compiling a-except.adb uses
the file from ../rts/a-except.ads which in turn is a symlink to
a-except-2005.ads.  But compiling make.adb from the same directory uses
not that symlink but the copy in $srcdir/ada/a-except.ads.  Can be easily
seen with strace.  From inside the builddir:
% cd gcc/ada/tools
% strace ../../gnat1 -I- -I ../rts -I . \
 -I /matz/gcc/svn/real-trunk/gcc/gcc/ada -gnatwa -dumpbase \ a-except.adb
-auxbase-strip \ a-except.o -O2 -O1 -Wextra -Wall -Wwrite-strings
-Wstrict-prototypes \
-Wmissing-prototypes -fno-inline -fno-toplevel-reorder -g -gnatpg -gnata \
-g -mtune=generic -march=x86-64 -gnatO a-except.o ../rts/a-except.adb 2>&1 |
grep a-except.ads
stat("../rts/a-except.ads", {st_mode=S_IFREG|0644, st_size=17275, ...}) = 0
stat("../rts/a-except.ads", {st_mode=S_IFREG|0644, st_size=17275, ...}) = 0
open("../rts/a-except.ads", O_RDONLY)   = 4

% ls -l ../rts/a-except.ads
lrwxrwxrwx 1 matz suse 54 2010-09-02 15:20 ../rts/a-except.ads ->
/matz/gcc/svn/real-trunk/gcc/gcc/ada/a-except-2005.ads

whereas:

% ../../gnat1  -I- -I../rts -I . -I /matz/gcc/svn/real-trunk/gcc/gcc/ada \
-gnatwa -quiet -dumpbase make.adb -auxbase-strip \ make.o -O2 -Wextra -Wall
-Wwrite-strings -Wstrict-prototypes \
-Wmissing-prototypes -g -gnatpg -gnata -mtune=generic -march=x86-64 -gnatO \
make.o /matz/gcc/svn/real-trunk/gcc/gcc/ada/make.adb -o bla.s 2>&1 | grep
a-except.ads
stat("/matz/gcc/svn/real-trunk/gcc/gcc/ada/a-except.ads",
{st_mode=S_IFREG|0644, st_size=15580, ...}) = 0
stat("/matz/gcc/svn/real-trunk/gcc/gcc/ada/a-except.ads",
{st_mode=S_IFREG|0644, st_size=15580, ...}) = 0
open("/matz/gcc/svn/real-trunk/gcc/gcc/ada/a-except.ads", O_RDONLY) = 4

So, when compiling make.adb it uses the a-except.ads file from the sourcedir
of make.adb.

This is contrary to the documentation of '-I-' which is used here for a reason
I guess.


-- 
           Summary: Ada bootstrap broken
           Product: gcc
           Version: 4.6.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: ada
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: matz at gcc dot gnu dot org
  GCC host triplet: x86_64-linux


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45499

Reply via email to