[multiple changes]
authorArnaud Charlet <charlet@gcc.gnu.org>
Mon, 3 May 2004 11:58:34 +0000 (13:58 +0200)
committerArnaud Charlet <charlet@gcc.gnu.org>
Mon, 3 May 2004 11:58:34 +0000 (13:58 +0200)
2004-05-03  Olivier Hainque  <hainque@act-europe.fr>

PR ada/15152

* exp_ch2.adb (Expand_Current_Value): Leave Machine_Code Asm arguments
alone. Replacing object references by literals is inappropriate in a
so low level context.

2004-05-03  Arnaud Charlet  <charlet@act-europe.fr>

* a-exexpr.adb: Add comments

2004-05-03  Joel Brobecker  <brobecker@gnat.com>

* a-tags.adb (Tag_Table): Add Index_Check pragma Suppress. Allows us to
declare the Ancestor_Tags array in Type_Specific_Data with a small size
without risking a bounds check error when accessing one of its
components.
(Type_Specific_Data): Define Ancestor_Tags as a small array.
This prevents us from hitting a limitation during the debug info
generation when using stabs.

* a-tags.adb (Dispatch_Table): Define the Prims_Ptr component as a
small array.
This prevents us from hitting a limitation during the debug info
generation when using stabs.

2004-05-03  Eric Botcazou  <ebotcazou@act-europe.fr>

lang-specs.h: Remove -gnatz* from specs.

2004-05-03  Vincent Celier  <celier@gnat.com>

* gprmake.adb, makegpr.ads, makegpr.adb: New files.

* Make-lang.in, Makefile.in: Add gprmake

2004-05-03  Thomas Quinot  <quinot@act-europe.fr>

* sem_aggr.adb: Fix typo in comment.

2004-05-03  Robert Dewar  <dewar@gnat.com>

* make.adb: Minor reformatting

* rtsfind.ads, rtsfind.adb: (RTU_Loaded): New function

* sem_attr.adb (Eval_Attribute, case Type_Class): Fix check for address
so that it works when address is not a private type.

* sem_ch13.adb (Check_Expr_Constants, case N_Integer_Literal): Deal
properly with rewritten unchecked conversions. This prevents
order-of-elaboration issues that can otherwise arise.
(Minimum_Size): Don't check size of access types under VMS

* sem_ch4.adb (Remove_Address_Interpretation): New circuit to remove
interpretations of integer literals as type System.Address.

* sem_util.ads, sem_util.adb (Is_Descendent_Of_Address): New function
(Is_Descendent_Of): New function

2004-05-03  Jose Ruiz  <ruiz@act-europe.fr>

* sem_prag.adb: Boolean_Entry_Barriers is a synonym of Simple_Barriers.
Max_Entry_Queue_Depth is a synonym of Max_Entry_Queue_Length.
No_Dynamic_Interrupts is a synonym of No_Dynamic_Attachment.

* sem_res.adb: Use the new restriction Max_Entry_Queue_Length instead
of the old Max_Entry_Queue_Depth.

* snames.adb: Boolean_Entry_Barriers is a synonym of Simple_Barriers.
Max_Entry_Queue_Depth is a synonym of Max_Entry_Queue_Length
No_Dynamic_Interrupts is a synonym of No_Dynamic_Attachment

* snames.ads: New entry for proper handling of Boolean_Entry_Barriers.
New entry for proper handling of Max_Entry_Queue_Depth.
New entry for proper handling of No_Dynamic_Interrupts.

* s-rident.ads: Adding restriction Simple_Barriers (AI-00249) that
supersedes the GNAT specific restriction Boolean_Entry_Barriers.
Adding restriction Max_Entry_Queue_Length (AI-00249) that supersedes
the GNAT specific restriction Max_Entry_Queue_Depth.
Adding restriction No_Dynamic_Attachment (AI-00249) that supersedes
the GNAT specific restriction No_Dynamic_Interrupts.

* restrict.ads, restrict.adb: Use the new restriction Simple_Barriers
instead of the old Boolean_Entry_Barriers.
Use the new restriction No_Dynamic_Attachment instead of the old
No_Dynamic_Interrupts.

* exp_ch9.adb: Check restriction Simple_Barriers (AI-00249) that
supersedes the GNAT specific restriction Boolean_Entry_Barriers.

* gnatbind.adb: Use the new restriction Max_Entry_Queue_Length instead
of the old Max_Entry_Queue_Depth.

2004-05-03  GNAT Script  <nobody@gnat.com>

* Make-lang.in: Makefile automatically updated

From-SVN: r81429

29 files changed:
gcc/ada/ChangeLog
gcc/ada/Make-lang.in
gcc/ada/Makefile.in
gcc/ada/a-exexpr.adb
gcc/ada/a-tags.adb
gcc/ada/a-tags.ads
gcc/ada/exp_ch2.adb
gcc/ada/exp_ch9.adb
gcc/ada/gnatbind.adb
gcc/ada/gprmake.adb [new file with mode: 0644]
gcc/ada/lang-specs.h
gcc/ada/make.adb
gcc/ada/makegpr.adb [new file with mode: 0644]
gcc/ada/makegpr.ads [new file with mode: 0644]
gcc/ada/restrict.adb
gcc/ada/restrict.ads
gcc/ada/rtsfind.adb
gcc/ada/rtsfind.ads
gcc/ada/s-rident.ads
gcc/ada/sem_aggr.adb
gcc/ada/sem_attr.adb
gcc/ada/sem_ch13.adb
gcc/ada/sem_ch4.adb
gcc/ada/sem_prag.adb
gcc/ada/sem_res.adb
gcc/ada/sem_util.adb
gcc/ada/sem_util.ads
gcc/ada/snames.adb
gcc/ada/snames.ads

index 5daf8d435c005438ee43b2059981692650ce72ba..d6c5534ca12ed21468376ec82f34c26771275b3c 100644 (file)
@@ -1,3 +1,103 @@
+2004-05-03  Olivier Hainque  <hainque@act-europe.fr>
+
+       PR ada/15152
+
+       * exp_ch2.adb (Expand_Current_Value): Leave Machine_Code Asm arguments
+       alone. Replacing object references by literals is inappropriate in a
+       so low level context.
+
+2004-05-03  Arnaud Charlet  <charlet@act-europe.fr>
+
+       * a-exexpr.adb: Add comments
+
+2004-05-03  Joel Brobecker  <brobecker@gnat.com>
+
+       * a-tags.adb (Tag_Table): Add Index_Check pragma Suppress. Allows us to
+       declare the Ancestor_Tags array in Type_Specific_Data with a small size
+       without risking a bounds check error when accessing one of its
+       components.
+       (Type_Specific_Data): Define Ancestor_Tags as a small array.
+       This prevents us from hitting a limitation during the debug info
+       generation when using stabs.
+
+       * a-tags.adb (Dispatch_Table): Define the Prims_Ptr component as a
+       small array.
+       This prevents us from hitting a limitation during the debug info
+       generation when using stabs.
+
+2004-05-03  Eric Botcazou  <ebotcazou@act-europe.fr>
+
+       lang-specs.h: Remove -gnatz* from specs.
+
+2004-05-03  Vincent Celier  <celier@gnat.com>
+
+       * gprmake.adb, makegpr.ads, makegpr.adb: New files.
+
+       * Make-lang.in, Makefile.in: Add gprmake
+
+2004-05-03  Thomas Quinot  <quinot@act-europe.fr>
+
+       * sem_aggr.adb: Fix typo in comment.
+
+2004-05-03  Robert Dewar  <dewar@gnat.com>
+
+       * make.adb: Minor reformatting
+
+       * rtsfind.ads, rtsfind.adb: (RTU_Loaded): New function
+
+       * sem_attr.adb (Eval_Attribute, case Type_Class): Fix check for address
+       so that it works when address is not a private type.
+
+       * sem_ch13.adb (Check_Expr_Constants, case N_Integer_Literal): Deal
+       properly with rewritten unchecked conversions. This prevents
+       order-of-elaboration issues that can otherwise arise.
+       (Minimum_Size): Don't check size of access types under VMS
+
+       * sem_ch4.adb (Remove_Address_Interpretation): New circuit to remove
+       interpretations of integer literals as type System.Address.
+
+       * sem_util.ads, sem_util.adb (Is_Descendent_Of_Address): New function
+       (Is_Descendent_Of): New function
+
+2004-05-03  Jose Ruiz  <ruiz@act-europe.fr>
+
+       * sem_prag.adb: Boolean_Entry_Barriers is a synonym of Simple_Barriers.
+       Max_Entry_Queue_Depth is a synonym of Max_Entry_Queue_Length.
+       No_Dynamic_Interrupts is a synonym of No_Dynamic_Attachment.
+
+       * sem_res.adb: Use the new restriction Max_Entry_Queue_Length instead
+       of the old Max_Entry_Queue_Depth.
+
+       * snames.adb: Boolean_Entry_Barriers is a synonym of Simple_Barriers.
+       Max_Entry_Queue_Depth is a synonym of Max_Entry_Queue_Length
+       No_Dynamic_Interrupts is a synonym of No_Dynamic_Attachment
+
+       * snames.ads: New entry for proper handling of Boolean_Entry_Barriers.
+       New entry for proper handling of Max_Entry_Queue_Depth.
+       New entry for proper handling of No_Dynamic_Interrupts.
+
+       * s-rident.ads: Adding restriction Simple_Barriers (AI-00249) that
+       supersedes the GNAT specific restriction Boolean_Entry_Barriers.
+       Adding restriction Max_Entry_Queue_Length (AI-00249) that supersedes
+       the GNAT specific restriction Max_Entry_Queue_Depth.
+       Adding restriction No_Dynamic_Attachment (AI-00249) that supersedes
+       the GNAT specific restriction No_Dynamic_Interrupts.
+
+       * restrict.ads, restrict.adb: Use the new restriction Simple_Barriers
+       instead of the old Boolean_Entry_Barriers.
+       Use the new restriction No_Dynamic_Attachment instead of the old
+       No_Dynamic_Interrupts.
+
+       * exp_ch9.adb: Check restriction Simple_Barriers (AI-00249) that
+       supersedes the GNAT specific restriction Boolean_Entry_Barriers.
+
+       * gnatbind.adb: Use the new restriction Max_Entry_Queue_Length instead
+       of the old Max_Entry_Queue_Depth.
+
+2004-05-03  GNAT Script  <nobody@gnat.com>
+
+       * Make-lang.in: Makefile automatically updated
+
 2004-04-29  Ed Schonberg  <schonberg@gnat.com>
 
        * checks.adb (Enable_Range_Check): If the prefix of an index component
index 755ba55ed2a4dadc3da7b74dbd895c46a9481a64..751bc0395869ccf08d78bcc4f8f65eff0f56798c 100644 (file)
@@ -355,6 +355,10 @@ ada.all.cross:
        then \
           $(MV) gnatsym$(exeext)  gnatsym-cross$(exeext); \
        fi
+       -if [ -f gprmake$(exeext) ] ; \
+       then \
+          $(MV) gprmake$(exeext)  gprmake-cross$(exeext); \
+       fi
        -if [ -f gpr2make$(exeext) ] ; \
        then \
           $(MV) gpr2make$(exeext)  gpr2make-cross$(exeext); \
@@ -445,7 +449,7 @@ ada.install-normal:
 # and also as either gnatbind (if native) or $(tooldir)/bin/gnatbind
 # likewise for gnatf, gnatchop, and gnatlink, gnatkr, gnatmake, gnat,
 # gnatprep, gnatbl, gnatls, gnatxref, gnatfind, gnatname, gnatclean,
-# gnatsym
+# gnatsym, gprmake, gpr2make, gprcmd
 ada.install-common:
        $(MKDIR) $(DESTDIR)$(bindir)
        -if [ -f gnat1$(exeext) ] ; \
@@ -639,6 +643,17 @@ ada.install-common:
          fi ; \
        fi
        -if [ -f gnat1$(exeext) ] ; \
+       then \
+         if [ -f gprmake-cross$(exeext) ] ; \
+         then \
+           $(RM) $(DESTDIR)$(bindir)/$(target_noncanonical)-gprmake$(exeext); \
+           $(INSTALL_PROGRAM) gprmake-cross$(exeext) $(DESTDIR)$(bindir)/$(target_noncanonical)-gprmake$(exeext); \
+         else \
+           $(RM) $(bindir)/gprmake$(exeext); \
+           $(INSTALL_PROGRAM) gprmake$(exeext) $(DESTDIR)$(bindir)/gprmake$(exeext); \
+         fi ; \
+       fi
+       -if [ -f gnat1$(exeext) ] ; \
        then \
          if [ -f gpr2make$(exeext) ] ; \
          then \
@@ -795,6 +810,8 @@ ada.distclean:
        -$(RM) gnatxref$(exeext)
        -$(RM) gnatclean$(exeext)
        -$(RM) gnatsym$(exeext)
+       -$(RM) gpr2make$(exeext)
+       -$(RM) gprmake$(exeext)
 # Gnatlbr is only used on VMS
        -$(RM) gnatlbr$(exeext)
        -$(RM) ada/rts/*
@@ -1095,15 +1112,15 @@ ada/utils2.o : ada/utils2.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
 #
 # GNAT DEPENDENCIES
 # regular dependencies
-ada/a-charac.o : ada/ada.ads ada/a-charac.ads ada/system.ads
+ada/a-charac.o : ada/ada.ads ada/a-charac.ads ada/system.ads 
 
 ada/a-chlat1.o : ada/ada.ads ada/a-charac.ads ada/a-chlat1.ads \
-   ada/system.ads
+   ada/system.ads 
 
 ada/a-elchha.o : ada/ada.ads ada/a-except.ads ada/a-elchha.ads \
    ada/a-elchha.adb ada/system.ads ada/s-secsta.ads ada/s-soflin.ads \
    ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb \
-   ada/s-traent.ads ada/unchconv.ads
+   ada/s-traent.ads ada/unchconv.ads 
 
 ada/a-except.o : ada/ada.ads ada/a-except.ads ada/a-except.adb \
    ada/a-excach.adb ada/a-exexda.adb ada/a-exexpr.adb ada/a-exextr.adb \
@@ -1112,14 +1129,14 @@ ada/a-except.o : ada/ada.ads ada/a-except.ads ada/a-except.adb \
    ada/s-except.ads ada/s-mastop.ads ada/s-secsta.ads ada/s-soflin.ads \
    ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb \
    ada/s-traceb.ads ada/s-traent.ads ada/s-traent.adb ada/s-unstyp.ads \
-   ada/unchconv.ads
+   ada/unchconv.ads 
 
 ada/a-ioexce.o : ada/ada.ads ada/a-except.ads ada/a-ioexce.ads \
    ada/system.ads ada/s-exctab.ads ada/s-exctab.adb ada/s-htable.ads \
    ada/s-soflin.ads ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads \
-   ada/s-stoele.adb ada/s-traent.ads ada/unchconv.ads
+   ada/s-stoele.adb ada/s-traent.ads ada/unchconv.ads 
 
-ada/ada.o : ada/ada.ads ada/system.ads
+ada/ada.o : ada/ada.ads ada/system.ads 
 
 ada/ali-util.o : ada/ada.ads ada/a-except.ads ada/a-uncdea.ads ada/ali.ads \
    ada/ali-util.ads ada/ali-util.adb ada/alloc.ads ada/binderr.ads \
@@ -1137,7 +1154,7 @@ ada/ali-util.o : ada/ada.ads ada/a-except.ads ada/a-uncdea.ads ada/ali.ads \
    ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads ada/table.adb \
    ada/tree_io.ads ada/types.ads ada/types.adb ada/uintp.ads ada/uintp.adb \
    ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads ada/urealp.adb \
-   ada/widechar.ads
+   ada/widechar.ads 
 
 ada/ali.o : ada/ada.ads ada/a-except.ads ada/a-uncdea.ads ada/ali.ads \
    ada/ali.adb ada/alloc.ads ada/butil.ads ada/casing.ads ada/debug.ads \
@@ -1149,9 +1166,9 @@ ada/ali.o : ada/ada.ads ada/a-except.ads ada/a-uncdea.ads ada/ali.ads \
    ada/s-soflin.ads ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads \
    ada/s-stoele.adb ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads \
    ada/table.ads ada/table.adb ada/tree_io.ads ada/types.ads \
-   ada/unchconv.ads ada/unchdeal.ads ada/widechar.ads
+   ada/unchconv.ads ada/unchdeal.ads ada/widechar.ads 
 
-ada/alloc.o : ada/alloc.ads ada/system.ads
+ada/alloc.o : ada/alloc.ads ada/system.ads 
 
 ada/atree.o : ada/ada.ads ada/a-except.ads ada/a-uncdea.ads ada/alloc.ads \
    ada/atree.ads ada/atree.adb ada/casing.ads ada/debug.ads ada/einfo.ads \
@@ -1165,7 +1182,7 @@ ada/atree.o : ada/ada.ads ada/a-except.ads ada/a-uncdea.ads ada/alloc.ads \
    ada/s-stoele.ads ada/s-stoele.adb ada/s-traent.ads ada/s-unstyp.ads \
    ada/s-wchcon.ads ada/table.ads ada/table.adb ada/tree_io.ads \
    ada/types.ads ada/uintp.ads ada/uintp.adb ada/unchconv.ads \
-   ada/unchdeal.ads ada/urealp.ads
+   ada/unchdeal.ads ada/urealp.ads 
 
 ada/back_end.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/atree.ads \
    ada/atree.adb ada/back_end.ads ada/back_end.adb ada/casing.ads \
@@ -1182,7 +1199,7 @@ ada/back_end.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/atree.ads \
    ada/s-stoele.adb ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads \
    ada/table.ads ada/table.adb ada/tree_io.ads ada/types.ads ada/uintp.ads \
    ada/uintp.adb ada/uname.ads ada/unchconv.ads ada/unchdeal.ads \
-   ada/urealp.ads
+   ada/urealp.ads 
 
 ada/bcheck.o : ada/ada.ads ada/a-except.ads ada/ali.ads ada/ali-util.ads \
    ada/ali-util.adb ada/alloc.ads ada/bcheck.ads ada/bcheck.adb \
@@ -1199,7 +1216,7 @@ ada/bcheck.o : ada/ada.ads ada/a-except.ads ada/ali.ads ada/ali-util.ads \
    ada/s-stoele.ads ada/s-stoele.adb ada/s-traent.ads ada/s-unstyp.ads \
    ada/s-wchcon.ads ada/table.ads ada/table.adb ada/tree_io.ads \
    ada/types.ads ada/uintp.ads ada/unchconv.ads ada/unchdeal.ads \
-   ada/urealp.ads ada/widechar.ads
+   ada/urealp.ads ada/widechar.ads 
 
 ada/binde.o : ada/ada.ads ada/a-except.ads ada/ali.ads ada/alloc.ads \
    ada/binde.ads ada/binde.adb ada/binderr.ads ada/butil.ads \
@@ -1211,7 +1228,7 @@ ada/binde.o : ada/ada.ads ada/a-except.ads ada/ali.ads ada/alloc.ads \
    ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb ada/s-traent.ads \
    ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads ada/table.adb \
    ada/tree_io.ads ada/types.ads ada/unchconv.ads ada/unchdeal.ads \
-   ada/widechar.ads
+   ada/widechar.ads 
 
 ada/binderr.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/binderr.ads \
    ada/binderr.adb ada/butil.ads ada/debug.ads ada/gnat.ads \
@@ -1219,7 +1236,7 @@ ada/binderr.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/binderr.ads \
    ada/namet.ads ada/opt.ads ada/output.ads ada/system.ads \
    ada/s-exctab.ads ada/s-memory.ads ada/s-stalib.ads ada/s-traent.ads \
    ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads ada/table.adb \
-   ada/tree_io.ads ada/types.ads ada/unchconv.ads ada/unchdeal.ads
+   ada/tree_io.ads ada/types.ads ada/unchconv.ads ada/unchdeal.ads 
 
 ada/bindgen.o : ada/ada.ads ada/a-except.ads ada/ali.ads ada/alloc.ads \
    ada/binde.ads ada/bindgen.ads ada/bindgen.adb ada/butil.ads \
@@ -1233,12 +1250,12 @@ ada/bindgen.o : ada/ada.ads ada/a-except.ads ada/ali.ads ada/alloc.ads \
    ada/s-sopco3.ads ada/s-sopco4.ads ada/s-sopco5.ads ada/s-traent.ads \
    ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads ada/table.adb \
    ada/targparm.ads ada/tree_io.ads ada/types.ads ada/unchconv.ads \
-   ada/unchdeal.ads
+   ada/unchdeal.ads 
 
 ada/bindusg.o : ada/bindusg.ads ada/bindusg.adb ada/gnat.ads \
    ada/g-os_lib.ads ada/g-string.ads ada/osint.ads ada/output.ads \
    ada/system.ads ada/s-exctab.ads ada/s-stalib.ads ada/s-unstyp.ads \
-   ada/types.ads ada/unchconv.ads ada/unchdeal.ads
+   ada/types.ads ada/unchconv.ads ada/unchdeal.ads 
 
 ada/butil.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/butil.ads \
    ada/butil.adb ada/debug.ads ada/gnat.ads ada/g-os_lib.ads \
@@ -1246,7 +1263,7 @@ ada/butil.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/butil.ads \
    ada/opt.ads ada/output.ads ada/system.ads ada/s-exctab.ads \
    ada/s-memory.ads ada/s-stalib.ads ada/s-traent.ads ada/s-unstyp.ads \
    ada/s-wchcon.ads ada/table.ads ada/table.adb ada/tree_io.ads \
-   ada/types.ads ada/unchconv.ads ada/unchdeal.ads
+   ada/types.ads ada/unchconv.ads ada/unchdeal.ads 
 
 ada/casing.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/casing.ads \
    ada/casing.adb ada/csets.ads ada/csets.adb ada/debug.ads ada/gnat.ads \
@@ -1255,7 +1272,7 @@ ada/casing.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/casing.ads \
    ada/s-exctab.ads ada/s-memory.ads ada/s-stalib.ads ada/s-traent.ads \
    ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads ada/table.adb \
    ada/tree_io.ads ada/types.ads ada/unchconv.ads ada/unchdeal.ads \
-   ada/widechar.ads
+   ada/widechar.ads 
 
 ada/checks.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/atree.ads \
    ada/atree.adb ada/casing.ads ada/checks.ads ada/checks.adb \
@@ -1281,7 +1298,8 @@ ada/checks.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/atree.ads \
    ada/s-wchcon.ads ada/table.ads ada/table.adb ada/targparm.ads \
    ada/tbuild.ads ada/tbuild.adb ada/tree_io.ads ada/ttypes.ads \
    ada/types.ads ada/uintp.ads ada/uintp.adb ada/uname.ads \
-   ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads ada/validsw.ads
+   ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads ada/urealp.adb \
+   ada/validsw.ads 
 
 ada/comperr.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/atree.ads \
    ada/atree.adb ada/casing.ads ada/comperr.ads ada/comperr.adb \
@@ -1299,12 +1317,12 @@ ada/comperr.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/atree.ads \
    ada/s-stoele.adb ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads \
    ada/table.ads ada/table.adb ada/tree_io.ads ada/treepr.ads \
    ada/types.ads ada/uintp.ads ada/uintp.adb ada/uname.ads \
-   ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads
+   ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads 
 
 ada/csets.o : ada/csets.ads ada/csets.adb ada/gnat.ads ada/g-string.ads \
    ada/gnatvsn.ads ada/hostparm.ads ada/opt.ads ada/system.ads \
    ada/s-exctab.ads ada/s-stalib.ads ada/s-unstyp.ads ada/s-wchcon.ads \
-   ada/types.ads ada/unchconv.ads ada/unchdeal.ads
+   ada/types.ads ada/unchconv.ads ada/unchdeal.ads 
 
 ada/cstand.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/atree.ads \
    ada/atree.adb ada/casing.ads ada/checks.ads ada/csets.ads \
@@ -1329,9 +1347,9 @@ ada/cstand.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/atree.ads \
    ada/table.ads ada/table.adb ada/targparm.ads ada/tbuild.ads \
    ada/tree_io.ads ada/ttypef.ads ada/ttypes.ads ada/types.ads \
    ada/uintp.ads ada/uintp.adb ada/unchconv.ads ada/unchdeal.ads \
-   ada/urealp.ads ada/urealp.adb ada/widechar.ads
+   ada/urealp.ads ada/urealp.adb ada/widechar.ads 
 
-ada/debug.o : ada/debug.ads ada/debug.adb ada/system.ads
+ada/debug.o : ada/debug.ads ada/debug.adb ada/system.ads 
 
 ada/debug_a.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/atree.ads \
    ada/atree.adb ada/casing.ads ada/debug.ads ada/debug_a.ads \
@@ -1344,7 +1362,7 @@ ada/debug_a.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/atree.ads \
    ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb ada/s-traent.ads \
    ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads ada/table.adb \
    ada/tree_io.ads ada/types.ads ada/uintp.ads ada/unchconv.ads \
-   ada/unchdeal.ads ada/urealp.ads
+   ada/unchdeal.ads ada/urealp.ads 
 
 ada/einfo.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/atree.ads \
    ada/atree.adb ada/casing.ads ada/debug.ads ada/einfo.ads ada/einfo.adb \
@@ -1357,7 +1375,7 @@ ada/einfo.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/atree.ads \
    ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb \
    ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads \
    ada/table.adb ada/tree_io.ads ada/types.ads ada/uintp.ads ada/uintp.adb \
-   ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads
+   ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads 
 
 ada/elists.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/debug.ads \
    ada/elists.ads ada/elists.adb ada/gnat.ads ada/g-os_lib.ads \
@@ -1365,7 +1383,7 @@ ada/elists.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/debug.ads \
    ada/output.ads ada/system.ads ada/s-exctab.ads ada/s-memory.ads \
    ada/s-stalib.ads ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads \
    ada/table.ads ada/table.adb ada/tree_io.ads ada/types.ads \
-   ada/unchconv.ads ada/unchdeal.ads
+   ada/unchconv.ads ada/unchdeal.ads 
 
 ada/err_vars.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/debug.ads \
    ada/err_vars.ads ada/gnat.ads ada/g-os_lib.ads ada/g-string.ads \
@@ -1374,7 +1392,7 @@ ada/err_vars.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/debug.ads \
    ada/s-memory.ads ada/s-soflin.ads ada/s-stache.ads ada/s-stalib.ads \
    ada/s-stoele.ads ada/s-stoele.adb ada/s-traent.ads ada/s-unstyp.ads \
    ada/s-wchcon.ads ada/table.ads ada/table.adb ada/tree_io.ads \
-   ada/types.ads ada/uintp.ads ada/unchconv.ads ada/unchdeal.ads
+   ada/types.ads ada/uintp.ads ada/unchconv.ads ada/unchdeal.ads 
 
 ada/errout.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/atree.ads \
    ada/atree.adb ada/casing.ads ada/csets.ads ada/debug.ads ada/einfo.ads \
@@ -1392,7 +1410,7 @@ ada/errout.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/atree.ads \
    ada/s-stoele.ads ada/s-stoele.adb ada/s-traent.ads ada/s-unstyp.ads \
    ada/s-wchcon.ads ada/table.ads ada/table.adb ada/tree_io.ads \
    ada/types.ads ada/uintp.ads ada/uintp.adb ada/uname.ads \
-   ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads
+   ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads 
 
 ada/erroutc.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/casing.ads \
    ada/debug.ads ada/err_vars.ads ada/erroutc.ads ada/erroutc.adb \
@@ -1403,7 +1421,7 @@ ada/erroutc.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/casing.ads \
    ada/s-rident.ads ada/s-stalib.ads ada/s-traent.ads ada/s-unstyp.ads \
    ada/s-wchcon.ads ada/table.ads ada/table.adb ada/targparm.ads \
    ada/tree_io.ads ada/types.ads ada/uintp.ads ada/unchconv.ads \
-   ada/unchdeal.ads
+   ada/unchdeal.ads 
 
 ada/eval_fat.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/atree.ads \
    ada/atree.adb ada/casing.ads ada/debug.ads ada/einfo.ads ada/einfo.adb \
@@ -1419,7 +1437,7 @@ ada/eval_fat.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/atree.ads \
    ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads ada/table.adb \
    ada/targparm.ads ada/tree_io.ads ada/ttypef.ads ada/types.ads \
    ada/uintp.ads ada/uintp.adb ada/unchconv.ads ada/unchdeal.ads \
-   ada/urealp.ads ada/urealp.adb
+   ada/urealp.ads ada/urealp.adb 
 
 ada/exp_aggr.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/atree.ads \
    ada/atree.adb ada/casing.ads ada/checks.ads ada/checks.adb \
@@ -1446,7 +1464,7 @@ ada/exp_aggr.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/atree.ads \
    ada/table.adb ada/targparm.ads ada/tbuild.ads ada/tbuild.adb \
    ada/tree_io.ads ada/ttypes.ads ada/types.ads ada/uintp.ads \
    ada/uintp.adb ada/uname.ads ada/unchconv.ads ada/unchdeal.ads \
-   ada/urealp.ads ada/validsw.ads
+   ada/urealp.ads ada/validsw.ads 
 
 ada/exp_attr.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/atree.ads \
    ada/atree.adb ada/casing.ads ada/checks.ads ada/csets.ads ada/debug.ads \
@@ -1475,7 +1493,7 @@ ada/exp_attr.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/atree.ads \
    ada/tbuild.adb ada/tree_io.ads ada/ttypes.ads ada/types.ads \
    ada/types.adb ada/uintp.ads ada/uintp.adb ada/uname.ads \
    ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads ada/validsw.ads \
-   ada/widechar.ads
+   ada/widechar.ads 
 
 ada/exp_ch11.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/atree.ads \
    ada/atree.adb ada/casing.ads ada/casing.adb ada/checks.ads \
@@ -1502,7 +1520,7 @@ ada/exp_ch11.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/atree.ads \
    ada/table.adb ada/targparm.ads ada/tbuild.ads ada/tbuild.adb \
    ada/tree_io.ads ada/ttypes.ads ada/types.ads ada/types.adb \
    ada/uintp.ads ada/uintp.adb ada/uname.ads ada/unchconv.ads \
-   ada/unchdeal.ads ada/urealp.ads ada/widechar.ads
+   ada/unchdeal.ads ada/urealp.ads ada/widechar.ads 
 
 ada/exp_ch12.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/atree.ads \
    ada/atree.adb ada/casing.ads ada/checks.ads ada/debug.ads ada/einfo.ads \
@@ -1519,7 +1537,7 @@ ada/exp_ch12.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/atree.ads \
    ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads ada/table.adb \
    ada/tbuild.ads ada/tbuild.adb ada/tree_io.ads ada/types.ads \
    ada/uintp.ads ada/uintp.adb ada/unchconv.ads ada/unchdeal.ads \
-   ada/urealp.ads
+   ada/urealp.ads 
 
 ada/exp_ch13.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/atree.ads \
    ada/atree.adb ada/casing.ads ada/checks.ads ada/debug.ads ada/einfo.ads \
@@ -1537,7 +1555,7 @@ ada/exp_ch13.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/atree.ads \
    ada/s-stoele.ads ada/s-stoele.adb ada/s-traent.ads ada/s-unstyp.ads \
    ada/s-wchcon.ads ada/table.ads ada/table.adb ada/tbuild.ads \
    ada/tree_io.ads ada/types.ads ada/types.adb ada/uintp.ads ada/uintp.adb \
-   ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads
+   ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads 
 
 ada/exp_ch2.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/atree.ads \
    ada/atree.adb ada/casing.ads ada/checks.ads ada/debug.ads ada/einfo.ads \
@@ -1559,70 +1577,71 @@ ada/exp_ch2.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/atree.ads \
    ada/table.ads ada/table.adb ada/targparm.ads ada/tbuild.ads \
    ada/tree_io.ads ada/ttypes.ads ada/types.ads ada/uintp.ads \
    ada/uintp.adb ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads \
-   ada/validsw.ads
+   ada/validsw.ads 
 
 ada/exp_ch3.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/atree.ads \
    ada/atree.adb ada/casing.ads ada/checks.ads ada/checks.adb \
    ada/debug.ads ada/einfo.ads ada/einfo.adb ada/elists.ads ada/elists.adb \
-   ada/err_vars.ads ada/errout.ads ada/erroutc.ads ada/exp_aggr.ads \
-   ada/exp_ch11.ads ada/exp_ch2.ads ada/exp_ch3.ads ada/exp_ch3.adb \
-   ada/exp_ch4.ads ada/exp_ch7.ads ada/exp_ch9.ads ada/exp_disp.ads \
-   ada/exp_dist.ads ada/exp_smem.ads ada/exp_strm.ads ada/exp_tss.ads \
-   ada/exp_tss.adb ada/exp_util.ads ada/fname.ads ada/fname-uf.ads \
-   ada/freeze.ads ada/get_targ.ads ada/gnat.ads ada/g-htable.ads \
-   ada/g-os_lib.ads ada/g-string.ads ada/gnatvsn.ads ada/hostparm.ads \
-   ada/lib.ads ada/namet.ads ada/nlists.ads ada/nlists.adb ada/nmake.ads \
-   ada/nmake.adb ada/opt.ads ada/output.ads ada/restrict.ads \
-   ada/restrict.adb ada/rident.ads ada/rtsfind.ads ada/sem.ads \
-   ada/sem_ch3.ads ada/sem_ch8.ads ada/sem_eval.ads ada/sem_mech.ads \
-   ada/sem_res.ads ada/sem_util.ads ada/sem_warn.ads ada/sinfo.ads \
-   ada/sinfo.adb ada/sinput.ads ada/snames.ads ada/sprint.ads \
-   ada/stand.ads ada/stringt.ads ada/stringt.adb ada/system.ads \
-   ada/s-exctab.ads ada/s-htable.ads ada/s-imgenu.ads ada/s-memory.ads \
-   ada/s-rident.ads ada/s-secsta.ads ada/s-soflin.ads ada/s-stache.ads \
-   ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb ada/s-traent.ads \
-   ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads ada/table.adb \
-   ada/targparm.ads ada/tbuild.ads ada/tbuild.adb ada/tree_io.ads \
-   ada/ttypes.ads ada/types.ads ada/uintp.ads ada/uintp.adb ada/uname.ads \
-   ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads ada/validsw.ads
+   ada/err_vars.ads ada/errout.ads ada/erroutc.ads ada/eval_fat.ads \
+   ada/exp_aggr.ads ada/exp_ch11.ads ada/exp_ch2.ads ada/exp_ch3.ads \
+   ada/exp_ch3.adb ada/exp_ch4.ads ada/exp_ch7.ads ada/exp_ch9.ads \
+   ada/exp_disp.ads ada/exp_dist.ads ada/exp_smem.ads ada/exp_strm.ads \
+   ada/exp_tss.ads ada/exp_tss.adb ada/exp_util.ads ada/fname.ads \
+   ada/fname-uf.ads ada/freeze.ads ada/get_targ.ads ada/gnat.ads \
+   ada/g-htable.ads ada/g-os_lib.ads ada/g-string.ads ada/gnatvsn.ads \
+   ada/hostparm.ads ada/lib.ads ada/namet.ads ada/nlists.ads \
+   ada/nlists.adb ada/nmake.ads ada/nmake.adb ada/opt.ads ada/output.ads \
+   ada/restrict.ads ada/restrict.adb ada/rident.ads ada/rtsfind.ads \
+   ada/sem.ads ada/sem_ch3.ads ada/sem_ch8.ads ada/sem_eval.ads \
+   ada/sem_mech.ads ada/sem_res.ads ada/sem_util.ads ada/sem_warn.ads \
+   ada/sinfo.ads ada/sinfo.adb ada/sinput.ads ada/snames.ads \
+   ada/sprint.ads ada/stand.ads ada/stringt.ads ada/stringt.adb \
+   ada/system.ads ada/s-exctab.ads ada/s-htable.ads ada/s-imgenu.ads \
+   ada/s-memory.ads ada/s-rident.ads ada/s-secsta.ads ada/s-soflin.ads \
+   ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb \
+   ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads \
+   ada/table.adb ada/targparm.ads ada/tbuild.ads ada/tbuild.adb \
+   ada/tree_io.ads ada/ttypes.ads ada/types.ads ada/uintp.ads \
+   ada/uintp.adb ada/uname.ads ada/unchconv.ads ada/unchdeal.ads \
+   ada/urealp.ads ada/validsw.ads 
 
 ada/exp_ch4.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/atree.ads \
    ada/atree.adb ada/casing.ads ada/checks.ads ada/checks.adb \
    ada/debug.ads ada/einfo.ads ada/einfo.adb ada/elists.ads ada/elists.adb \
-   ada/err_vars.ads ada/errout.ads ada/erroutc.ads ada/exp_aggr.ads \
-   ada/exp_ch11.ads ada/exp_ch2.ads ada/exp_ch3.ads ada/exp_ch4.ads \
-   ada/exp_ch4.adb ada/exp_ch7.ads ada/exp_ch9.ads ada/exp_disp.ads \
-   ada/exp_fixd.ads ada/exp_pakd.ads ada/exp_tss.ads ada/exp_util.ads \
-   ada/exp_util.adb ada/exp_vfpt.ads ada/freeze.ads ada/get_targ.ads \
-   ada/gnat.ads ada/g-htable.ads ada/g-os_lib.ads ada/g-string.ads \
-   ada/gnatvsn.ads ada/hostparm.ads ada/inline.ads ada/itypes.ads \
-   ada/lib.ads ada/namet.ads ada/nlists.ads ada/nlists.adb ada/nmake.ads \
-   ada/nmake.adb ada/opt.ads ada/output.ads ada/restrict.ads \
+   ada/err_vars.ads ada/errout.ads ada/erroutc.ads ada/eval_fat.ads \
+   ada/exp_aggr.ads ada/exp_ch11.ads ada/exp_ch2.ads ada/exp_ch3.ads \
+   ada/exp_ch4.ads ada/exp_ch4.adb ada/exp_ch7.ads ada/exp_ch9.ads \
+   ada/exp_disp.ads ada/exp_fixd.ads ada/exp_pakd.ads ada/exp_tss.ads \
+   ada/exp_util.ads ada/exp_util.adb ada/exp_vfpt.ads ada/freeze.ads \
+   ada/get_targ.ads ada/gnat.ads ada/g-htable.ads ada/g-os_lib.ads \
+   ada/g-string.ads ada/gnatvsn.ads ada/hostparm.ads ada/inline.ads \
+   ada/itypes.ads ada/lib.ads ada/namet.ads ada/nlists.ads ada/nlists.adb \
+   ada/nmake.ads ada/nmake.adb ada/opt.ads ada/output.ads ada/restrict.ads \
    ada/rident.ads ada/rtsfind.ads ada/sem.ads ada/sem_cat.ads \
-   ada/sem_ch13.ads ada/sem_ch8.ads ada/sem_eval.ads ada/sem_res.ads \
-   ada/sem_type.ads ada/sem_util.ads ada/sem_warn.ads ada/sinfo.ads \
-   ada/sinfo.adb ada/sinfo-cn.ads ada/sinput.ads ada/snames.ads \
-   ada/sprint.ads ada/stand.ads ada/stringt.ads ada/system.ads \
-   ada/s-exctab.ads ada/s-htable.ads ada/s-imgenu.ads ada/s-memory.ads \
-   ada/s-rident.ads ada/s-secsta.ads ada/s-soflin.ads ada/s-stache.ads \
-   ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb ada/s-traent.ads \
-   ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads ada/table.adb \
-   ada/targparm.ads ada/tbuild.ads ada/tbuild.adb ada/tree_io.ads \
-   ada/ttypes.ads ada/types.ads ada/uintp.ads ada/uintp.adb \
-   ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads ada/urealp.adb \
-   ada/validsw.ads
+   ada/sem_ch13.ads ada/sem_ch8.ads ada/sem_eval.ads ada/sem_eval.adb \
+   ada/sem_res.ads ada/sem_type.ads ada/sem_util.ads ada/sem_warn.ads \
+   ada/sinfo.ads ada/sinfo.adb ada/sinfo-cn.ads ada/sinput.ads \
+   ada/snames.ads ada/sprint.ads ada/stand.ads ada/stringt.ads \
+   ada/stringt.adb ada/system.ads ada/s-exctab.ads ada/s-htable.ads \
+   ada/s-imgenu.ads ada/s-memory.ads ada/s-rident.ads ada/s-secsta.ads \
+   ada/s-soflin.ads ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads \
+   ada/s-stoele.adb ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads \
+   ada/table.ads ada/table.adb ada/targparm.ads ada/tbuild.ads \
+   ada/tbuild.adb ada/tree_io.ads ada/ttypes.ads ada/types.ads \
+   ada/uintp.ads ada/uintp.adb ada/unchconv.ads ada/unchdeal.ads \
+   ada/urealp.ads ada/urealp.adb ada/validsw.ads 
 
 ada/exp_ch5.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/atree.ads \
    ada/atree.adb ada/casing.ads ada/checks.ads ada/checks.adb \
    ada/csets.ads ada/debug.ads ada/einfo.ads ada/einfo.adb ada/elists.ads \
-   ada/err_vars.ads ada/errout.ads ada/erroutc.ads ada/exp_aggr.ads \
-   ada/exp_ch11.ads ada/exp_ch2.ads ada/exp_ch5.ads ada/exp_ch5.adb \
-   ada/exp_ch7.ads ada/exp_dbug.ads ada/exp_pakd.ads ada/exp_tss.ads \
-   ada/exp_util.ads ada/exp_util.adb ada/fname.ads ada/fname-uf.ads \
-   ada/freeze.ads ada/get_targ.ads ada/gnat.ads ada/g-htable.ads \
-   ada/g-os_lib.ads ada/g-string.ads ada/gnatvsn.ads ada/hostparm.ads \
-   ada/inline.ads ada/interfac.ads ada/itypes.ads ada/lib.ads \
-   ada/lib-xref.ads ada/namet.ads ada/namet.adb ada/nlists.ads \
+   ada/err_vars.ads ada/errout.ads ada/erroutc.ads ada/eval_fat.ads \
+   ada/exp_aggr.ads ada/exp_ch11.ads ada/exp_ch2.ads ada/exp_ch5.ads \
+   ada/exp_ch5.adb ada/exp_ch7.ads ada/exp_dbug.ads ada/exp_pakd.ads \
+   ada/exp_tss.ads ada/exp_util.ads ada/exp_util.adb ada/fname.ads \
+   ada/fname-uf.ads ada/freeze.ads ada/get_targ.ads ada/gnat.ads \
+   ada/g-htable.ads ada/g-os_lib.ads ada/g-string.ads ada/gnatvsn.ads \
+   ada/hostparm.ads ada/inline.ads ada/interfac.ads ada/itypes.ads \
+   ada/lib.ads ada/lib-xref.ads ada/namet.ads ada/namet.adb ada/nlists.ads \
    ada/nlists.adb ada/nmake.ads ada/nmake.adb ada/opt.ads ada/output.ads \
    ada/restrict.ads ada/restrict.adb ada/rident.ads ada/rtsfind.ads \
    ada/scans.ads ada/scn.ads ada/scng.ads ada/scng.adb ada/sem.ads \
@@ -1639,39 +1658,39 @@ ada/exp_ch5.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/atree.ads \
    ada/tbuild.ads ada/tbuild.adb ada/tree_io.ads ada/ttypes.ads \
    ada/types.ads ada/uintp.ads ada/uintp.adb ada/uname.ads \
    ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads ada/validsw.ads \
-   ada/widechar.ads
+   ada/widechar.ads 
 
 ada/exp_ch6.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/atree.ads \
    ada/atree.adb ada/casing.ads ada/checks.ads ada/checks.adb \
    ada/csets.ads ada/debug.ads ada/einfo.ads ada/einfo.adb ada/elists.ads \
    ada/elists.adb ada/err_vars.ads ada/errout.ads ada/erroutc.ads \
-   ada/exp_ch11.ads ada/exp_ch2.ads ada/exp_ch3.ads ada/exp_ch6.ads \
-   ada/exp_ch6.adb ada/exp_ch7.ads ada/exp_ch9.ads ada/exp_dbug.ads \
-   ada/exp_disp.ads ada/exp_dist.ads ada/exp_intr.ads ada/exp_pakd.ads \
-   ada/exp_tss.ads ada/exp_util.ads ada/exp_util.adb ada/fname.ads \
-   ada/fname-uf.ads ada/freeze.ads ada/get_targ.ads ada/gnat.ads \
-   ada/g-hesora.ads ada/g-htable.ads ada/g-os_lib.ads ada/g-string.ads \
-   ada/gnatvsn.ads ada/hostparm.ads ada/inline.ads ada/interfac.ads \
-   ada/itypes.ads ada/lib.ads ada/lib.adb ada/lib-list.adb \
-   ada/lib-sort.adb ada/lib-xref.ads ada/namet.ads ada/namet.adb \
-   ada/nlists.ads ada/nlists.adb ada/nmake.ads ada/nmake.adb ada/opt.ads \
-   ada/output.ads ada/restrict.ads ada/restrict.adb ada/rident.ads \
-   ada/rtsfind.ads ada/scans.ads ada/scn.ads ada/scng.ads ada/scng.adb \
-   ada/sem.ads ada/sem_ch12.ads ada/sem_ch13.ads ada/sem_ch6.ads \
-   ada/sem_ch8.ads ada/sem_disp.ads ada/sem_dist.ads ada/sem_eval.ads \
-   ada/sem_res.ads ada/sem_type.ads ada/sem_util.ads ada/sem_util.adb \
-   ada/sem_warn.ads ada/sinfo.ads ada/sinfo.adb ada/sinput.ads \
-   ada/snames.ads ada/sprint.ads ada/stand.ads ada/stringt.ads \
-   ada/style.ads ada/styleg.ads ada/styleg.adb ada/styleg-c.ads \
-   ada/stylesw.ads ada/system.ads ada/s-crc32.ads ada/s-exctab.ads \
-   ada/s-htable.ads ada/s-imgenu.ads ada/s-memory.ads ada/s-rident.ads \
-   ada/s-secsta.ads ada/s-soflin.ads ada/s-stache.ads ada/s-stalib.ads \
-   ada/s-stoele.ads ada/s-stoele.adb ada/s-traent.ads ada/s-unstyp.ads \
-   ada/s-wchcon.ads ada/table.ads ada/table.adb ada/targparm.ads \
-   ada/tbuild.ads ada/tbuild.adb ada/tree_io.ads ada/ttypes.ads \
-   ada/types.ads ada/uintp.ads ada/uintp.adb ada/uname.ads \
+   ada/eval_fat.ads ada/exp_ch11.ads ada/exp_ch2.ads ada/exp_ch3.ads \
+   ada/exp_ch6.ads ada/exp_ch6.adb ada/exp_ch7.ads ada/exp_ch9.ads \
+   ada/exp_dbug.ads ada/exp_disp.ads ada/exp_dist.ads ada/exp_intr.ads \
+   ada/exp_pakd.ads ada/exp_tss.ads ada/exp_util.ads ada/exp_util.adb \
+   ada/fname.ads ada/fname-uf.ads ada/freeze.ads ada/get_targ.ads \
+   ada/gnat.ads ada/g-hesora.ads ada/g-htable.ads ada/g-os_lib.ads \
+   ada/g-string.ads ada/gnatvsn.ads ada/hostparm.ads ada/inline.ads \
+   ada/interfac.ads ada/itypes.ads ada/lib.ads ada/lib.adb \
+   ada/lib-list.adb ada/lib-sort.adb ada/lib-xref.ads ada/namet.ads \
+   ada/namet.adb ada/nlists.ads ada/nlists.adb ada/nmake.ads ada/nmake.adb \
+   ada/opt.ads ada/output.ads ada/restrict.ads ada/restrict.adb \
+   ada/rident.ads ada/rtsfind.ads ada/scans.ads ada/scn.ads ada/scng.ads \
+   ada/scng.adb ada/sem.ads ada/sem_ch12.ads ada/sem_ch13.ads \
+   ada/sem_ch6.ads ada/sem_ch8.ads ada/sem_disp.ads ada/sem_dist.ads \
+   ada/sem_eval.ads ada/sem_res.ads ada/sem_type.ads ada/sem_util.ads \
+   ada/sem_util.adb ada/sem_warn.ads ada/sinfo.ads ada/sinfo.adb \
+   ada/sinput.ads ada/snames.ads ada/sprint.ads ada/stand.ads \
+   ada/stringt.ads ada/style.ads ada/styleg.ads ada/styleg.adb \
+   ada/styleg-c.ads ada/stylesw.ads ada/system.ads ada/s-crc32.ads \
+   ada/s-exctab.ads ada/s-htable.ads ada/s-imgenu.ads ada/s-memory.ads \
+   ada/s-rident.ads ada/s-secsta.ads ada/s-soflin.ads ada/s-stache.ads \
+   ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb ada/s-traent.ads \
+   ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads ada/table.adb \
+   ada/targparm.ads ada/tbuild.ads ada/tbuild.adb ada/tree_io.ads \
+   ada/ttypes.ads ada/types.ads ada/uintp.ads ada/uintp.adb ada/uname.ads \
    ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads ada/validsw.ads \
-   ada/widechar.ads
+   ada/widechar.ads 
 
 ada/exp_ch7.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/atree.ads \
    ada/atree.adb ada/casing.ads ada/checks.ads ada/debug.ads ada/einfo.ads \
@@ -1695,7 +1714,7 @@ ada/exp_ch7.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/atree.ads \
    ada/table.ads ada/table.adb ada/targparm.ads ada/tbuild.ads \
    ada/tbuild.adb ada/tree_io.ads ada/ttypes.ads ada/types.ads \
    ada/uintp.ads ada/uintp.adb ada/uname.ads ada/unchconv.ads \
-   ada/unchdeal.ads ada/urealp.ads ada/validsw.ads
+   ada/unchdeal.ads ada/urealp.ads ada/validsw.ads 
 
 ada/exp_ch8.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/atree.ads \
    ada/atree.adb ada/casing.ads ada/checks.ads ada/debug.ads ada/einfo.ads \
@@ -1716,7 +1735,7 @@ ada/exp_ch8.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/atree.ads \
    ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads ada/table.adb \
    ada/targparm.ads ada/tbuild.ads ada/tree_io.ads ada/ttypes.ads \
    ada/types.ads ada/uintp.ads ada/uintp.adb ada/unchconv.ads \
-   ada/unchdeal.ads ada/urealp.ads ada/validsw.ads
+   ada/unchdeal.ads ada/urealp.ads ada/validsw.ads 
 
 ada/exp_ch9.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/atree.ads \
    ada/atree.adb ada/casing.ads ada/checks.ads ada/csets.ads ada/debug.ads \
@@ -1744,7 +1763,7 @@ ada/exp_ch9.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/atree.ads \
    ada/table.ads ada/table.adb ada/targparm.ads ada/tbuild.ads \
    ada/tbuild.adb ada/tree_io.ads ada/ttypes.ads ada/types.ads \
    ada/uintp.ads ada/uintp.adb ada/uname.ads ada/unchconv.ads \
-   ada/unchdeal.ads ada/urealp.ads ada/validsw.ads ada/widechar.ads
+   ada/unchdeal.ads ada/urealp.ads ada/validsw.ads ada/widechar.ads 
 
 ada/exp_code.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/atree.ads \
    ada/atree.adb ada/casing.ads ada/checks.ads ada/csets.ads ada/debug.ads \
@@ -1771,7 +1790,7 @@ ada/exp_code.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/atree.ads \
    ada/table.adb ada/targparm.ads ada/tbuild.ads ada/tree_io.ads \
    ada/ttypes.ads ada/types.ads ada/types.adb ada/uintp.ads ada/uintp.adb \
    ada/uname.ads ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads \
-   ada/widechar.ads
+   ada/widechar.ads 
 
 ada/exp_dbug.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/atree.ads \
    ada/atree.adb ada/casing.ads ada/debug.ads ada/einfo.ads ada/einfo.adb \
@@ -1787,7 +1806,7 @@ ada/exp_dbug.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/atree.ads \
    ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads ada/table.adb \
    ada/tree_io.ads ada/types.ads ada/uintp.ads ada/uintp.adb \
    ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads ada/urealp.adb \
-   ada/widechar.ads
+   ada/widechar.ads 
 
 ada/exp_disp.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/atree.ads \
    ada/atree.adb ada/casing.ads ada/checks.ads ada/csets.ads ada/debug.ads \
@@ -1815,7 +1834,7 @@ ada/exp_disp.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/atree.ads \
    ada/tbuild.ads ada/tbuild.adb ada/tree_io.ads ada/ttypes.ads \
    ada/types.ads ada/uintp.ads ada/uintp.adb ada/uname.ads \
    ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads ada/validsw.ads \
-   ada/widechar.ads
+   ada/widechar.ads 
 
 ada/exp_dist.o : ada/ada.ads ada/a-except.ads ada/a-uncdea.ads \
    ada/alloc.ads ada/atree.ads ada/atree.adb ada/casing.ads ada/debug.ads \
@@ -1836,7 +1855,7 @@ ada/exp_dist.o : ada/ada.ads ada/a-except.ads ada/a-uncdea.ads \
    ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads ada/table.adb \
    ada/tbuild.ads ada/tbuild.adb ada/tree_io.ads ada/types.ads \
    ada/uintp.ads ada/uintp.adb ada/uname.ads ada/unchconv.ads \
-   ada/unchdeal.ads ada/urealp.ads
+   ada/unchdeal.ads ada/urealp.ads 
 
 ada/exp_fixd.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/atree.ads \
    ada/atree.adb ada/casing.ads ada/checks.ads ada/debug.ads ada/einfo.ads \
@@ -1855,7 +1874,7 @@ ada/exp_fixd.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/atree.ads \
    ada/s-stoele.adb ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads \
    ada/table.ads ada/table.adb ada/tbuild.ads ada/tree_io.ads \
    ada/types.ads ada/uintp.ads ada/uintp.adb ada/unchconv.ads \
-   ada/unchdeal.ads ada/urealp.ads ada/urealp.adb
+   ada/unchdeal.ads ada/urealp.ads ada/urealp.adb 
 
 ada/exp_imgv.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/atree.ads \
    ada/atree.adb ada/casing.ads ada/checks.ads ada/debug.ads ada/einfo.ads \
@@ -1873,7 +1892,7 @@ ada/exp_imgv.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/atree.ads \
    ada/s-wchcon.ads ada/table.ads ada/table.adb ada/tbuild.ads \
    ada/tbuild.adb ada/tree_io.ads ada/ttypes.ads ada/types.ads \
    ada/uintp.ads ada/uintp.adb ada/unchconv.ads ada/unchdeal.ads \
-   ada/urealp.ads
+   ada/urealp.ads 
 
 ada/exp_intr.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/atree.ads \
    ada/atree.adb ada/casing.ads ada/checks.ads ada/csets.ads ada/debug.ads \
@@ -1901,30 +1920,31 @@ ada/exp_intr.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/atree.ads \
    ada/tbuild.adb ada/tree_io.ads ada/ttypes.ads ada/types.ads \
    ada/uintp.ads ada/uintp.adb ada/uname.ads ada/unchconv.ads \
    ada/unchdeal.ads ada/urealp.ads ada/urealp.adb ada/validsw.ads \
-   ada/widechar.ads
+   ada/widechar.ads 
 
 ada/exp_pakd.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/atree.ads \
    ada/atree.adb ada/casing.ads ada/checks.ads ada/checks.adb \
    ada/debug.ads ada/einfo.ads ada/einfo.adb ada/elists.ads \
-   ada/err_vars.ads ada/errout.ads ada/erroutc.ads ada/exp_ch11.ads \
-   ada/exp_ch2.ads ada/exp_ch7.ads ada/exp_dbug.ads ada/exp_pakd.ads \
-   ada/exp_pakd.adb ada/exp_tss.ads ada/exp_util.ads ada/exp_util.adb \
-   ada/freeze.ads ada/get_targ.ads ada/gnat.ads ada/g-htable.ads \
-   ada/g-os_lib.ads ada/g-string.ads ada/gnatvsn.ads ada/hostparm.ads \
-   ada/inline.ads ada/itypes.ads ada/lib.ads ada/namet.ads ada/nlists.ads \
-   ada/nlists.adb ada/nmake.ads ada/nmake.adb ada/opt.ads ada/output.ads \
-   ada/restrict.ads ada/rident.ads ada/rtsfind.ads ada/sem.ads \
-   ada/sem_ch13.ads ada/sem_ch3.ads ada/sem_ch8.ads ada/sem_eval.ads \
-   ada/sem_res.ads ada/sem_util.ads ada/sem_warn.ads ada/sinfo.ads \
-   ada/sinfo.adb ada/sinput.ads ada/snames.ads ada/sprint.ads \
-   ada/stand.ads ada/stringt.ads ada/system.ads ada/s-exctab.ads \
-   ada/s-htable.ads ada/s-imgenu.ads ada/s-memory.ads ada/s-rident.ads \
-   ada/s-secsta.ads ada/s-soflin.ads ada/s-stache.ads ada/s-stalib.ads \
-   ada/s-stoele.ads ada/s-stoele.adb ada/s-traent.ads ada/s-unstyp.ads \
-   ada/s-wchcon.ads ada/table.ads ada/table.adb ada/targparm.ads \
-   ada/tbuild.ads ada/tbuild.adb ada/tree_io.ads ada/ttypes.ads \
-   ada/types.ads ada/uintp.ads ada/uintp.adb ada/unchconv.ads \
-   ada/unchdeal.ads ada/urealp.ads ada/validsw.ads
+   ada/err_vars.ads ada/errout.ads ada/erroutc.ads ada/eval_fat.ads \
+   ada/exp_ch11.ads ada/exp_ch2.ads ada/exp_ch7.ads ada/exp_dbug.ads \
+   ada/exp_pakd.ads ada/exp_pakd.adb ada/exp_tss.ads ada/exp_util.ads \
+   ada/exp_util.adb ada/freeze.ads ada/get_targ.ads ada/gnat.ads \
+   ada/g-htable.ads ada/g-os_lib.ads ada/g-string.ads ada/gnatvsn.ads \
+   ada/hostparm.ads ada/inline.ads ada/itypes.ads ada/lib.ads \
+   ada/namet.ads ada/nlists.ads ada/nlists.adb ada/nmake.ads ada/nmake.adb \
+   ada/opt.ads ada/output.ads ada/restrict.ads ada/rident.ads \
+   ada/rtsfind.ads ada/sem.ads ada/sem_ch13.ads ada/sem_ch3.ads \
+   ada/sem_ch8.ads ada/sem_eval.ads ada/sem_res.ads ada/sem_util.ads \
+   ada/sem_warn.ads ada/sinfo.ads ada/sinfo.adb ada/sinput.ads \
+   ada/snames.ads ada/sprint.ads ada/stand.ads ada/stringt.ads \
+   ada/system.ads ada/s-exctab.ads ada/s-htable.ads ada/s-imgenu.ads \
+   ada/s-memory.ads ada/s-rident.ads ada/s-secsta.ads ada/s-soflin.ads \
+   ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb \
+   ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads \
+   ada/table.adb ada/targparm.ads ada/tbuild.ads ada/tbuild.adb \
+   ada/tree_io.ads ada/ttypes.ads ada/types.ads ada/uintp.ads \
+   ada/uintp.adb ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads \
+   ada/validsw.ads 
 
 ada/exp_prag.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/atree.ads \
    ada/atree.adb ada/casing.ads ada/casing.adb ada/csets.ads ada/debug.ads \
@@ -1944,7 +1964,7 @@ ada/exp_prag.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/atree.ads \
    ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads ada/table.adb \
    ada/targparm.ads ada/tbuild.ads ada/tree_io.ads ada/types.ads \
    ada/types.adb ada/uintp.ads ada/uintp.adb ada/unchconv.ads \
-   ada/unchdeal.ads ada/urealp.ads ada/widechar.ads
+   ada/unchdeal.ads ada/urealp.ads ada/widechar.ads 
 
 ada/exp_smem.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/atree.ads \
    ada/atree.adb ada/casing.ads ada/debug.ads ada/einfo.ads ada/einfo.adb \
@@ -1961,7 +1981,7 @@ ada/exp_smem.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/atree.ads \
    ada/s-stoele.ads ada/s-stoele.adb ada/s-traent.ads ada/s-unstyp.ads \
    ada/s-wchcon.ads ada/table.ads ada/table.adb ada/tbuild.ads \
    ada/tbuild.adb ada/tree_io.ads ada/types.ads ada/uintp.ads \
-   ada/uintp.adb ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads
+   ada/uintp.adb ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads 
 
 ada/exp_strm.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/atree.ads \
    ada/atree.adb ada/casing.ads ada/debug.ads ada/einfo.ads ada/einfo.adb \
@@ -1978,7 +1998,7 @@ ada/exp_strm.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/atree.ads \
    ada/s-wchcon.ads ada/table.ads ada/table.adb ada/tbuild.ads \
    ada/tbuild.adb ada/tree_io.ads ada/ttypes.ads ada/types.ads \
    ada/uintp.ads ada/uintp.adb ada/unchconv.ads ada/unchdeal.ads \
-   ada/urealp.ads
+   ada/urealp.ads 
 
 ada/exp_tss.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/atree.ads \
    ada/atree.adb ada/casing.ads ada/debug.ads ada/einfo.ads ada/einfo.adb \
@@ -1995,7 +2015,7 @@ ada/exp_tss.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/atree.ads \
    ada/s-stoele.ads ada/s-stoele.adb ada/s-traent.ads ada/s-unstyp.ads \
    ada/s-wchcon.ads ada/table.ads ada/table.adb ada/tree_io.ads \
    ada/types.ads ada/uintp.ads ada/uintp.adb ada/uname.ads \
-   ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads ada/widechar.ads
+   ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads ada/widechar.ads 
 
 ada/exp_util.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/atree.ads \
    ada/atree.adb ada/casing.ads ada/checks.ads ada/debug.ads ada/einfo.ads \
@@ -2019,7 +2039,7 @@ ada/exp_util.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/atree.ads \
    ada/table.ads ada/table.adb ada/targparm.ads ada/tbuild.ads \
    ada/tbuild.adb ada/tree_io.ads ada/ttypes.ads ada/types.ads \
    ada/uintp.ads ada/uintp.adb ada/uname.ads ada/unchconv.ads \
-   ada/unchdeal.ads ada/urealp.ads ada/urealp.adb ada/validsw.ads
+   ada/unchdeal.ads ada/urealp.ads ada/urealp.adb ada/validsw.ads 
 
 ada/exp_vfpt.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/atree.ads \
    ada/atree.adb ada/casing.ads ada/debug.ads ada/einfo.ads ada/einfo.adb \
@@ -2034,7 +2054,7 @@ ada/exp_vfpt.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/atree.ads \
    ada/s-stoele.adb ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads \
    ada/table.ads ada/table.adb ada/tbuild.ads ada/tree_io.ads \
    ada/ttypef.ads ada/types.ads ada/uintp.ads ada/uintp.adb \
-   ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads ada/urealp.adb
+   ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads ada/urealp.adb 
 
 ada/expander.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/atree.ads \
    ada/atree.adb ada/casing.ads ada/debug.ads ada/debug_a.ads \
@@ -2053,7 +2073,7 @@ ada/expander.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/atree.ads \
    ada/s-stoele.ads ada/s-stoele.adb ada/s-traent.ads ada/s-unstyp.ads \
    ada/s-wchcon.ads ada/table.ads ada/table.adb ada/tree_io.ads \
    ada/types.ads ada/uintp.ads ada/unchconv.ads ada/unchdeal.ads \
-   ada/urealp.ads
+   ada/urealp.ads 
 
 ada/fmap.o : ada/ada.ads ada/a-except.ads ada/a-uncdea.ads ada/alloc.ads \
    ada/debug.ads ada/fmap.ads ada/fmap.adb ada/gnat.ads ada/g-htable.ads \
@@ -2063,7 +2083,7 @@ ada/fmap.o : ada/ada.ads ada/a-except.ads ada/a-uncdea.ads ada/alloc.ads \
    ada/s-secsta.ads ada/s-soflin.ads ada/s-stache.ads ada/s-stalib.ads \
    ada/s-stoele.ads ada/s-stoele.adb ada/s-traent.ads ada/s-unstyp.ads \
    ada/s-wchcon.ads ada/table.ads ada/table.adb ada/tree_io.ads \
-   ada/types.ads ada/unchconv.ads ada/unchdeal.ads
+   ada/types.ads ada/unchconv.ads ada/unchdeal.ads 
 
 ada/fname-uf.o : ada/ada.ads ada/a-except.ads ada/a-uncdea.ads \
    ada/alloc.ads ada/casing.ads ada/debug.ads ada/fmap.ads ada/fname.ads \
@@ -2074,7 +2094,7 @@ ada/fname-uf.o : ada/ada.ads ada/a-except.ads ada/a-uncdea.ads \
    ada/s-memory.ads ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb \
    ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads \
    ada/table.adb ada/tree_io.ads ada/types.ads ada/uname.ads \
-   ada/unchconv.ads ada/unchdeal.ads ada/widechar.ads
+   ada/unchconv.ads ada/unchdeal.ads ada/widechar.ads 
 
 ada/fname.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/debug.ads \
    ada/fname.ads ada/fname.adb ada/gnat.ads ada/g-os_lib.ads \
@@ -2082,7 +2102,7 @@ ada/fname.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/debug.ads \
    ada/opt.ads ada/output.ads ada/system.ads ada/s-exctab.ads \
    ada/s-memory.ads ada/s-stalib.ads ada/s-traent.ads ada/s-unstyp.ads \
    ada/s-wchcon.ads ada/table.ads ada/table.adb ada/tree_io.ads \
-   ada/types.ads ada/unchconv.ads ada/unchdeal.ads
+   ada/types.ads ada/unchconv.ads ada/unchdeal.ads 
 
 ada/freeze.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/atree.ads \
    ada/atree.adb ada/casing.ads ada/checks.ads ada/csets.ads ada/debug.ads \
@@ -2111,7 +2131,7 @@ ada/freeze.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/atree.ads \
    ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads \
    ada/table.adb ada/targparm.ads ada/tbuild.ads ada/tree_io.ads \
    ada/ttypes.ads ada/types.ads ada/uintp.ads ada/uintp.adb \
-   ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads ada/widechar.ads
+   ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads ada/widechar.ads 
 
 ada/frontend.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/atree.ads \
    ada/atree.adb ada/casing.ads ada/checks.ads ada/csets.ads \
@@ -2137,32 +2157,32 @@ ada/frontend.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/atree.ads \
    ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads \
    ada/table.adb ada/tbuild.ads ada/tbuild.adb ada/tree_io.ads \
    ada/types.ads ada/uintp.ads ada/uintp.adb ada/uname.ads \
-   ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads ada/widechar.ads
+   ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads ada/widechar.ads 
 
 ada/g-hesora.o : ada/gnat.ads ada/g-hesora.ads ada/g-hesora.adb \
-   ada/system.ads
+   ada/system.ads 
 
 ada/g-htable.o : ada/gnat.ads ada/g-htable.ads ada/g-htable.adb \
-   ada/system.ads ada/s-htable.ads
+   ada/system.ads ada/s-htable.ads 
 
 ada/g-os_lib.o : ada/ada.ads ada/a-except.ads ada/gnat.ads \
    ada/g-os_lib.ads ada/g-os_lib.adb ada/g-string.ads ada/system.ads \
    ada/s-casuti.ads ada/s-crtl.ads ada/s-exctab.ads ada/s-exctab.adb \
    ada/s-htable.ads ada/s-parame.ads ada/s-secsta.ads ada/s-soflin.ads \
    ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb \
-   ada/s-traent.ads ada/unchconv.ads ada/unchdeal.ads
+   ada/s-traent.ads ada/unchconv.ads ada/unchdeal.ads 
 
 ada/g-speche.o : ada/gnat.ads ada/g-speche.ads ada/g-speche.adb \
-   ada/system.ads
+   ada/system.ads 
 
 ada/g-string.o : ada/gnat.ads ada/g-string.ads ada/g-string.adb \
-   ada/system.ads ada/unchdeal.ads
+   ada/system.ads ada/unchdeal.ads 
 
 ada/get_targ.o : ada/get_targ.ads ada/get_targ.adb ada/system.ads \
    ada/s-exctab.ads ada/s-stalib.ads ada/s-unstyp.ads ada/types.ads \
-   ada/unchconv.ads ada/unchdeal.ads
+   ada/unchconv.ads ada/unchdeal.ads 
 
-ada/gnat.o : ada/gnat.ads ada/system.ads
+ada/gnat.o : ada/gnat.ads ada/system.ads 
 
 ada/gnat1drv.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/atree.ads \
    ada/atree.adb ada/back_end.ads ada/casing.ads ada/comperr.ads \
@@ -2186,7 +2206,7 @@ ada/gnat1drv.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/atree.ads \
    ada/s-wchcon.ads ada/table.ads ada/table.adb ada/targparm.ads \
    ada/tree_gen.ads ada/tree_io.ads ada/treepr.ads ada/ttypes.ads \
    ada/types.ads ada/uintp.ads ada/uintp.adb ada/uname.ads \
-   ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads ada/usage.ads
+   ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads ada/usage.ads 
 
 ada/gnatbind.o : ada/ada.ads ada/a-except.ads ada/ali.ads ada/ali-util.ads \
    ada/alloc.ads ada/bcheck.ads ada/binde.ads ada/binderr.ads \
@@ -2202,16 +2222,16 @@ ada/gnatbind.o : ada/ada.ads ada/a-except.ads ada/ali.ads ada/ali-util.ads \
    ada/s-sopco3.ads ada/s-sopco4.ads ada/s-sopco5.ads ada/s-traent.ads \
    ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads ada/table.adb \
    ada/targparm.ads ada/tree_io.ads ada/types.ads ada/unchconv.ads \
-   ada/unchdeal.ads
+   ada/unchdeal.ads 
 
 ada/gnatvsn.o : ada/gnatvsn.ads ada/gnatvsn.adb ada/system.ads \
-   ada/s-secsta.ads ada/s-stoele.ads ada/s-stoele.adb ada/unchconv.ads
+   ada/s-secsta.ads ada/s-stoele.ads ada/s-stoele.adb ada/unchconv.ads 
 
 ada/hlo.o : ada/hlo.ads ada/hlo.adb ada/output.ads ada/system.ads \
    ada/s-exctab.ads ada/s-stalib.ads ada/s-unstyp.ads ada/types.ads \
-   ada/unchconv.ads ada/unchdeal.ads
+   ada/unchconv.ads ada/unchdeal.ads 
 
-ada/hostparm.o : ada/hostparm.ads ada/system.ads
+ada/hostparm.o : ada/hostparm.ads ada/system.ads 
 
 ada/impunit.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/atree.ads \
    ada/atree.adb ada/casing.ads ada/debug.ads ada/einfo.ads ada/einfo.adb \
@@ -2227,7 +2247,7 @@ ada/impunit.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/atree.ads \
    ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads \
    ada/table.adb ada/tree_io.ads ada/types.ads ada/uintp.ads ada/uintp.adb \
    ada/uname.ads ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads \
-   ada/widechar.ads
+   ada/widechar.ads 
 
 ada/inline.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/atree.ads \
    ada/atree.adb ada/casing.ads ada/debug.ads ada/einfo.ads ada/einfo.adb \
@@ -2246,9 +2266,9 @@ ada/inline.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/atree.ads \
    ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb \
    ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads \
    ada/table.adb ada/tree_io.ads ada/types.ads ada/uintp.ads ada/uintp.adb \
-   ada/uname.ads ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads
+   ada/uname.ads ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads 
 
-ada/interfac.o : ada/interfac.ads ada/system.ads
+ada/interfac.o : ada/interfac.ads ada/system.ads 
 
 ada/itypes.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/atree.ads \
    ada/atree.adb ada/casing.ads ada/debug.ads ada/einfo.ads ada/einfo.adb \
@@ -2262,10 +2282,10 @@ ada/itypes.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/atree.ads \
    ada/s-stoele.ads ada/s-stoele.adb ada/s-traent.ads ada/s-unstyp.ads \
    ada/s-wchcon.ads ada/table.ads ada/table.adb ada/tree_io.ads \
    ada/types.ads ada/uintp.ads ada/uintp.adb ada/unchconv.ads \
-   ada/unchdeal.ads ada/urealp.ads
+   ada/unchdeal.ads ada/urealp.ads 
 
 ada/krunch.o : ada/hostparm.ads ada/krunch.ads ada/krunch.adb \
-   ada/system.ads ada/s-stoele.ads ada/s-stoele.adb ada/unchconv.ads
+   ada/system.ads ada/s-stoele.ads ada/s-stoele.adb ada/unchconv.ads 
 
 ada/layout.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/atree.ads \
    ada/atree.adb ada/casing.ads ada/checks.ads ada/csets.ads ada/debug.ads \
@@ -2290,7 +2310,7 @@ ada/layout.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/atree.ads \
    ada/table.ads ada/table.adb ada/targparm.ads ada/tbuild.ads \
    ada/tbuild.adb ada/tree_io.ads ada/ttypes.ads ada/types.ads \
    ada/uintp.ads ada/uintp.adb ada/uname.ads ada/unchconv.ads \
-   ada/unchdeal.ads ada/urealp.ads ada/widechar.ads
+   ada/unchdeal.ads ada/urealp.ads ada/widechar.ads 
 
 ada/lib-load.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/atree.ads \
    ada/atree.adb ada/casing.ads ada/csets.ads ada/debug.ads ada/einfo.ads \
@@ -2312,7 +2332,7 @@ ada/lib-load.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/atree.ads \
    ada/s-wchcon.ads ada/table.ads ada/table.adb ada/targparm.ads \
    ada/tbuild.ads ada/tbuild.adb ada/tree_io.ads ada/types.ads \
    ada/uintp.ads ada/uintp.adb ada/uname.ads ada/unchconv.ads \
-   ada/unchdeal.ads ada/urealp.ads ada/widechar.ads
+   ada/unchdeal.ads ada/urealp.ads ada/widechar.ads 
 
 ada/lib-util.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/debug.ads \
    ada/gnat.ads ada/g-os_lib.ads ada/g-string.ads ada/gnatvsn.ads \
@@ -2321,7 +2341,7 @@ ada/lib-util.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/debug.ads \
    ada/system.ads ada/s-exctab.ads ada/s-memory.ads ada/s-stalib.ads \
    ada/s-stoele.ads ada/s-stoele.adb ada/s-traent.ads ada/s-unstyp.ads \
    ada/s-wchcon.ads ada/table.ads ada/table.adb ada/tree_io.ads \
-   ada/types.ads ada/unchconv.ads ada/unchdeal.ads
+   ada/types.ads ada/unchconv.ads ada/unchdeal.ads 
 
 ada/lib-writ.o : ada/ada.ads ada/a-except.ads ada/ali.ads ada/alloc.ads \
    ada/atree.ads ada/atree.adb ada/casing.ads ada/csets.ads ada/debug.ads \
@@ -2344,7 +2364,7 @@ ada/lib-writ.o : ada/ada.ads ada/a-except.ads ada/ali.ads ada/alloc.ads \
    ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads ada/table.adb \
    ada/tbuild.ads ada/tbuild.adb ada/tree_io.ads ada/types.ads \
    ada/types.adb ada/uintp.ads ada/uintp.adb ada/uname.ads \
-   ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads ada/widechar.ads
+   ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads ada/widechar.ads 
 
 ada/lib-xref.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/atree.ads \
    ada/atree.adb ada/casing.ads ada/csets.ads ada/debug.ads ada/einfo.ads \
@@ -2361,7 +2381,7 @@ ada/lib-xref.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/atree.ads \
    ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb ada/s-traent.ads \
    ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads ada/table.adb \
    ada/tree_io.ads ada/types.ads ada/uintp.ads ada/uintp.adb \
-   ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads ada/widechar.ads
+   ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads ada/widechar.ads 
 
 ada/lib.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/atree.ads \
    ada/atree.adb ada/casing.ads ada/debug.ads ada/einfo.ads ada/einfo.adb \
@@ -2377,7 +2397,7 @@ ada/lib.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/atree.ads \
    ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads \
    ada/table.adb ada/tree_io.ads ada/types.ads ada/uintp.ads ada/uintp.adb \
    ada/uname.ads ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads \
-   ada/widechar.ads
+   ada/widechar.ads 
 
 ada/live.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/atree.ads \
    ada/atree.adb ada/casing.ads ada/debug.ads ada/einfo.ads ada/einfo.adb \
@@ -2392,12 +2412,12 @@ ada/live.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/atree.ads \
    ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb \
    ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads \
    ada/table.adb ada/tree_io.ads ada/types.ads ada/uintp.ads ada/uintp.adb \
-   ada/uname.ads ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads
+   ada/uname.ads ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads 
 
 ada/memtrack.o : ada/ada.ads ada/a-except.ads ada/gnat.ads ada/g-io.ads \
    ada/system.ads ada/s-memory.ads ada/memtrack.adb ada/s-soflin.ads \
    ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb \
-   ada/s-traceb.ads ada/s-traent.ads ada/s-traent.adb ada/unchconv.ads
+   ada/s-traceb.ads ada/s-traent.ads ada/s-traent.adb ada/unchconv.ads 
 
 ada/namet.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/debug.ads \
    ada/gnat.ads ada/g-os_lib.ads ada/g-string.ads ada/gnatvsn.ads \
@@ -2406,7 +2426,7 @@ ada/namet.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/debug.ads \
    ada/s-secsta.ads ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb \
    ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads \
    ada/table.adb ada/tree_io.ads ada/types.ads ada/types.adb \
-   ada/unchconv.ads ada/unchdeal.ads ada/widechar.ads
+   ada/unchconv.ads ada/unchdeal.ads ada/widechar.ads 
 
 ada/nlists.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/atree.ads \
    ada/atree.adb ada/casing.ads ada/debug.ads ada/einfo.ads ada/elists.ads \
@@ -2418,7 +2438,7 @@ ada/nlists.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/atree.ads \
    ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb ada/s-traent.ads \
    ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads ada/table.adb \
    ada/tree_io.ads ada/types.ads ada/uintp.ads ada/unchconv.ads \
-   ada/unchdeal.ads ada/urealp.ads
+   ada/unchdeal.ads ada/urealp.ads 
 
 ada/nmake.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/atree.ads \
    ada/atree.adb ada/casing.ads ada/debug.ads ada/einfo.ads ada/elists.ads \
@@ -2431,14 +2451,14 @@ ada/nmake.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/atree.ads \
    ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb ada/s-traent.ads \
    ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads ada/table.adb \
    ada/tree_io.ads ada/types.ads ada/uintp.ads ada/unchconv.ads \
-   ada/unchdeal.ads ada/urealp.ads
+   ada/unchdeal.ads ada/urealp.ads 
 
 ada/opt.o : ada/ada.ads ada/a-except.ads ada/gnat.ads ada/g-os_lib.ads \
    ada/g-string.ads ada/gnatvsn.ads ada/hostparm.ads ada/opt.ads \
    ada/opt.adb ada/system.ads ada/s-exctab.ads ada/s-secsta.ads \
    ada/s-soflin.ads ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads \
    ada/s-stoele.adb ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads \
-   ada/tree_io.ads ada/types.ads ada/unchconv.ads ada/unchdeal.ads
+   ada/tree_io.ads ada/types.ads ada/unchconv.ads ada/unchdeal.ads 
 
 ada/osint-b.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/debug.ads \
    ada/gnat.ads ada/g-os_lib.ads ada/g-string.ads ada/gnatvsn.ads \
@@ -2448,7 +2468,7 @@ ada/osint-b.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/debug.ads \
    ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb \
    ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads \
    ada/table.adb ada/tree_io.ads ada/types.ads ada/unchconv.ads \
-   ada/unchdeal.ads
+   ada/unchdeal.ads 
 
 ada/osint-c.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/debug.ads \
    ada/gnat.ads ada/g-os_lib.ads ada/g-string.ads ada/gnatvsn.ads \
@@ -2458,7 +2478,7 @@ ada/osint-c.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/debug.ads \
    ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb \
    ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads \
    ada/table.adb ada/tree_io.ads ada/types.ads ada/unchconv.ads \
-   ada/unchdeal.ads ada/widechar.ads
+   ada/unchdeal.ads ada/widechar.ads 
 
 ada/osint.o : ada/ada.ads ada/a-except.ads ada/a-uncdea.ads ada/alloc.ads \
    ada/debug.ads ada/fmap.ads ada/gnat.ads ada/g-htable.ads \
@@ -2470,12 +2490,12 @@ ada/osint.o : ada/ada.ads ada/a-except.ads ada/a-uncdea.ads ada/alloc.ads \
    ada/s-stoele.ads ada/s-stoele.adb ada/s-strops.ads ada/s-sopco3.ads \
    ada/s-sopco4.ads ada/s-sopco5.ads ada/s-traent.ads ada/s-unstyp.ads \
    ada/s-wchcon.ads ada/table.ads ada/table.adb ada/tree_io.ads \
-   ada/types.ads ada/unchconv.ads ada/unchdeal.ads ada/widechar.ads
+   ada/types.ads ada/unchconv.ads ada/unchdeal.ads ada/widechar.ads 
 
 ada/output.o : ada/gnat.ads ada/g-os_lib.ads ada/g-string.ads \
    ada/output.ads ada/output.adb ada/system.ads ada/s-exctab.ads \
    ada/s-stalib.ads ada/s-unstyp.ads ada/types.ads ada/unchconv.ads \
-   ada/unchdeal.ads
+   ada/unchdeal.ads 
 
 ada/par.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/atree.ads \
    ada/atree.adb ada/casing.ads ada/csets.ads ada/debug.ads ada/einfo.ads \
@@ -2505,7 +2525,7 @@ ada/par.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/atree.ads \
    ada/table.adb ada/tbuild.ads ada/tbuild.adb ada/tree_io.ads \
    ada/types.ads ada/types.adb ada/uintp.ads ada/uintp.adb ada/uname.ads \
    ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads ada/validsw.ads \
-   ada/widechar.ads
+   ada/widechar.ads 
 
 ada/prep.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/casing.ads \
    ada/csets.ads ada/debug.ads ada/err_vars.ads ada/gnat.ads \
@@ -2518,7 +2538,7 @@ ada/prep.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/casing.ads \
    ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb \
    ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads \
    ada/table.adb ada/tree_io.ads ada/types.ads ada/uintp.ads \
-   ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads
+   ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads 
 
 ada/prepcomp.o : ada/ada.ads ada/a-except.ads ada/a-uncdea.ads \
    ada/alloc.ads ada/casing.ads ada/csets.ads ada/debug.ads \
@@ -2535,7 +2555,7 @@ ada/prepcomp.o : ada/ada.ads ada/a-except.ads ada/a-uncdea.ads \
    ada/s-soflin.ads ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads \
    ada/s-stoele.adb ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads \
    ada/table.ads ada/table.adb ada/tree_io.ads ada/types.ads ada/uintp.ads \
-   ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads ada/widechar.ads
+   ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads ada/widechar.ads 
 
 ada/repinfo.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/atree.ads \
    ada/atree.adb ada/casing.ads ada/debug.ads ada/einfo.ads ada/einfo.adb \
@@ -2551,7 +2571,7 @@ ada/repinfo.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/atree.ads \
    ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb ada/s-traent.ads \
    ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads ada/table.adb \
    ada/tree_io.ads ada/types.ads ada/uintp.ads ada/uintp.adb ada/uname.ads \
-   ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads
+   ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads 
 
 ada/restrict.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/atree.ads \
    ada/atree.adb ada/casing.ads ada/debug.ads ada/einfo.ads ada/einfo.adb \
@@ -2568,9 +2588,9 @@ ada/restrict.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/atree.ads \
    ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb \
    ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads \
    ada/table.adb ada/tree_io.ads ada/types.ads ada/uintp.ads ada/uintp.adb \
-   ada/uname.ads ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads
+   ada/uname.ads ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads 
 
-ada/rident.o : ada/rident.ads ada/system.ads ada/s-rident.ads
+ada/rident.o : ada/rident.ads ada/system.ads ada/s-rident.ads 
 
 ada/rtsfind.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/atree.ads \
    ada/atree.adb ada/casing.ads ada/csets.ads ada/debug.ads ada/einfo.ads \
@@ -2589,101 +2609,105 @@ ada/rtsfind.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/atree.ads \
    ada/s-stoele.adb ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads \
    ada/table.ads ada/table.adb ada/tbuild.ads ada/tree_io.ads \
    ada/types.ads ada/uintp.ads ada/uintp.adb ada/uname.ads \
-   ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads ada/widechar.ads
+   ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads ada/widechar.ads 
+
+ada/s-addope.o : ada/system.ads ada/s-addope.ads ada/s-addope.adb \
+   ada/unchconv.ads 
 
 ada/s-assert.o : ada/ada.ads ada/a-except.ads ada/system.ads \
    ada/s-assert.ads ada/s-assert.adb ada/s-exctab.ads ada/s-exctab.adb \
    ada/s-htable.ads ada/s-soflin.ads ada/s-stache.ads ada/s-stalib.ads \
-   ada/s-stoele.ads ada/s-stoele.adb ada/s-traent.ads ada/unchconv.ads
+   ada/s-stoele.ads ada/s-stoele.adb ada/s-traent.ads ada/unchconv.ads 
 
-ada/s-carun8.o : ada/system.ads ada/s-carun8.ads ada/s-carun8.adb \
-   ada/unchconv.ads
+ada/s-carun8.o : ada/system.ads ada/s-addope.ads ada/s-addope.adb \
+   ada/s-carun8.ads ada/s-carun8.adb ada/s-stoele.ads ada/s-stoele.adb \
+   ada/unchconv.ads 
 
-ada/s-casuti.o : ada/system.ads ada/s-casuti.ads ada/s-casuti.adb
+ada/s-casuti.o : ada/system.ads ada/s-casuti.ads ada/s-casuti.adb 
 
 ada/s-crc32.o : ada/interfac.ads ada/system.ads ada/s-crc32.ads \
-   ada/s-crc32.adb
+   ada/s-crc32.adb 
 
-ada/s-crtl.o : ada/system.ads ada/s-crtl.ads ada/s-parame.ads
+ada/s-crtl.o : ada/system.ads ada/s-crtl.ads ada/s-parame.ads 
 
 ada/s-except.o : ada/ada.ads ada/a-except.ads ada/system.ads \
-   ada/s-except.ads ada/s-stalib.ads ada/s-traent.ads ada/unchconv.ads
+   ada/s-except.ads ada/s-stalib.ads ada/s-traent.ads ada/unchconv.ads 
 
 ada/s-exctab.o : ada/ada.ads ada/a-except.ads ada/a-uncdea.ads \
    ada/system.ads ada/s-exctab.ads ada/s-exctab.adb ada/s-htable.ads \
    ada/s-htable.adb ada/s-soflin.ads ada/s-stache.ads ada/s-stalib.ads \
-   ada/s-stoele.ads ada/s-stoele.adb ada/s-traent.ads ada/unchconv.ads
+   ada/s-stoele.ads ada/s-stoele.adb ada/s-traent.ads ada/unchconv.ads 
 
 ada/s-htable.o : ada/ada.ads ada/a-uncdea.ads ada/system.ads \
-   ada/s-htable.ads ada/s-htable.adb
+   ada/s-htable.ads ada/s-htable.adb 
 
 ada/s-imgenu.o : ada/system.ads ada/s-imgenu.ads ada/s-imgenu.adb \
-   ada/s-secsta.ads ada/s-stoele.ads ada/s-stoele.adb ada/unchconv.ads
+   ada/s-secsta.ads ada/s-stoele.ads ada/s-stoele.adb ada/unchconv.ads 
 
 ada/s-mastop.o : ada/ada.ads ada/a-except.ads ada/system.ads \
    ada/s-except.ads ada/s-mastop.ads ada/s-mastop.adb ada/s-stalib.ads \
-   ada/s-stoele.ads ada/s-stoele.adb ada/s-traent.ads ada/unchconv.ads
+   ada/s-stoele.ads ada/s-stoele.adb ada/s-traent.ads ada/unchconv.ads 
 
 ada/s-memory.o : ada/ada.ads ada/a-except.ads ada/system.ads \
    ada/s-crtl.ads ada/s-memory.ads ada/s-memory.adb ada/s-parame.ads \
    ada/s-soflin.ads ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads \
-   ada/s-stoele.adb ada/s-traent.ads ada/unchconv.ads
+   ada/s-stoele.adb ada/s-traent.ads ada/unchconv.ads 
 
-ada/s-parame.o : ada/system.ads ada/s-parame.ads ada/s-parame.adb
+ada/s-parame.o : ada/system.ads ada/s-parame.ads ada/s-parame.adb 
 
-ada/s-purexc.o : ada/system.ads ada/s-purexc.ads
+ada/s-purexc.o : ada/system.ads ada/s-purexc.ads 
 
 ada/s-secsta.o : ada/ada.ads ada/a-except.ads ada/system.ads \
    ada/s-parame.ads ada/s-secsta.ads ada/s-secsta.adb ada/s-soflin.ads \
    ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb \
-   ada/s-traent.ads ada/unchconv.ads ada/unchdeal.ads
+   ada/s-traent.ads ada/unchconv.ads ada/unchdeal.ads 
 
 ada/s-soflin.o : ada/ada.ads ada/a-except.ads ada/system.ads \
    ada/s-except.ads ada/s-mastop.ads ada/s-parame.ads ada/s-secsta.ads \
    ada/s-soflin.ads ada/s-soflin.adb ada/s-stache.ads ada/s-stalib.ads \
-   ada/s-stoele.ads ada/s-stoele.adb ada/s-traent.ads ada/unchconv.ads
+   ada/s-stoele.ads ada/s-stoele.adb ada/s-traent.ads ada/unchconv.ads 
 
 ada/s-sopco3.o : ada/system.ads ada/s-secsta.ads ada/s-stoele.ads \
    ada/s-stoele.adb ada/s-strops.ads ada/s-sopco3.ads ada/s-sopco3.adb \
-   ada/s-sopco4.ads ada/s-sopco5.ads ada/unchconv.ads
+   ada/s-sopco4.ads ada/s-sopco5.ads ada/unchconv.ads 
 
 ada/s-sopco4.o : ada/system.ads ada/s-secsta.ads ada/s-stoele.ads \
    ada/s-stoele.adb ada/s-strops.ads ada/s-sopco3.ads ada/s-sopco4.ads \
-   ada/s-sopco4.adb ada/s-sopco5.ads ada/unchconv.ads
+   ada/s-sopco4.adb ada/s-sopco5.ads ada/unchconv.ads 
 
 ada/s-sopco5.o : ada/system.ads ada/s-secsta.ads ada/s-stoele.ads \
    ada/s-stoele.adb ada/s-strops.ads ada/s-sopco3.ads ada/s-sopco4.ads \
-   ada/s-sopco5.ads ada/s-sopco5.adb ada/unchconv.ads
+   ada/s-sopco5.ads ada/s-sopco5.adb ada/unchconv.ads 
 
 ada/s-stache.o : ada/system.ads ada/s-stache.ads ada/s-stache.adb \
-   ada/s-stoele.ads ada/s-stoele.adb ada/unchconv.ads
+   ada/s-stoele.ads ada/s-stoele.adb ada/unchconv.ads 
 
 ada/s-stalib.o : ada/ada.ads ada/a-except.ads ada/system.ads \
    ada/s-memory.ads ada/s-soflin.ads ada/s-stache.ads ada/s-stalib.ads \
    ada/s-stalib.adb ada/s-stoele.ads ada/s-stoele.adb ada/s-traent.ads \
-   ada/unchconv.ads
+   ada/unchconv.ads 
 
 ada/s-stoele.o : ada/system.ads ada/s-stoele.ads ada/s-stoele.adb \
-   ada/unchconv.ads
+   ada/unchconv.ads 
 
 ada/s-strcom.o : ada/system.ads ada/s-strcom.ads ada/s-strcom.adb \
-   ada/unchconv.ads
+   ada/unchconv.ads 
 
 ada/s-strops.o : ada/system.ads ada/s-secsta.ads ada/s-stoele.ads \
-   ada/s-stoele.adb ada/s-strops.ads ada/s-strops.adb ada/unchconv.ads
+   ada/s-stoele.adb ada/s-strops.ads ada/s-strops.adb ada/unchconv.ads 
 
-ada/s-traceb.o : ada/system.ads ada/s-traceb.ads ada/s-traceb.adb
+ada/s-traceb.o : ada/system.ads ada/s-traceb.ads ada/s-traceb.adb 
 
-ada/s-traent.o : ada/system.ads ada/s-traent.ads ada/s-traent.adb
+ada/s-traent.o : ada/system.ads ada/s-traent.ads ada/s-traent.adb 
 
-ada/s-unstyp.o : ada/system.ads ada/s-unstyp.ads
+ada/s-unstyp.o : ada/system.ads ada/s-unstyp.ads 
 
 ada/s-wchcnv.o : ada/interfac.ads ada/system.ads ada/s-wchcnv.ads \
-   ada/s-wchcnv.adb ada/s-wchcon.ads ada/s-wchjis.ads
+   ada/s-wchcnv.adb ada/s-wchcon.ads ada/s-wchjis.ads 
 
-ada/s-wchcon.o : ada/system.ads ada/s-wchcon.ads
+ada/s-wchcon.o : ada/system.ads ada/s-wchcon.ads 
 
-ada/s-wchjis.o : ada/system.ads ada/s-wchjis.ads ada/s-wchjis.adb
+ada/s-wchjis.o : ada/system.ads ada/s-wchjis.ads ada/s-wchjis.adb 
 
 ada/scans.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/debug.ads \
    ada/gnat.ads ada/g-os_lib.ads ada/g-string.ads ada/gnatvsn.ads \
@@ -2691,7 +2715,7 @@ ada/scans.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/debug.ads \
    ada/system.ads ada/s-exctab.ads ada/s-memory.ads ada/s-stalib.ads \
    ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads \
    ada/table.adb ada/tree_io.ads ada/types.ads ada/uintp.ads \
-   ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads
+   ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads 
 
 ada/scn.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/atree.ads \
    ada/atree.adb ada/casing.ads ada/csets.ads ada/debug.ads ada/einfo.ads \
@@ -2710,7 +2734,7 @@ ada/scn.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/atree.ads \
    ada/s-wchcon.ads ada/table.ads ada/table.adb ada/tree_io.ads \
    ada/types.ads ada/types.adb ada/uintp.ads ada/uintp.adb \
    ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads ada/urealp.adb \
-   ada/widechar.ads
+   ada/widechar.ads 
 
 ada/scng.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/casing.ads \
    ada/csets.ads ada/debug.ads ada/err_vars.ads ada/gnat.ads \
@@ -2721,7 +2745,7 @@ ada/scng.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/casing.ads \
    ada/s-exctab.ads ada/s-memory.ads ada/s-stalib.ads ada/s-traent.ads \
    ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads ada/table.adb \
    ada/tree_io.ads ada/types.ads ada/uintp.ads ada/unchconv.ads \
-   ada/unchdeal.ads ada/urealp.ads ada/widechar.ads
+   ada/unchdeal.ads ada/urealp.ads ada/widechar.ads 
 
 ada/sem.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/atree.ads \
    ada/atree.adb ada/casing.ads ada/debug.ads ada/debug_a.ads \
@@ -2744,7 +2768,7 @@ ada/sem.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/atree.ads \
    ada/s-stoele.ads ada/s-stoele.adb ada/s-traent.ads ada/s-unstyp.ads \
    ada/s-wchcon.ads ada/table.ads ada/table.adb ada/tree_io.ads \
    ada/types.ads ada/types.adb ada/uintp.ads ada/uintp.adb ada/uname.ads \
-   ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads
+   ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads 
 
 ada/sem_aggr.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/atree.ads \
    ada/atree.adb ada/casing.ads ada/checks.ads ada/checks.adb \
@@ -2772,7 +2796,7 @@ ada/sem_aggr.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/atree.ads \
    ada/table.ads ada/table.adb ada/targparm.ads ada/tbuild.ads \
    ada/tbuild.adb ada/tree_io.ads ada/ttypes.ads ada/types.ads \
    ada/uintp.ads ada/uintp.adb ada/unchconv.ads ada/unchdeal.ads \
-   ada/urealp.ads ada/validsw.ads ada/widechar.ads
+   ada/urealp.ads ada/validsw.ads ada/widechar.ads 
 
 ada/sem_attr.o : ada/ada.ads ada/a-charac.ads ada/a-chlat1.ads \
    ada/a-except.ads ada/alloc.ads ada/atree.ads ada/atree.adb \
@@ -2802,7 +2826,7 @@ ada/sem_attr.o : ada/ada.ads ada/a-charac.ads ada/a-chlat1.ads \
    ada/tree_io.ads ada/ttypef.ads ada/ttypes.ads ada/types.ads \
    ada/types.adb ada/uintp.ads ada/uintp.adb ada/unchconv.ads \
    ada/unchdeal.ads ada/urealp.ads ada/urealp.adb ada/validsw.ads \
-   ada/widechar.ads
+   ada/widechar.ads 
 
 ada/sem_case.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/atree.ads \
    ada/atree.adb ada/casing.ads ada/debug.ads ada/einfo.ads ada/einfo.adb \
@@ -2818,7 +2842,7 @@ ada/sem_case.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/atree.ads \
    ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb ada/s-traent.ads \
    ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads ada/table.adb \
    ada/tbuild.ads ada/tree_io.ads ada/types.ads ada/uintp.ads \
-   ada/uintp.adb ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads
+   ada/uintp.adb ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads 
 
 ada/sem_cat.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/atree.ads \
    ada/atree.adb ada/casing.ads ada/debug.ads ada/einfo.ads ada/einfo.adb \
@@ -2835,7 +2859,7 @@ ada/sem_cat.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/atree.ads \
    ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb \
    ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads \
    ada/table.adb ada/tree_io.ads ada/types.ads ada/uintp.ads ada/uintp.adb \
-   ada/uname.ads ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads
+   ada/uname.ads ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads 
 
 ada/sem_ch10.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/atree.ads \
    ada/atree.adb ada/casing.ads ada/checks.ads ada/csets.ads ada/debug.ads \
@@ -2863,7 +2887,7 @@ ada/sem_ch10.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/atree.ads \
    ada/table.ads ada/table.adb ada/targparm.ads ada/tbuild.ads \
    ada/tree_io.ads ada/ttypes.ads ada/types.ads ada/uintp.ads \
    ada/uintp.adb ada/uname.ads ada/unchconv.ads ada/unchdeal.ads \
-   ada/urealp.ads ada/widechar.ads
+   ada/urealp.ads ada/widechar.ads 
 
 ada/sem_ch11.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/atree.ads \
    ada/atree.adb ada/casing.ads ada/checks.ads ada/debug.ads ada/einfo.ads \
@@ -2881,7 +2905,7 @@ ada/sem_ch11.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/atree.ads \
    ada/s-stoele.ads ada/s-stoele.adb ada/s-traent.ads ada/s-unstyp.ads \
    ada/s-wchcon.ads ada/table.ads ada/table.adb ada/tree_io.ads \
    ada/types.ads ada/uintp.ads ada/uintp.adb ada/unchconv.ads \
-   ada/unchdeal.ads ada/urealp.ads
+   ada/unchdeal.ads ada/urealp.ads 
 
 ada/sem_ch12.o : ada/ada.ads ada/a-except.ads ada/a-uncdea.ads \
    ada/alloc.ads ada/atree.ads ada/atree.adb ada/casing.ads ada/checks.ads \
@@ -2911,7 +2935,7 @@ ada/sem_ch12.o : ada/ada.ads ada/a-except.ads ada/a-uncdea.ads \
    ada/table.ads ada/table.adb ada/targparm.ads ada/tbuild.ads \
    ada/tbuild.adb ada/tree_io.ads ada/ttypes.ads ada/types.ads \
    ada/uintp.ads ada/uintp.adb ada/uname.ads ada/unchconv.ads \
-   ada/unchdeal.ads ada/urealp.ads ada/urealp.adb ada/widechar.ads
+   ada/unchdeal.ads ada/urealp.ads ada/urealp.adb ada/widechar.ads 
 
 ada/sem_ch13.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/atree.ads \
    ada/atree.adb ada/casing.ads ada/checks.ads ada/debug.ads ada/einfo.ads \
@@ -2932,7 +2956,7 @@ ada/sem_ch13.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/atree.ads \
    ada/table.ads ada/table.adb ada/tbuild.ads ada/tbuild.adb \
    ada/tree_io.ads ada/ttypes.ads ada/types.ads ada/uintp.ads \
    ada/uintp.adb ada/uname.ads ada/unchconv.ads ada/unchdeal.ads \
-   ada/urealp.ads ada/urealp.adb
+   ada/urealp.ads ada/urealp.adb 
 
 ada/sem_ch2.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/atree.ads \
    ada/atree.adb ada/casing.ads ada/debug.ads ada/einfo.ads ada/elists.ads \
@@ -2947,7 +2971,7 @@ ada/sem_ch2.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/atree.ads \
    ada/s-soflin.ads ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads \
    ada/s-stoele.adb ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads \
    ada/table.ads ada/table.adb ada/tree_io.ads ada/types.ads ada/types.adb \
-   ada/uintp.ads ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads
+   ada/uintp.ads ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads 
 
 ada/sem_ch3.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/atree.ads \
    ada/atree.adb ada/casing.ads ada/checks.ads ada/checks.adb \
@@ -2982,16 +3006,17 @@ ada/sem_ch3.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/atree.ads \
    ada/tbuild.ads ada/tbuild.adb ada/tree_io.ads ada/ttypes.ads \
    ada/types.ads ada/uintp.ads ada/uintp.adb ada/uname.ads \
    ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads ada/urealp.adb \
-   ada/validsw.ads ada/widechar.ads
+   ada/validsw.ads ada/widechar.ads 
 
 ada/sem_ch4.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/atree.ads \
    ada/atree.adb ada/casing.ads ada/checks.ads ada/csets.ads ada/debug.ads \
    ada/debug_a.ads ada/einfo.ads ada/einfo.adb ada/elists.ads \
    ada/err_vars.ads ada/errout.ads ada/erroutc.ads ada/exp_ch7.ads \
    ada/exp_tss.ads ada/exp_util.ads ada/expander.ads ada/fname.ads \
-   ada/freeze.ads ada/get_targ.ads ada/gnat.ads ada/g-htable.ads \
-   ada/g-os_lib.ads ada/g-speche.ads ada/g-string.ads ada/gnatvsn.ads \
-   ada/hostparm.ads ada/interfac.ads ada/itypes.ads ada/lib.ads \
+   ada/freeze.ads ada/get_targ.ads ada/gnat.ads ada/g-hesora.ads \
+   ada/g-htable.ads ada/g-os_lib.ads ada/g-speche.ads ada/g-string.ads \
+   ada/gnatvsn.ads ada/hostparm.ads ada/interfac.ads ada/itypes.ads \
+   ada/lib.ads ada/lib.adb ada/lib-list.adb ada/lib-sort.adb \
    ada/lib-xref.ads ada/namet.ads ada/namet.adb ada/nlists.ads \
    ada/nlists.adb ada/nmake.ads ada/nmake.adb ada/opt.ads ada/output.ads \
    ada/restrict.ads ada/rident.ads ada/rtsfind.ads ada/scans.ads \
@@ -3009,8 +3034,8 @@ ada/sem_ch4.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/atree.ads \
    ada/s-stoele.ads ada/s-stoele.adb ada/s-traent.ads ada/s-unstyp.ads \
    ada/s-wchcon.ads ada/table.ads ada/table.adb ada/targparm.ads \
    ada/tbuild.ads ada/tree_io.ads ada/ttypes.ads ada/types.ads \
-   ada/uintp.ads ada/uintp.adb ada/unchconv.ads ada/unchdeal.ads \
-   ada/urealp.ads ada/widechar.ads
+   ada/uintp.ads ada/uintp.adb ada/uname.ads ada/unchconv.ads \
+   ada/unchdeal.ads ada/urealp.ads ada/widechar.ads 
 
 ada/sem_ch5.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/atree.ads \
    ada/atree.adb ada/casing.ads ada/checks.ads ada/checks.adb \
@@ -3038,7 +3063,7 @@ ada/sem_ch5.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/atree.ads \
    ada/table.adb ada/targparm.ads ada/tbuild.ads ada/tree_io.ads \
    ada/ttypes.ads ada/types.ads ada/uintp.ads ada/uintp.adb \
    ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads ada/validsw.ads \
-   ada/widechar.ads
+   ada/widechar.ads 
 
 ada/sem_ch6.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/atree.ads \
    ada/atree.adb ada/casing.ads ada/checks.ads ada/csets.ads ada/debug.ads \
@@ -3068,7 +3093,7 @@ ada/sem_ch6.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/atree.ads \
    ada/table.ads ada/table.adb ada/targparm.ads ada/tbuild.ads \
    ada/tbuild.adb ada/tree_io.ads ada/ttypes.ads ada/types.ads \
    ada/uintp.ads ada/uintp.adb ada/uname.ads ada/unchconv.ads \
-   ada/unchdeal.ads ada/urealp.ads ada/validsw.ads ada/widechar.ads
+   ada/unchdeal.ads ada/urealp.ads ada/validsw.ads ada/widechar.ads 
 
 ada/sem_ch7.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/atree.ads \
    ada/atree.adb ada/casing.ads ada/checks.ads ada/csets.ads ada/debug.ads \
@@ -3096,7 +3121,7 @@ ada/sem_ch7.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/atree.ads \
    ada/s-wchcon.ads ada/table.ads ada/table.adb ada/targparm.ads \
    ada/tbuild.ads ada/tree_io.ads ada/ttypes.ads ada/types.ads \
    ada/uintp.ads ada/uintp.adb ada/uname.ads ada/unchconv.ads \
-   ada/unchdeal.ads ada/urealp.ads ada/widechar.ads
+   ada/unchdeal.ads ada/urealp.ads ada/widechar.ads 
 
 ada/sem_ch8.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/atree.ads \
    ada/atree.adb ada/casing.ads ada/checks.ads ada/csets.ads ada/debug.ads \
@@ -3126,37 +3151,38 @@ ada/sem_ch8.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/atree.ads \
    ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads \
    ada/table.adb ada/targparm.ads ada/tbuild.ads ada/tree_io.ads \
    ada/ttypes.ads ada/types.ads ada/uintp.ads ada/uintp.adb ada/uname.ads \
-   ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads ada/widechar.ads
+   ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads ada/widechar.ads 
 
 ada/sem_ch9.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/atree.ads \
    ada/atree.adb ada/casing.ads ada/checks.ads ada/checks.adb \
    ada/csets.ads ada/debug.ads ada/debug_a.ads ada/einfo.ads ada/einfo.adb \
    ada/elists.ads ada/err_vars.ads ada/errout.ads ada/erroutc.ads \
-   ada/exp_ch2.ads ada/exp_ch7.ads ada/exp_ch9.ads ada/exp_tss.ads \
-   ada/exp_util.ads ada/expander.ads ada/fname.ads ada/fname-uf.ads \
-   ada/freeze.ads ada/get_targ.ads ada/gnat.ads ada/g-htable.ads \
-   ada/g-os_lib.ads ada/g-string.ads ada/gnatvsn.ads ada/hostparm.ads \
-   ada/interfac.ads ada/itypes.ads ada/lib.ads ada/lib-xref.ads \
-   ada/namet.ads ada/namet.adb ada/nlists.ads ada/nlists.adb ada/nmake.ads \
-   ada/nmake.adb ada/opt.ads ada/output.ads ada/restrict.ads \
-   ada/restrict.adb ada/rident.ads ada/rtsfind.ads ada/scans.ads \
-   ada/scn.ads ada/scng.ads ada/scng.adb ada/sem.ads ada/sem_aggr.ads \
-   ada/sem_attr.ads ada/sem_cat.ads ada/sem_ch3.ads ada/sem_ch4.ads \
-   ada/sem_ch5.ads ada/sem_ch6.ads ada/sem_ch8.ads ada/sem_ch9.ads \
-   ada/sem_ch9.adb ada/sem_disp.ads ada/sem_dist.ads ada/sem_elab.ads \
-   ada/sem_eval.ads ada/sem_intr.ads ada/sem_res.ads ada/sem_res.adb \
-   ada/sem_type.ads ada/sem_util.ads ada/sem_util.adb ada/sem_warn.ads \
-   ada/sinfo.ads ada/sinfo.adb ada/sinput.ads ada/sinput.adb \
-   ada/snames.ads ada/sprint.ads ada/stand.ads ada/stringt.ads \
-   ada/style.ads ada/styleg.ads ada/styleg.adb ada/styleg-c.ads \
-   ada/stylesw.ads ada/system.ads ada/s-crc32.ads ada/s-exctab.ads \
-   ada/s-htable.ads ada/s-imgenu.ads ada/s-memory.ads ada/s-rident.ads \
-   ada/s-secsta.ads ada/s-soflin.ads ada/s-stache.ads ada/s-stalib.ads \
-   ada/s-stoele.ads ada/s-stoele.adb ada/s-traent.ads ada/s-unstyp.ads \
-   ada/s-wchcon.ads ada/table.ads ada/table.adb ada/targparm.ads \
-   ada/tbuild.ads ada/tree_io.ads ada/ttypes.ads ada/types.ads \
-   ada/uintp.ads ada/uintp.adb ada/uname.ads ada/unchconv.ads \
-   ada/unchdeal.ads ada/urealp.ads ada/validsw.ads ada/widechar.ads
+   ada/eval_fat.ads ada/exp_ch2.ads ada/exp_ch7.ads ada/exp_ch9.ads \
+   ada/exp_tss.ads ada/exp_util.ads ada/expander.ads ada/fname.ads \
+   ada/fname-uf.ads ada/freeze.ads ada/get_targ.ads ada/gnat.ads \
+   ada/g-htable.ads ada/g-os_lib.ads ada/g-string.ads ada/gnatvsn.ads \
+   ada/hostparm.ads ada/interfac.ads ada/itypes.ads ada/lib.ads \
+   ada/lib-xref.ads ada/namet.ads ada/namet.adb ada/nlists.ads \
+   ada/nlists.adb ada/nmake.ads ada/nmake.adb ada/opt.ads ada/output.ads \
+   ada/restrict.ads ada/restrict.adb ada/rident.ads ada/rtsfind.ads \
+   ada/scans.ads ada/scn.ads ada/scng.ads ada/scng.adb ada/sem.ads \
+   ada/sem_aggr.ads ada/sem_attr.ads ada/sem_cat.ads ada/sem_ch3.ads \
+   ada/sem_ch4.ads ada/sem_ch5.ads ada/sem_ch6.ads ada/sem_ch8.ads \
+   ada/sem_ch9.ads ada/sem_ch9.adb ada/sem_disp.ads ada/sem_dist.ads \
+   ada/sem_elab.ads ada/sem_eval.ads ada/sem_intr.ads ada/sem_res.ads \
+   ada/sem_res.adb ada/sem_type.ads ada/sem_util.ads ada/sem_util.adb \
+   ada/sem_warn.ads ada/sinfo.ads ada/sinfo.adb ada/sinput.ads \
+   ada/sinput.adb ada/snames.ads ada/sprint.ads ada/stand.ads \
+   ada/stringt.ads ada/style.ads ada/styleg.ads ada/styleg.adb \
+   ada/styleg-c.ads ada/stylesw.ads ada/system.ads ada/s-crc32.ads \
+   ada/s-exctab.ads ada/s-htable.ads ada/s-imgenu.ads ada/s-memory.ads \
+   ada/s-rident.ads ada/s-secsta.ads ada/s-soflin.ads ada/s-stache.ads \
+   ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb ada/s-traent.ads \
+   ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads ada/table.adb \
+   ada/targparm.ads ada/tbuild.ads ada/tree_io.ads ada/ttypes.ads \
+   ada/types.ads ada/uintp.ads ada/uintp.adb ada/uname.ads \
+   ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads ada/validsw.ads \
+   ada/widechar.ads 
 
 ada/sem_disp.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/atree.ads \
    ada/atree.adb ada/casing.ads ada/checks.ads ada/csets.ads ada/debug.ads \
@@ -3181,7 +3207,7 @@ ada/sem_disp.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/atree.ads \
    ada/table.ads ada/table.adb ada/targparm.ads ada/tbuild.ads \
    ada/tree_io.ads ada/ttypes.ads ada/types.ads ada/uintp.ads \
    ada/uintp.adb ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads \
-   ada/widechar.ads
+   ada/widechar.ads 
 
 ada/sem_dist.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/atree.ads \
    ada/atree.adb ada/casing.ads ada/debug.ads ada/einfo.ads ada/einfo.adb \
@@ -3200,7 +3226,7 @@ ada/sem_dist.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/atree.ads \
    ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads ada/table.adb \
    ada/tbuild.ads ada/tbuild.adb ada/tree_io.ads ada/types.ads \
    ada/types.adb ada/uintp.ads ada/uintp.adb ada/uname.ads \
-   ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads
+   ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads 
 
 ada/sem_elab.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/atree.ads \
    ada/atree.adb ada/casing.ads ada/checks.ads ada/csets.ads ada/debug.ads \
@@ -3227,7 +3253,7 @@ ada/sem_elab.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/atree.ads \
    ada/s-wchcon.ads ada/table.ads ada/table.adb ada/targparm.ads \
    ada/tbuild.ads ada/tbuild.adb ada/tree_io.ads ada/ttypes.ads \
    ada/types.ads ada/uintp.ads ada/uintp.adb ada/uname.ads \
-   ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads ada/widechar.ads
+   ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads ada/widechar.ads 
 
 ada/sem_elim.o : ada/ada.ads ada/a-except.ads ada/a-uncdea.ads \
    ada/alloc.ads ada/atree.ads ada/atree.adb ada/casing.ads ada/debug.ads \
@@ -3236,13 +3262,13 @@ ada/sem_elim.o : ada/ada.ads ada/a-except.ads ada/a-uncdea.ads \
    ada/g-os_lib.ads ada/g-string.ads ada/gnatvsn.ads ada/hostparm.ads \
    ada/namet.ads ada/nlists.ads ada/nlists.adb ada/opt.ads ada/output.ads \
    ada/sem_elim.ads ada/sem_elim.adb ada/sinfo.ads ada/sinfo.adb \
-   ada/sinput.ads ada/snames.ads ada/stand.ads ada/stringt.ads \
-   ada/system.ads ada/s-exctab.ads ada/s-htable.ads ada/s-htable.adb \
-   ada/s-imgenu.ads ada/s-memory.ads ada/s-secsta.ads ada/s-soflin.ads \
-   ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb \
-   ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads \
-   ada/table.adb ada/tree_io.ads ada/types.ads ada/uintp.ads ada/uintp.adb \
-   ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads
+   ada/sinput.ads ada/sinput.adb ada/snames.ads ada/stand.ads \
+   ada/stringt.ads ada/system.ads ada/s-exctab.ads ada/s-htable.ads \
+   ada/s-htable.adb ada/s-imgenu.ads ada/s-memory.ads ada/s-secsta.ads \
+   ada/s-soflin.ads ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads \
+   ada/s-stoele.adb ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads \
+   ada/table.ads ada/table.adb ada/tree_io.ads ada/types.ads ada/uintp.ads \
+   ada/uintp.adb ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads 
 
 ada/sem_eval.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/atree.ads \
    ada/atree.adb ada/casing.ads ada/checks.ads ada/csets.ads ada/debug.ads \
@@ -3270,7 +3296,7 @@ ada/sem_eval.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/atree.ads \
    ada/s-wchcon.ads ada/table.ads ada/table.adb ada/targparm.ads \
    ada/tbuild.ads ada/tbuild.adb ada/tree_io.ads ada/ttypes.ads \
    ada/types.ads ada/uintp.ads ada/uintp.adb ada/unchconv.ads \
-   ada/unchdeal.ads ada/urealp.ads ada/urealp.adb ada/widechar.ads
+   ada/unchdeal.ads ada/urealp.ads ada/urealp.adb ada/widechar.ads 
 
 ada/sem_intr.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/atree.ads \
    ada/atree.adb ada/casing.ads ada/debug.ads ada/einfo.ads ada/einfo.adb \
@@ -3287,7 +3313,7 @@ ada/sem_intr.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/atree.ads \
    ada/s-stoele.ads ada/s-stoele.adb ada/s-traent.ads ada/s-unstyp.ads \
    ada/s-wchcon.ads ada/table.ads ada/table.adb ada/targparm.ads \
    ada/tree_io.ads ada/types.ads ada/uintp.ads ada/uintp.adb ada/uname.ads \
-   ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads
+   ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads 
 
 ada/sem_maps.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/atree.ads \
    ada/atree.adb ada/casing.ads ada/debug.ads ada/einfo.ads ada/einfo.adb \
@@ -3301,7 +3327,7 @@ ada/sem_maps.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/atree.ads \
    ada/s-stoele.ads ada/s-stoele.adb ada/s-traent.ads ada/s-unstyp.ads \
    ada/s-wchcon.ads ada/table.ads ada/table.adb ada/tree_io.ads \
    ada/types.ads ada/uintp.ads ada/uintp.adb ada/unchconv.ads \
-   ada/unchdeal.ads ada/urealp.ads
+   ada/unchdeal.ads ada/urealp.ads 
 
 ada/sem_mech.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/atree.ads \
    ada/atree.adb ada/casing.ads ada/debug.ads ada/einfo.ads ada/einfo.adb \
@@ -3317,7 +3343,7 @@ ada/sem_mech.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/atree.ads \
    ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads \
    ada/table.adb ada/targparm.ads ada/tree_io.ads ada/types.ads \
    ada/uintp.ads ada/uintp.adb ada/unchconv.ads ada/unchdeal.ads \
-   ada/urealp.ads
+   ada/urealp.ads 
 
 ada/sem_prag.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/atree.ads \
    ada/atree.adb ada/casing.ads ada/casing.adb ada/checks.ads \
@@ -3352,7 +3378,7 @@ ada/sem_prag.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/atree.ads \
    ada/tree_io.ads ada/ttypes.ads ada/types.ads ada/types.adb \
    ada/uintp.ads ada/uintp.adb ada/uname.ads ada/unchconv.ads \
    ada/unchdeal.ads ada/urealp.ads ada/urealp.adb ada/validsw.ads \
-   ada/widechar.ads
+   ada/widechar.ads 
 
 ada/sem_res.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/atree.ads \
    ada/atree.adb ada/casing.ads ada/checks.ads ada/checks.adb \
@@ -3385,7 +3411,7 @@ ada/sem_res.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/atree.ads \
    ada/tbuild.adb ada/tree_io.ads ada/ttypes.ads ada/types.ads \
    ada/types.adb ada/uintp.ads ada/uintp.adb ada/uname.ads \
    ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads ada/urealp.adb \
-   ada/validsw.ads ada/widechar.ads
+   ada/validsw.ads ada/widechar.ads 
 
 ada/sem_smem.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/atree.ads \
    ada/atree.adb ada/casing.ads ada/debug.ads ada/einfo.ads ada/einfo.adb \
@@ -3399,7 +3425,7 @@ ada/sem_smem.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/atree.ads \
    ada/s-soflin.ads ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads \
    ada/s-stoele.adb ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads \
    ada/table.ads ada/table.adb ada/tree_io.ads ada/types.ads ada/uintp.ads \
-   ada/uintp.adb ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads
+   ada/uintp.adb ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads 
 
 ada/sem_type.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/atree.ads \
    ada/atree.adb ada/casing.ads ada/checks.ads ada/csets.ads ada/debug.ads \
@@ -3424,7 +3450,7 @@ ada/sem_type.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/atree.ads \
    ada/table.ads ada/table.adb ada/targparm.ads ada/tbuild.ads \
    ada/tree_io.ads ada/ttypes.ads ada/types.ads ada/uintp.ads \
    ada/uintp.adb ada/uname.ads ada/unchconv.ads ada/unchdeal.ads \
-   ada/urealp.ads ada/widechar.ads
+   ada/urealp.ads ada/widechar.ads 
 
 ada/sem_util.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/atree.ads \
    ada/atree.adb ada/casing.ads ada/casing.adb ada/checks.ads \
@@ -3452,7 +3478,7 @@ ada/sem_util.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/atree.ads \
    ada/tbuild.ads ada/tbuild.adb ada/tree_io.ads ada/ttypes.ads \
    ada/types.ads ada/types.adb ada/uintp.ads ada/uintp.adb ada/uname.ads \
    ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads ada/urealp.adb \
-   ada/widechar.ads
+   ada/widechar.ads 
 
 ada/sem_vfpt.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/atree.ads \
    ada/atree.adb ada/casing.ads ada/cstand.ads ada/debug.ads ada/einfo.ads \
@@ -3467,7 +3493,7 @@ ada/sem_vfpt.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/atree.ads \
    ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads \
    ada/table.adb ada/targparm.ads ada/tree_io.ads ada/ttypef.ads \
    ada/types.ads ada/uintp.ads ada/uintp.adb ada/unchconv.ads \
-   ada/unchdeal.ads ada/urealp.ads
+   ada/unchdeal.ads ada/urealp.ads 
 
 ada/sem_warn.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/atree.ads \
    ada/atree.adb ada/casing.ads ada/checks.ads ada/csets.ads ada/debug.ads \
@@ -3492,7 +3518,7 @@ ada/sem_warn.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/atree.ads \
    ada/s-wchcon.ads ada/table.ads ada/table.adb ada/targparm.ads \
    ada/tbuild.ads ada/tree_io.ads ada/ttypes.ads ada/types.ads \
    ada/uintp.ads ada/uintp.adb ada/uname.ads ada/unchconv.ads \
-   ada/unchdeal.ads ada/urealp.ads ada/widechar.ads
+   ada/unchdeal.ads ada/urealp.ads ada/widechar.ads 
 
 ada/sinfo-cn.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/atree.ads \
    ada/atree.adb ada/casing.ads ada/debug.ads ada/einfo.ads ada/elists.ads \
@@ -3505,7 +3531,7 @@ ada/sinfo-cn.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/atree.ads \
    ada/s-stoele.ads ada/s-stoele.adb ada/s-traent.ads ada/s-unstyp.ads \
    ada/s-wchcon.ads ada/table.ads ada/table.adb ada/tree_io.ads \
    ada/types.ads ada/uintp.ads ada/unchconv.ads ada/unchdeal.ads \
-   ada/urealp.ads
+   ada/urealp.ads 
 
 ada/sinfo.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/atree.ads \
    ada/atree.adb ada/casing.ads ada/debug.ads ada/einfo.ads ada/elists.ads \
@@ -3517,7 +3543,7 @@ ada/sinfo.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/atree.ads \
    ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb \
    ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads \
    ada/table.adb ada/tree_io.ads ada/types.ads ada/uintp.ads ada/uintp.adb \
-   ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads
+   ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads 
 
 ada/sinput-c.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/alloc.ads ada/casing.ads ada/debug.ads ada/gnat.ads \
@@ -3527,7 +3553,7 @@ ada/sinput-c.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/s-memory.ads ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb \
    ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads \
    ada/table.adb ada/tree_io.ads ada/types.ads ada/unchconv.ads \
-   ada/unchdeal.ads
+   ada/unchdeal.ads 
 
 ada/sinput-d.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/casing.ads \
    ada/debug.ads ada/gnat.ads ada/g-os_lib.ads ada/g-string.ads \
@@ -3536,7 +3562,7 @@ ada/sinput-d.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/casing.ads \
    ada/sinput-d.adb ada/system.ads ada/s-exctab.ads ada/s-memory.ads \
    ada/s-stalib.ads ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads \
    ada/table.ads ada/table.adb ada/tree_io.ads ada/types.ads \
-   ada/unchconv.ads ada/unchdeal.ads
+   ada/unchconv.ads ada/unchdeal.ads 
 
 ada/sinput-l.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/atree.ads \
    ada/atree.adb ada/casing.ads ada/csets.ads ada/debug.ads ada/einfo.ads \
@@ -3554,7 +3580,7 @@ ada/sinput-l.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/atree.ads \
    ada/s-soflin.ads ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads \
    ada/s-stoele.adb ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads \
    ada/table.ads ada/table.adb ada/tree_io.ads ada/types.ads ada/uintp.ads \
-   ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads ada/widechar.ads
+   ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads ada/widechar.ads 
 
 ada/sinput.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/casing.ads \
    ada/debug.ads ada/gnat.ads ada/g-os_lib.ads ada/g-string.ads \
@@ -3563,7 +3589,7 @@ ada/sinput.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/casing.ads \
    ada/s-exctab.ads ada/s-memory.ads ada/s-secsta.ads ada/s-stalib.ads \
    ada/s-stoele.ads ada/s-stoele.adb ada/s-traent.ads ada/s-unstyp.ads \
    ada/s-wchcon.ads ada/table.ads ada/table.adb ada/tree_io.ads \
-   ada/types.ads ada/unchconv.ads ada/unchdeal.ads ada/widechar.ads
+   ada/types.ads ada/unchconv.ads ada/unchdeal.ads ada/widechar.ads 
 
 ada/snames.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/debug.ads \
    ada/gnat.ads ada/g-os_lib.ads ada/g-string.ads ada/gnatvsn.ads \
@@ -3571,7 +3597,7 @@ ada/snames.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/debug.ads \
    ada/snames.ads ada/snames.adb ada/system.ads ada/s-exctab.ads \
    ada/s-memory.ads ada/s-stalib.ads ada/s-traent.ads ada/s-unstyp.ads \
    ada/s-wchcon.ads ada/table.ads ada/table.adb ada/tree_io.ads \
-   ada/types.ads ada/unchconv.ads ada/unchdeal.ads
+   ada/types.ads ada/unchconv.ads ada/unchdeal.ads 
 
 ada/sprint.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/atree.ads \
    ada/atree.adb ada/casing.ads ada/csets.ads ada/debug.ads ada/einfo.ads \
@@ -3588,7 +3614,7 @@ ada/sprint.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/atree.ads \
    ada/s-stoele.ads ada/s-stoele.adb ada/s-traent.ads ada/s-unstyp.ads \
    ada/s-wchcon.ads ada/table.ads ada/table.adb ada/tree_io.ads \
    ada/types.ads ada/uintp.ads ada/uintp.adb ada/uname.ads \
-   ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads ada/urealp.adb
+   ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads ada/urealp.adb 
 
 ada/stand.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/debug.ads \
    ada/gnat.ads ada/g-os_lib.ads ada/g-string.ads ada/gnatvsn.ads \
@@ -3596,7 +3622,7 @@ ada/stand.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/debug.ads \
    ada/stand.adb ada/system.ads ada/s-exctab.ads ada/s-memory.ads \
    ada/s-stalib.ads ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads \
    ada/table.ads ada/table.adb ada/tree_io.ads ada/types.ads \
-   ada/unchconv.ads ada/unchdeal.ads
+   ada/unchconv.ads ada/unchdeal.ads 
 
 ada/stringt.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/debug.ads \
    ada/gnat.ads ada/g-os_lib.ads ada/g-string.ads ada/gnatvsn.ads \
@@ -3605,7 +3631,7 @@ ada/stringt.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/debug.ads \
    ada/s-exctab.ads ada/s-memory.ads ada/s-stalib.ads ada/s-traent.ads \
    ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads ada/table.adb \
    ada/tree_io.ads ada/types.ads ada/types.adb ada/unchconv.ads \
-   ada/unchdeal.ads
+   ada/unchdeal.ads 
 
 ada/style.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/atree.ads \
    ada/atree.adb ada/casing.ads ada/csets.ads ada/debug.ads ada/einfo.ads \
@@ -3621,7 +3647,7 @@ ada/style.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/atree.ads \
    ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb ada/s-traent.ads \
    ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads ada/table.adb \
    ada/tree_io.ads ada/types.ads ada/uintp.ads ada/unchconv.ads \
-   ada/unchdeal.ads ada/urealp.ads ada/widechar.ads
+   ada/unchdeal.ads ada/urealp.ads ada/widechar.ads 
 
 ada/styleg-c.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/atree.ads \
    ada/casing.ads ada/csets.ads ada/debug.ads ada/einfo.ads \
@@ -3632,7 +3658,7 @@ ada/styleg-c.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/atree.ads \
    ada/stylesw.ads ada/system.ads ada/s-exctab.ads ada/s-memory.ads \
    ada/s-stalib.ads ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads \
    ada/table.ads ada/table.adb ada/tree_io.ads ada/types.ads ada/uintp.ads \
-   ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads
+   ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads 
 
 ada/styleg.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/casing.ads \
    ada/csets.ads ada/debug.ads ada/err_vars.ads ada/gnat.ads \
@@ -3642,12 +3668,12 @@ ada/styleg.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/casing.ads \
    ada/s-memory.ads ada/s-stalib.ads ada/s-traent.ads ada/s-unstyp.ads \
    ada/s-wchcon.ads ada/table.ads ada/table.adb ada/tree_io.ads \
    ada/types.ads ada/uintp.ads ada/unchconv.ads ada/unchdeal.ads \
-   ada/urealp.ads
+   ada/urealp.ads 
 
 ada/stylesw.o : ada/gnat.ads ada/g-string.ads ada/gnatvsn.ads \
    ada/hostparm.ads ada/opt.ads ada/stylesw.ads ada/stylesw.adb \
    ada/system.ads ada/s-exctab.ads ada/s-stalib.ads ada/s-unstyp.ads \
-   ada/s-wchcon.ads ada/types.ads ada/unchconv.ads ada/unchdeal.ads
+   ada/s-wchcon.ads ada/types.ads ada/unchconv.ads ada/unchdeal.ads 
 
 ada/switch-b.o : ada/ada.ads ada/a-except.ads ada/debug.ads ada/gnat.ads \
    ada/g-os_lib.ads ada/g-string.ads ada/gnatvsn.ads ada/hostparm.ads \
@@ -3655,7 +3681,7 @@ ada/switch-b.o : ada/ada.ads ada/a-except.ads ada/debug.ads ada/gnat.ads \
    ada/switch-b.adb ada/system.ads ada/s-exctab.ads ada/s-soflin.ads \
    ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb \
    ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads ada/types.ads \
-   ada/unchconv.ads ada/unchdeal.ads
+   ada/unchconv.ads ada/unchdeal.ads 
 
 ada/switch-c.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/debug.ads \
    ada/gnat.ads ada/g-os_lib.ads ada/g-string.ads ada/gnatvsn.ads \
@@ -3665,21 +3691,21 @@ ada/switch-c.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/debug.ads \
    ada/s-soflin.ads ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads \
    ada/s-stoele.adb ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads \
    ada/table.ads ada/table.adb ada/tree_io.ads ada/types.ads \
-   ada/unchconv.ads ada/unchdeal.ads ada/validsw.ads
+   ada/unchconv.ads ada/unchdeal.ads ada/validsw.ads 
 
 ada/switch.o : ada/ada.ads ada/a-except.ads ada/switch.ads ada/switch.adb \
    ada/system.ads ada/s-exctab.ads ada/s-exctab.adb ada/s-htable.ads \
    ada/s-soflin.ads ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads \
    ada/s-stoele.adb ada/s-traent.ads ada/s-unstyp.ads ada/types.ads \
-   ada/unchconv.ads ada/unchdeal.ads
+   ada/unchconv.ads ada/unchdeal.ads 
 
-ada/system.o : ada/system.ads
+ada/system.o : ada/system.ads 
 
 ada/table.o : ada/debug.ads ada/gnat.ads ada/g-os_lib.ads ada/g-string.ads \
    ada/gnatvsn.ads ada/hostparm.ads ada/opt.ads ada/output.ads \
    ada/system.ads ada/s-exctab.ads ada/s-memory.ads ada/s-stalib.ads \
    ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads ada/table.adb \
-   ada/tree_io.ads ada/types.ads ada/unchconv.ads ada/unchdeal.ads
+   ada/tree_io.ads ada/types.ads ada/unchconv.ads ada/unchdeal.ads 
 
 ada/targparm.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/csets.ads \
    ada/debug.ads ada/gnat.ads ada/g-os_lib.ads ada/g-string.ads \
@@ -3690,7 +3716,7 @@ ada/targparm.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/csets.ads \
    ada/s-stoele.ads ada/s-stoele.adb ada/s-traent.ads ada/s-unstyp.ads \
    ada/s-wchcon.ads ada/table.ads ada/table.adb ada/targparm.ads \
    ada/targparm.adb ada/tree_io.ads ada/types.ads ada/unchconv.ads \
-   ada/unchdeal.ads ada/widechar.ads
+   ada/unchdeal.ads ada/widechar.ads 
 
 ada/tbuild.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/atree.ads \
    ada/atree.adb ada/casing.ads ada/debug.ads ada/einfo.ads ada/einfo.adb \
@@ -3707,7 +3733,7 @@ ada/tbuild.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/atree.ads \
    ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads \
    ada/table.adb ada/tbuild.ads ada/tbuild.adb ada/tree_io.ads \
    ada/types.ads ada/uintp.ads ada/uintp.adb ada/uname.ads \
-   ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads ada/widechar.ads
+   ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads ada/widechar.ads 
 
 ada/tree_gen.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/atree.ads \
    ada/casing.ads ada/debug.ads ada/einfo.ads ada/elists.ads ada/fname.ads \
@@ -3719,14 +3745,14 @@ ada/tree_gen.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/atree.ads \
    ada/s-stalib.ads ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads \
    ada/table.ads ada/table.adb ada/tree_gen.ads ada/tree_gen.adb \
    ada/tree_io.ads ada/types.ads ada/uintp.ads ada/unchconv.ads \
-   ada/unchdeal.ads ada/urealp.ads
+   ada/unchdeal.ads ada/urealp.ads 
 
 ada/tree_io.o : ada/ada.ads ada/a-except.ads ada/debug.ads ada/gnat.ads \
    ada/g-os_lib.ads ada/g-string.ads ada/output.ads ada/system.ads \
    ada/s-exctab.ads ada/s-exctab.adb ada/s-htable.ads ada/s-soflin.ads \
    ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb \
    ada/s-traent.ads ada/s-unstyp.ads ada/tree_io.ads ada/tree_io.adb \
-   ada/types.ads ada/unchconv.ads ada/unchdeal.ads
+   ada/types.ads ada/unchconv.ads ada/unchdeal.ads 
 
 ada/treepr.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/atree.ads \
    ada/atree.adb ada/casing.ads ada/csets.ads ada/debug.ads ada/einfo.ads \
@@ -3743,7 +3769,7 @@ ada/treepr.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/atree.ads \
    ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads ada/table.adb \
    ada/tree_io.ads ada/treepr.ads ada/treepr.adb ada/treeprs.ads \
    ada/types.ads ada/uintp.ads ada/uintp.adb ada/uname.ads \
-   ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads
+   ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads 
 
 ada/treeprs.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/debug.ads \
    ada/gnat.ads ada/g-os_lib.ads ada/g-string.ads ada/gnatvsn.ads \
@@ -3751,19 +3777,19 @@ ada/treeprs.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/debug.ads \
    ada/system.ads ada/s-exctab.ads ada/s-memory.ads ada/s-stalib.ads \
    ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads \
    ada/table.adb ada/tree_io.ads ada/treeprs.ads ada/types.ads \
-   ada/uintp.ads ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads
+   ada/uintp.ads ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads 
 
-ada/ttypef.o : ada/system.ads ada/ttypef.ads
+ada/ttypef.o : ada/system.ads ada/ttypef.ads 
 
 ada/ttypes.o : ada/get_targ.ads ada/system.ads ada/s-exctab.ads \
    ada/s-stalib.ads ada/s-unstyp.ads ada/ttypes.ads ada/types.ads \
-   ada/unchconv.ads ada/unchdeal.ads
+   ada/unchconv.ads ada/unchdeal.ads 
 
 ada/types.o : ada/ada.ads ada/a-except.ads ada/system.ads ada/s-carun8.ads \
    ada/s-exctab.ads ada/s-exctab.adb ada/s-htable.ads ada/s-soflin.ads \
    ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb \
    ada/s-traent.ads ada/s-unstyp.ads ada/types.ads ada/types.adb \
-   ada/unchconv.ads ada/unchdeal.ads
+   ada/unchconv.ads ada/unchdeal.ads 
 
 ada/uintp.o : ada/ada.ads ada/a-except.ads ada/a-uncdea.ads ada/alloc.ads \
    ada/debug.ads ada/gnat.ads ada/g-htable.ads ada/g-os_lib.ads \
@@ -3772,7 +3798,7 @@ ada/uintp.o : ada/ada.ads ada/a-except.ads ada/a-uncdea.ads ada/alloc.ads \
    ada/s-htable.adb ada/s-memory.ads ada/s-stalib.ads ada/s-traent.ads \
    ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads ada/table.adb \
    ada/tree_io.ads ada/types.ads ada/uintp.ads ada/uintp.adb \
-   ada/unchconv.ads ada/unchdeal.ads
+   ada/unchconv.ads ada/unchdeal.ads 
 
 ada/uname.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/atree.ads \
    ada/atree.adb ada/casing.ads ada/debug.ads ada/einfo.ads ada/einfo.adb \
@@ -3787,7 +3813,7 @@ ada/uname.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/atree.ads \
    ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb ada/s-traent.ads \
    ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads ada/table.adb \
    ada/tree_io.ads ada/types.ads ada/uintp.ads ada/uintp.adb ada/uname.ads \
-   ada/uname.adb ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads
+   ada/uname.adb ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads 
 
 ada/urealp.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/debug.ads \
    ada/gnat.ads ada/g-htable.ads ada/g-os_lib.ads ada/g-string.ads \
@@ -3796,7 +3822,7 @@ ada/urealp.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/debug.ads \
    ada/s-stalib.ads ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads \
    ada/table.ads ada/table.adb ada/tree_io.ads ada/types.ads ada/uintp.ads \
    ada/uintp.adb ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads \
-   ada/urealp.adb
+   ada/urealp.adb 
 
 ada/usage.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/debug.ads \
    ada/gnat.ads ada/g-os_lib.ads ada/g-string.ads ada/gnatvsn.ads \
@@ -3804,12 +3830,12 @@ ada/usage.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/debug.ads \
    ada/system.ads ada/s-exctab.ads ada/s-memory.ads ada/s-stalib.ads \
    ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads \
    ada/table.adb ada/tree_io.ads ada/types.ads ada/unchconv.ads \
-   ada/unchdeal.ads ada/usage.ads ada/usage.adb
+   ada/unchdeal.ads ada/usage.ads ada/usage.adb 
 
 ada/validsw.o : ada/gnat.ads ada/g-string.ads ada/gnatvsn.ads \
    ada/hostparm.ads ada/opt.ads ada/system.ads ada/s-exctab.ads \
    ada/s-stalib.ads ada/s-unstyp.ads ada/s-wchcon.ads ada/types.ads \
-   ada/unchconv.ads ada/unchdeal.ads ada/validsw.ads ada/validsw.adb
+   ada/unchconv.ads ada/unchdeal.ads ada/validsw.ads ada/validsw.adb 
 
 ada/widechar.o : ada/ada.ads ada/a-except.ads ada/gnat.ads \
    ada/g-string.ads ada/gnatvsn.ads ada/hostparm.ads ada/interfac.ads \
@@ -3817,6 +3843,6 @@ ada/widechar.o : ada/ada.ads ada/a-except.ads ada/gnat.ads \
    ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb \
    ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcnv.ads ada/s-wchcnv.adb \
    ada/s-wchcon.ads ada/s-wchjis.ads ada/types.ads ada/unchconv.ads \
-   ada/unchdeal.ads ada/widechar.ads ada/widechar.adb
+   ada/unchdeal.ads ada/widechar.ads ada/widechar.adb 
 
 # end of regular dependencies
index 13cf68367e607d52f5f54389fbee2d82dd0d6bea..41b5f5baee29e73aa2119a225bd5196850a92ae1 100644 (file)
@@ -1606,7 +1606,7 @@ gnattools2: ../stamp-tools
          ../../gnatls$(exeext) ../../gnatprep$(exeext) \
          ../../gnatxref$(exeext) \
          ../../gnatfind$(exeext) ../../gnatname$(exeext) \
-         ../../gnatclean$(exeext) \
+         ../../gnatclean$(exeext) ../../gprmake$(exeext) \
          ../../gprcmd$(exeext)   ../../gpr2make$(exeext)
 
 # These tools are only built for the native version.
@@ -1648,6 +1648,12 @@ gnattools4: ../stamp-tools
        $(GNATLINK) -v gnatname -o $@ --GCC="$(CC) $(ADA_INCLUDES)" \
                    $(TOOLS_LIBS)
 
+../../gprmake$(exeext): ../stamp-tools
+       $(GNATMAKE) -c $(ADA_INCLUDES) gprmake --GCC="$(CC) $(ALL_ADAFLAGS)"
+       $(GNATBIND) $(ADA_INCLUDES) $(GNATBIND_FLAGS) gprmake
+       $(GNATLINK) -v gprmake -o $@ --GCC="$(CC) $(ADA_INCLUDES)" \
+                   $(TOOLS_LIBS)
+
 ../../gpr2make$(exeext): ../stamp-tools
        $(GNATMAKE) -c $(ADA_INCLUDES) gpr2make --GCC="$(CC) $(ALL_ADAFLAGS)"
        $(GNATBIND) $(ADA_INCLUDES) $(GNATBIND_FLAGS) gpr2make 
index ba554f9bc2d08671de058f015b4f6397b4dccd23..b42b3fc7fd77bcbc2543cc3ae90f3be7d7c45b9a 100644 (file)
@@ -2,7 +2,7 @@
 --                                                                          --
 --                         GNAT COMPILER COMPONENTS                         --
 --                                                                          --
---                     ADA.EXCEPTIONS.EXCEPTION_PROPAGATION                 --
+--  A D A . E X C E P T I O N S . E X C E P T I O N _ P R O P A G A T I O N --
 --                                                                          --
 --                                 B o d y                                  --
 --                                                                          --
@@ -104,6 +104,7 @@ package body Exception_Propagation is
 
    type Unwind_Word is mod 2 ** System.Word_Size;
    for Unwind_Word'Size use System.Word_Size;
+   --  Map the corresponding C type used in Unwind_Exception below.
 
    type Unwind_Exception is record
       Class    : Exception_Class := GNAT_Exception_Class;
@@ -111,8 +112,7 @@ package body Exception_Propagation is
       Private1 : Unwind_Word;
       Private2 : Unwind_Word;
    end record;
-
-   pragma Convention (C, Unwind_Exception);
+   --  Map the GCC struct used for exception handling.
 
    for Unwind_Exception'Alignment use Standard'Maximum_Alignment;
    --  The C++ ABI mandates the common exception header to be at least
@@ -122,7 +122,7 @@ package body Exception_Propagation is
    --  1/ We pass pointers to such headers down to the underlying
    --     libGCC unwinder,
 
-   --  and
+   --    and
 
    --  2/ The GNAT_GCC_Exception record below starts with this common
    --     common header and has a C counterpart which needs to be laid
index a2e40f8d4efa0b1e28401060b71a6b5af1acb7d8..c232695ce75ccf3718dfb35daf8c7287b8434f41 100644 (file)
@@ -65,8 +65,12 @@ package body Ada.Tags is
 
    subtype Cstring is String (Positive);
    type Cstring_Ptr is access all Cstring;
+
    type Tag_Table is array (Natural range <>) of Tag;
    pragma Suppress_Initialization (Tag_Table);
+   pragma Suppress (Index_Check, On => Tag_Table);
+   --  We suppress index checks because the declared size in the record
+   --  below is a dummy size of one (see below).
 
    type Wide_Boolean is new Boolean;
    --  This name should probably be changed sometime ??? and indeed
@@ -79,13 +83,33 @@ package body Ada.Tags is
       HT_Link            : Tag;
       Remotely_Callable  : Wide_Boolean;
       RC_Offset          : SSE.Storage_Offset;
-      Ancestor_Tags      : Tag_Table (Natural);
+      Ancestor_Tags      : Tag_Table (0 .. 1);
    end record;
+   --  The size of the Ancestor_Tags array actually depends on the tagged
+   --  type to which it applies.  We are using the same mechanism as for
+   --  the Prims_Ptr array in the Dispatch_Table record.  See comments
+   --  below for more details.
 
    type Dispatch_Table is record
       TSD       : Type_Specific_Data_Ptr;
-      Prims_Ptr : Address_Array (Positive);
+      Prims_Ptr : Address_Array (1 .. 1);
    end record;
+   --  The size of the Prims_Ptr array actually depends on the tagged
+   --  type to which it applies. For each tagged type, the expander
+   --  computes the actual array size, and allocates the Dispatch_Table
+   --  record accordingly.
+   --
+   --  To avoid the use of discriminants to define the actual size
+   --  of the dispatch table, we used to declare the tag as a pointer
+   --  to a record that contains an arbitrary array of addresses, using
+   --  Positive as its index. This ensures that there are never range
+   --  checks when accessing the dispatch table, but it prevents GDB
+   --  from displaying tagged types properly. A better approach is
+   --  to declare this record type as holding a small number of addresses,
+   --  and to explicitly suppress checks on it.
+   --
+   --  Note that in both cases, this type is never allocated, and serves
+   --  only to declare the corresponding access type.
 
    ---------------------------------------------
    -- Unchecked Conversions for String Fields --
@@ -182,7 +206,6 @@ package body Ada.Tags is
          function H is new System.HTable.Hash (HTable_Headers);
          Str : constant Cstring_Ptr    := To_Cstring_Ptr (F);
          Res : constant HTable_Headers := H (Str (1 .. Length (Str)));
-
       begin
          return Res;
       end Hash;
@@ -219,7 +242,6 @@ package body Ada.Tags is
 
    function CW_Membership (Obj_Tag : Tag; Typ_Tag : Tag) return Boolean is
       Pos : constant Integer := Obj_Tag.TSD.Idepth - Typ_Tag.TSD.Idepth;
-
    begin
       return Pos >= 0 and then Obj_Tag.TSD.Ancestor_Tags (Pos) = Typ_Tag;
    end CW_Membership;
@@ -230,7 +252,6 @@ package body Ada.Tags is
 
    function Expanded_Name (T : Tag) return String is
       Result : constant Cstring_Ptr := T.TSD.Expanded_Name;
-
    begin
       return Result (1 .. Length (Result));
    end Expanded_Name;
@@ -241,7 +262,6 @@ package body Ada.Tags is
 
    function External_Tag (T : Tag) return String is
       Result : constant Cstring_Ptr := T.TSD.External_Tag;
-
    begin
       return Result (1 .. Length (Result));
    end External_Tag;
index 6dd97ff6642e1dfa521d4fa77850bf796f0dd5c6..6e6adbfa4e15c28c7a3429734b5899fbc02e77be 100644 (file)
@@ -210,6 +210,10 @@ private
    --  Size of each ancestor tag entry in the TSD
 
    type Address_Array is array (Natural range <>) of System.Address;
+   pragma Suppress (Index_Check, On => Address_Array);
+   --  The reason we suppress index checks is that in the body, objects
+   --  of this type are declared with a dummy size of 1, the actual size
+   --  depending on the number of primitive operations.
 
    type Dispatch_Table;
    type Tag is access all Dispatch_Table;
index bc8c2ff0d4f2e7ddf2d95ed6df22e146c81acd77..5788109391641de78b70248499066d2f685f177c 100644 (file)
@@ -41,6 +41,7 @@ with Sem_Res;  use Sem_Res;
 with Sem_Util; use Sem_Util;
 with Sem_Warn; use Sem_Warn;
 with Sinfo;    use Sinfo;
+with Snames;   use Snames;
 with Stand;    use Stand;
 with Tbuild;   use Tbuild;
 with Uintp;    use Uintp;
@@ -216,6 +217,13 @@ package body Exp_Ch2 is
          --  issue that they do not get replaced when they could be).
 
          and then Nkind (Parent (N)) /= N_Pragma_Argument_Association
+
+         --  Same for Asm_Input and Asm_Output attribute references.
+
+         and then not (Nkind (Parent (N)) = N_Attribute_Reference
+           and then (Attribute_Name (Parent (N)) = Name_Asm_Input
+             or else Attribute_Name (Parent (N)) = Name_Asm_Output))
+
       then
          --  Case of Current_Value is a compile time known value
 
index c712eacc108051e5cc48373725c2402e941797f1..d0eb4394697557b0df1b2fdd5f28c07dd2561d25 100644 (file)
@@ -3413,7 +3413,7 @@ package body Exp_Ch9 is
 
       --  It is not a boolean variable or literal, so check the restriction
 
-      Check_Restriction (Boolean_Entry_Barriers, Cond);
+      Check_Restriction (Simple_Barriers, Cond);
    end Expand_Entry_Barrier;
 
    ------------------------------------
index 755a34efdee545ea13adf677b22487dcf3611f9d..3dc76ef09322ef6718f0cc2eccdbbf7321be78cd 100644 (file)
@@ -113,7 +113,7 @@ procedure Gnatbind is
          No_Reentrancy            => True,
          --  Not checkable at compile time
 
-         Max_Entry_Queue_Depth    => True,
+         Max_Entry_Queue_Length    => True,
          --  Not checkable at compile time
 
          Max_Storage_At_Blocking  => True,
diff --git a/gcc/ada/gprmake.adb b/gcc/ada/gprmake.adb
new file mode 100644 (file)
index 0000000..dc8a659
--- /dev/null
@@ -0,0 +1,36 @@
+------------------------------------------------------------------------------
+--                                                                          --
+--                         GNAT COMPILER COMPONENTS                         --
+--                                                                          --
+--                             G P R M A K E                                --
+--                                                                          --
+--                                 B o d y                                  --
+--                                                                          --
+--        Copyright (C) 2004 Free Software Foundation, Inc.                 --
+--                                                                          --
+-- GNAT is free software;  you can  redistribute it  and/or modify it under --
+-- terms of the  GNU General Public License as published  by the Free Soft- --
+-- ware  Foundation;  either version 2,  or (at your option) any later ver- --
+-- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+-- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+-- or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License --
+-- for  more details.  You should have  received  a copy of the GNU General --
+-- Public License  distributed with GNAT;  see file COPYING.  If not, write --
+-- to  the Free Software Foundation,  59 Temple Place - Suite 330,  Boston, --
+-- MA 02111-1307, USA.                                                      --
+--                                                                          --
+-- GNAT was originally developed  by the GNAT team at  New York University. --
+-- Extensive contributions were provided by Ada Core Technologies Inc.      --
+--                                                                          --
+------------------------------------------------------------------------------
+
+--  The driver for the gprmake tool.
+
+with Makegpr;
+
+procedure Gprmake is
+begin
+   --  The code is in Makegpr
+
+   Makegpr.Gprmake;
+end Gprmake;
index 46a862a7d59d6198a82137810860204f8efb9e72..8cd85a81c6021bc060e32cbf33fb60a787c04a2d 100644 (file)
   {"@ada",
    "\
  %{pg:%{fomit-frame-pointer:%e-pg and -fomit-frame-pointer are incompatible}}\
- %{!gnatc*:%{!gnatz*:%{!gnats*:%{!S:%{!c:\
-    %eone of -c, -S, -gnatc, -gnatz, or -gnats is required for Ada}}}}}\
+ %{!gnatc*:%{!gnats*:%{!S:%{!c:\
+    %eone of -c, -S, -gnatc or -gnats is required for Ada}}}}\
  gnat1 %{I*} %{k8:-gnatk8} %{w:-gnatws} %1 %{!Q:-quiet} %{nostdinc*}\
     %{nostdlib*}\
     -dumpbase %{.adb:%b.adb}%{.ads:%b.ads}%{!.adb:%{!.ads:%b.ada}}\
     %{g*} %{O*} %{W*} %{w} %{p} %{pg:-p} %{m*} %{a} %{f*} %{d*}\
     %{!S:%{o*:%w%*-gnatO}} \
     %i %{S:%W{o*}%{!o*:-o %b.s}} \
-    %{!S:%{gnatc*|gnatz*|gnats*: -o %j}} \
-    %{!gnatc*:%{!gnatz*:%{!gnats*:%(invoke_as)}}}", 0, 0, 0},
+    %{!S:%{gnatc*|gnats*: -o %j}} \
+    %{!gnatc*:%{!gnats*:%(invoke_as)}}", 0, 0, 0},
index 149c1fc41127a822cca4fe39dc2ec0eaf8371cb9..d3f2da3edaa506570c0ca3a206f74496aec96092 100644 (file)
@@ -343,12 +343,12 @@ package body Make is
    --  Can be set to False with the switches -c, -b and -l.
    --  These flags are reset to True for each invokation of procedure Gnatmake.
 
-   Shared_String : aliased String := "-shared";
+   Shared_String           : aliased String := "-shared";
    Force_Elab_Flags_String : aliased String := "-F";
 
-   No_Shared_Switch  : aliased Argument_List := (1 .. 0 => null);
-   Shared_Switch     : aliased Argument_List := (1 => Shared_String'Access);
-   Bind_Shared       : Argument_List_Access := No_Shared_Switch'Access;
+   No_Shared_Switch : aliased Argument_List := (1 .. 0 => null);
+   Shared_Switch    : aliased Argument_List := (1 => Shared_String'Access);
+   Bind_Shared      : Argument_List_Access := No_Shared_Switch'Access;
    --  Switch to added in front of gnatbind switches. By default no switch is
    --  added. Switch "-shared" is added if there is a non-static Library
    --  Project File.
@@ -378,7 +378,9 @@ package body Make is
    --  and is set to True whenever one of the source of the executable is
    --  compiled, or has already been compiled for another executable.
 
-   Max_Header : constant := 200; --  Arbitrary
+   Max_Header : constant := 200;
+   --  This needs a proper comment, it used to say "arbitrary"
+   --  that's not an adequate comment ???
 
    type Header_Num is range 1 .. Max_Header;
    --  Header_Num for the hash table Obsoleted below
diff --git a/gcc/ada/makegpr.adb b/gcc/ada/makegpr.adb
new file mode 100644 (file)
index 0000000..08a1f4d
--- /dev/null
@@ -0,0 +1,3527 @@
+------------------------------------------------------------------------------
+--                                                                          --
+--                         GNAT COMPILER COMPONENTS                         --
+--                                                                          --
+--                              M A K E G P R                               --
+--                                                                          --
+--                                 B o d y                                  --
+--                                                                          --
+--          Copyright (C) 2004 Free Software Foundation, Inc.               --
+--                                                                          --
+-- GNAT is free software;  you can  redistribute it  and/or modify it under --
+-- terms of the  GNU General Public License as published  by the Free Soft- --
+-- ware  Foundation;  either version 2,  or (at your option) any later ver- --
+-- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+-- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+-- or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License --
+-- for  more details.  You should have  received  a copy of the GNU General --
+-- Public License  distributed with GNAT;  see file COPYING.  If not, write --
+-- to  the Free Software Foundation,  59 Temple Place - Suite 330,  Boston, --
+-- MA 02111-1307, USA.                                                      --
+--                                                                          --
+-- GNAT was originally developed  by the GNAT team at  New York University. --
+-- Extensive contributions were provided by Ada Core Technologies Inc.      --
+--                                                                          --
+------------------------------------------------------------------------------
+
+with Ada.Command_Line;  use Ada.Command_Line;
+with Ada.Strings.Fixed; use Ada.Strings.Fixed;
+with Ada.Text_IO;       use Ada.Text_IO;
+with Ada.Unchecked_Deallocation;
+
+with Csets;
+with Gnatvsn;
+
+with GNAT.Directory_Operations; use GNAT.Directory_Operations;
+with GNAT.Dynamic_Tables;
+with GNAT.Expect;               use GNAT.Expect;
+with GNAT.HTable;
+with GNAT.OS_Lib;               use GNAT.OS_Lib;
+with GNAT.Regpat;               use GNAT.Regpat;
+
+with Makeutl;          use Makeutl;
+with MLib.Tgt;         use MLib.Tgt;
+with Namet;            use Namet;
+with Output;           use Output;
+with Opt;              use Opt;
+with Osint;            use Osint;
+with Prj;              use Prj;
+with Prj.Com;          use Prj.Com;
+with Prj.Pars;
+with Prj.Util;         use Prj.Util;
+with Snames;           use Snames;
+with System;
+with System.Case_Util; use System.Case_Util;
+with Table;
+with Types;            use Types;
+
+package body Makegpr is
+
+   Max_In_Archives : constant := 50;
+   --  The maximum number of arguments for a single invocation of the
+   --  Archive Indexer (ar).
+
+   Cpp_Linker : constant String := "c++linker";
+   --  The name of a linking script, built one the fly, when there are C++
+   --  sources and the C++ compiler is not g++.
+
+   No_Argument : constant Argument_List := (1 .. 0 => null);
+
+   FD : Process_Descriptor;
+   --  The process descriptor used when invoking a non GNU compiler with -M
+   --  and getting the output with GNAT.Expect.
+
+   Line_Matcher : constant Pattern_Matcher :=
+                    Compile ("^.*?\n", Single_Line);
+   --  The pattern when using GNAT.Expect for the invocation of a non GNU
+   --  compiler with -M.
+
+   Name_Ide              : Name_Id;
+   Name_Compiler_Command : Name_Id;
+   --  Names of package IDE and its attribute Compiler_Command.
+   --  Set up by Initialize.
+
+   Unique_Compile : Boolean := False;
+   --  True when switch -u is used on the command line
+
+   type Source_Index_Rec is record
+      Id : Other_Source_Id;
+      Found : Boolean := False;
+   end record;
+   --  Used as component of Source_Indexes, to check if an archive need to
+   --  be rebuilt.
+
+   type Source_Index_Array is array (Positive range <>) of Source_Index_Rec;
+   type Source_Indexes_Ref is access Source_Index_Array;
+
+   procedure Free is new Ada.Unchecked_Deallocation
+     (Source_Index_Array, Source_Indexes_Ref);
+
+   Initial_Source_Index_Count : constant Positive := 20;
+   Source_Indexes : Source_Indexes_Ref :=
+     new Source_Index_Array (1 .. Initial_Source_Index_Count);
+   --  A list of the Other_Source_Ids of a project file, with an indication
+   --  that they have been found in the archive dependency file.
+
+   Last_Source : Natural := 0;
+   --  The index of the last valid component of Source_Indexes
+
+   Compiler_Names : array (Programming_Language) of String_Access;
+   --  The names of the compilers to be used. Set up by Get_Compiler.
+   --  Used to display the commands spawned.
+
+   Compiler_Paths : array (Programming_Language) of String_Access;
+   --  The path names of the compiler to be used. Set up by Get_Compiler.
+   --  Used to spawn compiling/linking processes.
+
+   Compiler_Is_Gcc : array (Programming_Language) of Boolean;
+   --  An indication that a compiler is a GCC compiler, to be able to use
+   --  specific GCC switches.
+
+   Archive_Builder_Path : String_Access := null;
+   --  The path name of the archive builder (ar). To be used when spawning
+   --  ar commands.
+
+   Archive_Indexer_Path : String_Access := null;
+   --  The path name of the archive indexer (ranlib), if it exists.
+
+   Copyright_Output : Boolean := False;
+   Usage_Output     : Boolean := False;
+   --  Flags to avoid multiple displays of the Copyright notice and of the
+   --  Usage.
+
+   Output_File_Name           : String_Access := null;
+   --  The name given after a switch -o
+
+   Output_File_Name_Expected  : Boolean := False;
+   --  True when last switch was -o
+
+   Project_File_Name          : String_Access := null;
+   --  The name of the project file specified with switch -P
+
+   Project_File_Name_Expected : Boolean := False;
+   --  True when last switch was -P
+
+   Naming_String   : aliased String := "naming";
+   Builder_String  : aliased String := "builder";
+   Compiler_String : aliased String := "compiler";
+   Binder_String   : aliased String := "binder";
+   Linker_String   : aliased String := "linker";
+   --  Name of packages to be checked when parsing/processing project files
+
+   List_Of_Packages : aliased String_List :=
+     (Naming_String   'Access,
+      Builder_String  'Access,
+      Compiler_String 'Access,
+      Binder_String   'Access,
+      Linker_String   'Access);
+   Packages_To_Check : constant String_List_Access := List_Of_Packages'Access;
+   --  List of the packages to be checked when parsing/processing project
+   --  files.
+
+   Main_Project : Project_Id;
+   --  The project id of the main project
+
+   type Processor is (None, Linker, Compiler);
+   Current_Processor : Processor := None;
+   --  This variable changes when switches -*args are used
+
+   Current_Language  : Programming_Language := Lang_Ada;
+   --  The compiler language to consider when Processor is Compiler
+
+   package Comp_Opts is new GNAT.Dynamic_Tables
+     (Table_Component_Type => String_Access,
+      Table_Index_Type     => Integer,
+      Table_Low_Bound      => 1,
+      Table_Initial        => 20,
+      Table_Increment      => 100);
+   Options : array (Programming_Language) of Comp_Opts.Instance;
+   --  Tables to store compiling options for the different compilers
+
+
+   package Linker_Options is new Table.Table
+     (Table_Component_Type => String_Access,
+      Table_Index_Type     => Integer,
+      Table_Low_Bound      => 1,
+      Table_Initial        => 20,
+      Table_Increment      => 100,
+      Table_Name           => "Makegpr.Linker_Options");
+   --  Table to store the linking options
+
+   package Ada_Mains is new Table.Table
+     (Table_Component_Type => String_Access,
+      Table_Index_Type     => Integer,
+      Table_Low_Bound      => 1,
+      Table_Initial        => 20,
+      Table_Increment      => 100,
+      Table_Name           => "Makegpr.Ada_Mains");
+   --  Table to store the Ada mains, either specified on the command line
+   --  or found in attribute Main of the main project file.
+
+   package Other_Mains is new Table.Table
+     (Table_Component_Type => Other_Source,
+      Table_Index_Type     => Integer,
+      Table_Low_Bound      => 1,
+      Table_Initial        => 20,
+      Table_Increment      => 100,
+      Table_Name           => "Makegpr.Other_Mains");
+   --  Table to store the mains of languages other than Ada, either specified
+   --  on the command line or found in attribute Main of the main project file.
+
+   package Sources_Compiled is new GNAT.HTable.Simple_HTable
+     (Header_Num => Header_Num,
+      Element    => Boolean,
+      No_Element => False,
+      Key        => Name_Id,
+      Hash       => Hash,
+      Equal      => "=");
+
+   Initial_Argument_Count : constant Positive := 20;
+   type Boolean_Array is array (Positive range <>) of Boolean;
+   type Booleans is access Boolean_Array;
+
+   procedure Free is new Ada.Unchecked_Deallocation (Boolean_Array, Booleans);
+
+   Arguments : Argument_List_Access :=
+     new Argument_List (1 .. Initial_Argument_Count);
+   --  Used to store lists of arguments to be used when spawning a process
+
+   Arguments_Displayed : Booleans :=
+     new Boolean_Array (1 .. Initial_Argument_Count);
+   --  For each argument in Arguments, indicate if the argument should be
+   --  displayed when procedure Display_Command is called.
+
+   Last_Argument : Natural := 0;
+   --  Index of the last valid argument in Arguments
+
+   package Cache_Args is new Table.Table
+     (Table_Component_Type => String_Access,
+      Table_Index_Type     => Integer,
+      Table_Low_Bound      => 1,
+      Table_Initial        => 200,
+      Table_Increment      => 50,
+      Table_Name           => "Makegpr.Cache_Args");
+   --  A table to cache arguments, to avoid multiple allocation of the same
+   --  strings. It is not possible to use a hash table, because String is
+   --  an unconstrained type.
+
+   --  Various switches used when spawning processes:
+
+   Dash_B_String     : aliased  String := "-B";
+   Dash_B            : constant String_Access := Dash_B_String'Access;
+   Dash_c_String     : aliased  String := "-c";
+   Dash_c            : constant String_Access := Dash_c_String'Access;
+   Dash_cargs_String : aliased  String := "-cargs";
+   Dash_cargs        : constant String_Access := Dash_cargs_String'Access;
+   Dash_f_String     : aliased  String := "-f";
+   Dash_f            : constant String_Access := Dash_f_String'Access;
+   Dash_k_String     : aliased  String := "-k";
+   Dash_k            : constant String_Access := Dash_k_String'Access;
+   Dash_largs_String : aliased  String := "-largs";
+   Dash_largs        : constant String_Access := Dash_largs_String'Access;
+   Dash_M_String     : aliased  String := "-M";
+   Dash_M            : constant String_Access := Dash_M_String'Access;
+   Dash_margs_String : aliased  String := "-margs";
+   Dash_margs        : constant String_Access := Dash_margs_String'Access;
+   Dash_o_String     : aliased  String := "-o";
+   Dash_o            : constant String_Access := Dash_o_String'Access;
+   Dash_P_String     : aliased  String := "-P";
+   Dash_P            : constant String_Access := Dash_P_String'Access;
+   Dash_q_String     : aliased  String := "-q";
+   Dash_q            : constant String_Access := Dash_q_String'Access;
+   Dash_u_String     : aliased  String := "-u";
+   Dash_u            : constant String_Access := Dash_u_String'Access;
+   Dash_v_String     : aliased  String := "-v";
+   Dash_v            : constant String_Access := Dash_v_String'Access;
+   Dash_vP1_String   : aliased  String := "-vP1";
+   Dash_vP1          : constant String_Access := Dash_vP1_String'Access;
+   Dash_vP2_String   : aliased  String := "-vP2";
+   Dash_vP2          : constant String_Access := Dash_vP2_String'Access;
+   Dash_x_String     : aliased  String := "-x";
+   Dash_x            : constant String_Access := Dash_x_String'Access;
+   r_String          : aliased  String := "r";
+   r                 : constant String_Access := r_String'Access;
+
+   CPATH : constant String := "CPATH";
+   --  The environment variable to set when compiler is a GCC compiler
+   --  to indicate the include directory path.
+
+   Current_Include_Paths : array (Programming_Language) of String_Access;
+   --  A cache for the paths of included directories, to avoid setting
+   --  env var CPATH unnecessarily.
+
+   C_Plus_Plus_Is_Used : Boolean := False;
+   --  True when there are sources in C++
+
+   Link_Options_Switches : Argument_List_Access := null;
+   --  The link options coming from the attributes Linker'Linker_Options in
+   --  project files imported, directly or indirectly, by the main project.
+
+   Total_Number_Of_Errors : Natural := 0;
+   --  Used when Keep_Going is True (switch -k) to keep the total number
+   --  of compilation/linking errors, to report at the end of execution.
+
+   Error_Header : constant String := "*** ERROR: ";
+   --  The beginning of error message, when Keep_Going is True
+
+   Need_To_Relink : Boolean := False;
+   --  True when an executable of a language other than Ada need to be linked
+
+   Path_Option : String_Access;
+   --  The path option switch, when supported
+
+   package Lib_Path is new Table.Table
+     (Table_Component_Type => Character,
+      Table_Index_Type     => Integer,
+      Table_Low_Bound      => 1,
+      Table_Initial        => 200,
+      Table_Increment      => 50,
+      Table_Name           => "Makegpr.Lib_Path");
+   --  A table to compute the path to put in the path option switch, when it
+   --  is supported.
+
+   procedure Add_Archives (For_Gnatmake : Boolean);
+   --  Add to Arguments the list of archives for linking an executable
+
+   procedure Add_Argument (Arg : String_Access; Display : Boolean);
+   procedure Add_Argument (Arg : String; Display : Boolean);
+   --  Add an argument to Arguments. Reallocate if necessary.
+
+   procedure Add_Arguments (Args : Argument_List; Display : Boolean);
+   --  Add a list of arguments to Arguments. Reallocate if necessary
+
+   procedure Add_Option (Arg : String);
+   --  Add a switch for the Ada, C or C++ compiler, or for the linker.
+   --  The table where this option is stored depends on the values of
+   --  Current_Processor and Current_Language.
+
+   procedure Add_Search_Directories
+     (Data : Project_Data; Language : Programming_Language);
+   --  Either add to the Arguments the necessary -I switches needed to
+   --  compile, or, when compiler is gcc/g++, set up the C*INCLUDE_PATH
+   --  environment variable, if necessary.
+
+   procedure Add_Source_Id (Id : Other_Source_Id);
+   --  Add a source id to Source_Indexes, with Found set to False
+
+   procedure Add_Switches
+     (Data      : Project_Data;
+      Proc      : Processor;
+      Language  : Other_Programming_Language;
+      File_Name : Name_Id);
+   --  Add to Arguments the switches, if any, for a source (attribute Switches)
+   --  or language (attribute Default_Switches), coming from package Compiler
+   --  or Linker (depending on Proc) of a specified project file.
+
+   procedure Build_Archive (Project : Project_Id; Unconditionally : Boolean);
+   --  Build the archive for a specified project.
+   --  If Unconditionally is False, first check if the archive is up to date,
+   --  and build it only if it is not.
+
+   procedure Check_Compilation_Needed
+     (Source          : Other_Source;
+      Need_To_Compile : out Boolean);
+   --  Check if a source of a language other than Ada needs to be compiled or
+   --  recompiled.
+
+   procedure Check_For_C_Plus_Plus;
+   --  Check if C++ is used in at least one project
+
+   procedure Compile
+     (Source_Id    : Other_Source_Id;
+      Data         : in Project_Data;
+      Local_Errors : in out Boolean);
+
+   procedure Compile_Individual_Sources;
+   --  Compile the sources specified on the command line, when in
+   --  Unique_Compile mode.
+
+   procedure Compile_Link_With_Gnatmake (Mains_Specified : Boolean);
+   --  Compile/Link with gnatmake when there are Ada sources in the main
+   --  project.
+   --  Arguments may already contain options to be used by gnatmake.
+   --  Used for both Ada mains and mains of other languages.
+   --  When Compile_Only is True, do not use the linking options
+
+   procedure Compile_Sources;
+   --  Compile the sources of languages other than Ada, if necessary
+
+   procedure Copyright;
+   --  Output the Copyright notice
+
+   procedure Create_Archive_Dependency_File
+     (Name : String; First_Source : Other_Source_Id);
+
+   procedure Display_Command (Name : String; Path : String_Access);
+   --  Display the command for a spawned process, if in Verbose_Mode or
+   --  not in Quiet_Output.
+
+   procedure Get_Compiler (For_Language : Programming_Language);
+   --  Find the compiler name and path name for a specified programming
+   --  language, if not already done. Results are in the corresponding
+   --  elements of arrays Compiler_Names and Compiler_Paths. Name of compiler
+   --  is found in package IDE of the main project, or defaulted.
+   --  Fail if compiler cannot be found on the path. For the Ada language,
+   --  gnatmake, rather than the Ada compiler is returned.
+
+   procedure Get_Imported_Directories
+     (Project : Project_Id;
+      Data    : in out Project_Data);
+   --  Find the necessary switches -I to be used when compiling sources
+   --  of languages other than Ada, in a specified project file. Cache the
+   --  result in component Imported_Directories_Switches of the project data.
+   --  For gcc/g++ compilers, get the value of the C*_INCLUDE_PATH, instead.
+
+   procedure Initialize;
+   --  Do the necessary package initialization and process the command line
+   --  arguments.
+
+   procedure Link_Executables;
+   --  Link executables
+
+   procedure Report_Error (S1 : String; S2 : String := ""; S3 : String := "");
+   --  Report an error. If Keep_Going is False, just call Osint.Fail.
+   --  If Keep_Going is True, display the error and increase the total number
+   --  of errors.
+
+   procedure Report_Total_Errors (Kind : String);
+   --  If Total_Number_Of_Errors is not zero, report it, and fail
+
+   procedure Scan_Arg (Arg : String);
+   --  Process one command line argument
+
+   function Strip_CR_LF (Text : String) return String;
+
+   procedure Usage;
+   --  Display the usage
+
+   ------------------
+   -- Add_Archives --
+   ------------------
+
+   procedure Add_Archives (For_Gnatmake : Boolean) is
+      Last_Arg : constant Natural := Last_Argument;
+      --  The position of the last argument before adding the archives.
+      --  Used to reverse the order of the arguments added when processing
+      --  the archives.
+
+      procedure Recursive_Add_Archives (Project : Project_Id);
+      --  Recursive procedure to add the archive of a project file, if any,
+      --  then call itself for the project imported.
+
+      ----------------------------
+      -- Recursive_Add_Archives --
+      ----------------------------
+
+      procedure Recursive_Add_Archives (Project : Project_Id) is
+         Data     : Project_Data;
+         Imported : Project_List;
+         Prj      : Project_Id;
+
+      begin
+         --  Nothing to do when there is no project specified
+
+         if Project /= No_Project then
+            Data := Projects.Table (Project);
+
+            --  Nothing to do if the project has already been processed
+
+            if not Data.Seen then
+               --  Mark the project as processed, to avoid processing it again
+
+               Projects.Table (Project).Seen := True;
+
+               Recursive_Add_Archives (Data.Extends);
+
+               Imported := Data.Imported_Projects;
+
+               --  Call itself recursively for all imported projects
+
+               while Imported /= Empty_Project_List loop
+                  Prj := Project_Lists.Table (Imported).Project;
+
+                  if Prj /= No_Project then
+                     while Projects.Table (Prj).Extended_By /= No_Project loop
+                        Prj := Projects.Table (Prj).Extended_By;
+                     end loop;
+
+                     Recursive_Add_Archives (Prj);
+                  end if;
+
+                  Imported := Project_Lists.Table (Imported).Next;
+               end loop;
+
+               --  If there is sources of language other than Ada in this
+               --  project, add the path of the archive to Arguments.
+
+               if Data.Sources_Present then
+                  if Data.Library then
+                     --  If it is a library project file, nothing to do if
+                     --  gnatmake will be invoked, because gnatmake will take
+                     --  care of it, even if the library is not an Ada library.
+
+                     if not For_Gnatmake then
+                        if Data.Library_Kind = Static then
+                           Add_Argument
+                             (Get_Name_String (Data.Library_Dir) &
+                              Directory_Separator &
+                              "lib" & Get_Name_String (Data.Library_Name) &
+                              '.' & Archive_Ext,
+                              Verbose_Mode);
+
+                        else
+                           --  As we first insert in the reverse order,
+                           --  -L<dir> is put after -l<lib>
+
+                           Add_Argument
+                             ("-l" & Get_Name_String (Data.Library_Name),
+                              Verbose_Mode);
+
+                           Get_Name_String (Data.Library_Dir);
+
+                           Add_Argument
+                             ("-L" & Name_Buffer (1 .. Name_Len),
+                              Verbose_Mode);
+
+                           --  If there is a run path option, prepend this
+                           --  directory to the library path. It is probable
+                           --  that the order of the directories in the path
+                           --  option is not important, but just in case
+                           --  put the directories in the same order as the
+                           --  libraries.
+
+                           if Path_Option /= null then
+                              --  If it is not the first directory, make room
+                              --  at the beginning of the table, including
+                              --  for a path separator.
+
+                              if Lib_Path.Last > 0 then
+                                 declare
+                                    Increment : constant Positive :=
+                                                  Name_Len + 1;
+                                    Prev_Last : constant Positive :=
+                                                  Lib_Path.Last;
+
+                                 begin
+                                    Lib_Path.Set_Last (Prev_Last + Increment);
+
+                                    for Index in reverse 1 .. Prev_Last loop
+                                       Lib_Path.Table (Index + Increment) :=
+                                         Lib_Path.Table (Index);
+                                    end loop;
+
+                                    Lib_Path.Table (Increment) :=
+                                      Path_Separator;
+                                 end;
+
+                              else
+                                 --  If it is the first directory, just set
+                                 --  Last to the length of the directory.
+
+                                 Lib_Path.Set_Last (Name_Len);
+                              end if;
+
+                              --  Put the directory at the beginning of the
+                              --  table.
+
+                              for Index in 1 .. Name_Len loop
+                                 Lib_Path.Table (Index) := Name_Buffer (Index);
+                              end loop;
+                           end if;
+                        end if;
+                     end if;
+
+                  else
+                     --  For a non library project, just add the path name of
+                     --  the archive.
+
+                     Add_Argument
+                       (Get_Name_String (Data.Object_Directory) &
+                        Directory_Separator &
+                        "lib" & Get_Name_String (Data.Name) &
+                        '.' & Archive_Ext,
+                        Verbose_Mode);
+                  end if;
+               end if;
+            end if;
+         end if;
+      end Recursive_Add_Archives;
+
+   begin
+      --  First, mark all projects as not processed
+
+      for Project in 1 .. Projects.Last loop
+         Projects.Table (Project).Seen := False;
+      end loop;
+
+      --  Take care of the run path option
+
+      if Path_Option = null then
+         Path_Option := MLib.Linker_Library_Path_Option;
+      end if;
+
+      Lib_Path.Set_Last (0);
+
+      --  Add archives in the reverse order
+
+      Recursive_Add_Archives (Main_Project);
+
+      --  And reverse the order
+
+      declare
+         First : Positive := Last_Arg + 1;
+         Last  : Natural  := Last_Argument;
+         Temp  : String_Access;
+
+      begin
+         while First < Last loop
+            Temp := Arguments (First);
+            Arguments (First) := Arguments (Last);
+            Arguments (Last)  := Temp;
+            First := First + 1;
+            Last := Last - 1;
+         end loop;
+      end;
+   end Add_Archives;
+
+   ------------------
+   -- Add_Argument --
+   ------------------
+
+   procedure Add_Argument (Arg : String_Access; Display : Boolean) is
+   begin
+      --  Nothing to do if no argument is specified or if argument is empty
+
+      if Arg /= null or else Arg'Length = 0 then
+         --  Reallocate arrays if necessary
+
+         if Last_Argument = Arguments'Last then
+            declare
+               New_Arguments : constant Argument_List_Access :=
+                 new Argument_List
+                   (1 .. Last_Argument + Initial_Argument_Count);
+               New_Arguments_Displayed : constant Booleans :=
+                 new Boolean_Array
+                   (1 .. Last_Argument + Initial_Argument_Count);
+
+            begin
+               New_Arguments (Arguments'Range) := Arguments.all;
+
+               --  To avoid deallocating the strings, nullify all components
+               --  of Arguments before calling Free.
+
+               Arguments.all := (others => null);
+
+               Free (Arguments);
+               Arguments := New_Arguments;
+
+               New_Arguments_Displayed (Arguments_Displayed'Range) :=
+                 Arguments_Displayed.all;
+               Free (Arguments_Displayed);
+               Arguments_Displayed := New_Arguments_Displayed;
+            end;
+         end if;
+
+         --  Add the argument and its display indication
+
+         Last_Argument := Last_Argument + 1;
+         Arguments (Last_Argument) := Arg;
+         Arguments_Displayed (Last_Argument) := Display;
+      end if;
+   end Add_Argument;
+
+   procedure Add_Argument (Arg : String; Display : Boolean) is
+      Argument : String_Access := null;
+   begin
+      --  Nothing to do if argument is empty
+
+      if Arg'Length > 0 then
+         --  Check if the argument is already in the Cache_Args table.
+         --  If it is already there, reuse the allocated value.
+
+         for Index in 1 .. Cache_Args.Last loop
+            if Cache_Args.Table (Index).all = Arg then
+               Argument := Cache_Args.Table (Index);
+               exit;
+            end if;
+         end loop;
+
+         --  If the argument is not in the cache, create a new entry in the
+         --  cache.
+
+         if Argument = null then
+            Argument := new String'(Arg);
+            Cache_Args.Increment_Last;
+            Cache_Args.Table (Cache_Args.Last) := Argument;
+         end if;
+
+         --  And add the argument
+
+         Add_Argument (Argument, Display);
+      end if;
+   end Add_Argument;
+
+   -------------------
+   -- Add_Arguments --
+   -------------------
+
+   procedure Add_Arguments (Args : Argument_List; Display : Boolean) is
+   begin
+      --  Reallocate the arrays, if necessary
+
+      if Last_Argument + Args'Length > Arguments'Last then
+         declare
+            New_Arguments : constant Argument_List_Access :=
+              new Argument_List
+                (1 .. Last_Argument + Args'Length + Initial_Argument_Count);
+            New_Arguments_Displayed : constant Booleans :=
+              new Boolean_Array
+                (1 .. Last_Argument + Args'Length + Initial_Argument_Count);
+
+         begin
+            New_Arguments (1 .. Last_Argument) :=
+              Arguments (1 .. Last_Argument);
+
+            --  To avoid deallocating the strings, nullify all components
+            --  of Arguments before calling Free.
+
+            Arguments.all := (others => null);
+            Free (Arguments);
+
+            Arguments := New_Arguments;
+            New_Arguments_Displayed (1 .. Last_Argument) :=
+              Arguments_Displayed (1 .. Last_Argument);
+            Free (Arguments_Displayed);
+            Arguments_Displayed := New_Arguments_Displayed;
+         end;
+      end if;
+
+      --  Add the new arguments and the display indications
+
+      Arguments (Last_Argument + 1 .. Last_Argument + Args'Length) := Args;
+      Arguments_Displayed (Last_Argument + 1 .. Last_Argument + Args'Length) :=
+        (others => Display);
+      Last_Argument := Last_Argument + Args'Length;
+   end Add_Arguments;
+
+   ----------------
+   -- Add_Option --
+   ----------------
+
+   procedure Add_Option (Arg : String) is
+      Option : constant String_Access := new String'(Arg);
+   begin
+      case Current_Processor is
+         when None =>
+            null;
+
+         when Linker =>
+            --  Add option to the linker table
+
+            Linker_Options.Increment_Last;
+            Linker_Options.Table (Linker_Options.Last) := Option;
+
+         when Compiler =>
+            --  Add option to the compiler option table, depending on the
+            --  value of Current_Language.
+
+            Comp_Opts.Increment_Last (Options (Current_Language));
+            Options (Current_Language).Table
+              (Comp_Opts.Last (Options (Current_Language))) := Option;
+
+      end case;
+   end Add_Option;
+
+   -------------------
+   -- Add_Source_Id --
+   -------------------
+
+   procedure Add_Source_Id (Id : Other_Source_Id) is
+   begin
+      --  Reallocate the array, if necessary
+
+      if Last_Source = Source_Indexes'Last then
+         declare
+            New_Indexes : constant Source_Indexes_Ref :=
+              new Source_Index_Array
+                (1 .. Source_Indexes'Last + Initial_Source_Index_Count);
+         begin
+            New_Indexes (Source_Indexes'Range) := Source_Indexes.all;
+            Free (Source_Indexes);
+            Source_Indexes := New_Indexes;
+         end;
+      end if;
+
+      Last_Source := Last_Source + 1;
+      Source_Indexes (Last_Source) := (Id, False);
+   end Add_Source_Id;
+
+   ----------------------------
+   -- Add_Search_Directories --
+   ----------------------------
+
+   procedure Add_Search_Directories
+     (Data : Project_Data; Language : Programming_Language)
+   is
+   begin
+      --  If a GNU compiler is used, set the CPATH environment variable,
+      --  if it does not already has the correct value.
+
+      if Compiler_Is_Gcc (Language) then
+         if Current_Include_Paths (Language) /= Data.Include_Path then
+            Current_Include_Paths (Language) := Data.Include_Path;
+            Setenv (CPATH, Data.Include_Path.all);
+         end if;
+
+      else
+         Add_Arguments (Data.Imported_Directories_Switches.all, Verbose_Mode);
+      end if;
+   end Add_Search_Directories;
+
+   ------------------
+   -- Add_Switches --
+   ------------------
+
+   procedure Add_Switches
+     (Data      : Project_Data;
+      Proc      : Processor;
+      Language  : Other_Programming_Language;
+      File_Name : Name_Id)
+   is
+      Switches       : Variable_Value;
+      --  The switches, if any, for the file/language
+
+      Pkg            : Package_Id;
+      --  The id of the package where to look for the switches
+
+      Defaults       : Array_Element_Id;
+      --  The Default_Switches associative array
+
+      Switches_Array : Array_Element_Id;
+      --  The Switches associative array
+
+      Element_Id     : String_List_Id;
+      Element        : String_Element;
+
+   begin
+      --  First, choose the proper package
+
+      case Proc is
+         when None =>
+            raise Program_Error;
+
+         when Linker =>
+            Pkg := Value_Of (Name_Linker, Data.Decl.Packages);
+
+         when Compiler =>
+            Pkg := Value_Of (Name_Compiler, Data.Decl.Packages);
+      end case;
+
+      --  Get the Switches ("file name"), if they exist
+      Switches_Array := Prj.Util.Value_Of
+        (Name      => Name_Switches,
+         In_Arrays =>
+           Packages.Table (Pkg).Decl.Arrays);
+
+      Switches :=
+        Prj.Util.Value_Of
+          (Index => File_Name,
+           In_Array => Switches_Array);
+
+      --  Otherwise, get the Default_Switches ("language"), if they exist
+
+      if Switches = Nil_Variable_Value then
+         Defaults := Prj.Util.Value_Of
+           (Name      => Name_Default_Switches,
+            In_Arrays => Packages.Table (Pkg).Decl.Arrays);
+         Switches := Prj.Util.Value_Of
+           (Index    => Lang_Name_Ids (Language),
+            In_Array => Defaults);
+      end if;
+
+      --  If there are switches, add them to Arguments
+
+      if Switches /= Nil_Variable_Value then
+         Element_Id := Switches.Values;
+
+         while Element_Id /= Nil_String loop
+            Element := String_Elements.Table (Element_Id);
+
+            if Element.Value /= No_Name then
+               Add_Argument (Get_Name_String (Element.Value), True);
+            end if;
+
+            Element_Id := Element.Next;
+         end loop;
+      end if;
+   end Add_Switches;
+
+   -------------------
+   -- Build_Archive --
+   -------------------
+
+   procedure Build_Archive (Project : Project_Id; Unconditionally : Boolean) is
+      Data      : constant Project_Data := Projects.Table (Project);
+      Source_Id : Other_Source_Id;
+      Source    : Other_Source;
+      Success   : Boolean;
+
+      Archive_Name : constant String :=
+        "lib" & Get_Name_String (Data.Name) & '.' & Archive_Ext;
+      --  The name of the archive file for this project
+
+      Archive_Dep_Name : constant String :=
+        "lib" & Get_Name_String (Data.Name) & ".deps";
+      --  The name of the archive dependency file for this project
+
+      Need_To_Rebuild : Boolean := Unconditionally;
+      --  When True, archive will be rebuilt
+
+      File : Prj.Util.Text_File;
+
+      Object_Name : Name_Id;
+      Time_Stamp  : Time_Stamp_Type;
+
+      Saved_Last_Argument : Natural;
+   begin
+      --  First, make sure that the archive builder (ar) is on the path
+
+      if Archive_Builder_Path = null then
+         Archive_Builder_Path := Locate_Exec_On_Path (Archive_Builder);
+
+         if Archive_Builder_Path = null then
+            Osint.Fail
+              ("unable to locate archive builder """,
+               Archive_Builder,
+               """");
+         end if;
+
+         --  If there is an archive indexer (ranlib), try to locate it on the
+         --  path. Don't fail if it is not found.
+
+         if Archive_Indexer /= "" then
+            Archive_Indexer_Path := Locate_Exec_On_Path (Archive_Indexer);
+         end if;
+      end if;
+
+      --  If Unconditionally is False, check if the archive need to be built
+
+      if not Need_To_Rebuild then
+         if Verbose_Mode then
+            Write_Str  ("   Checking ");
+            Write_Line (Archive_Name);
+         end if;
+
+         --  If the archive does not exist, of course it needs to be built
+
+         if not Is_Regular_File (Archive_Name) then
+            Need_To_Rebuild := True;
+
+            if Verbose_Mode then
+               Write_Line ("      -> archive does not exist");
+            end if;
+
+         else
+            --  Check the archive dependency file
+
+            Open (File, Archive_Dep_Name);
+
+            --  If the archive dependency file does not exist, we need to
+            --  to rebuild the archive and to create its dependency file.
+
+            if not Is_Valid (File) then
+               Need_To_Rebuild := True;
+
+               if Verbose_Mode then
+                  Write_Str  ("      -> archive dependency file ");
+                  Write_Str  (Archive_Dep_Name);
+                  Write_Line (" does not exist");
+               end if;
+
+            else
+               --  Put all sources of language other than Ada in
+               --  Source_Indexes.
+
+               Last_Source := 0;
+               Source_Id := Data.First_Other_Source;
+
+               while Source_Id /= No_Other_Source loop
+                  Add_Source_Id (Source_Id);
+                  Source_Id := Other_Sources.Table (Source_Id).Next;
+               end loop;
+
+               --  Read the dependency file, line by line
+
+               while not End_Of_File (File) loop
+                  Get_Line (File, Name_Buffer, Name_Len);
+
+                  --  First line is the name of an object file
+
+                  Object_Name := Name_Find;
+                  Source_Id := No_Other_Source;
+
+                  --  Check if this object file is for a source of this
+                  --  project.
+
+                  for S in 1 .. Last_Source loop
+                     if (not Source_Indexes (S).Found) and then
+                       Other_Sources.Table
+                         (Source_Indexes (S).Id).Object_Name =
+                       Object_Name
+                     then
+                        --  We have found the object file: get the source
+                        --  data, and mark it as found.
+
+                        Source_Id := Source_Indexes (S).Id;
+                        Source := Other_Sources.Table (Source_Id);
+                        Source_Indexes (S).Found := True;
+                        exit;
+                     end if;
+                  end loop;
+
+                  --  If it is not for a source of this project, then the
+                  --  archive needs to be rebuilt.
+
+                  if Source_Id = No_Other_Source then
+                     Need_To_Rebuild := True;
+                     if Verbose_Mode then
+                        Write_Str  ("      -> ");
+                        Write_Str  (Get_Name_String (Object_Name));
+                        Write_Line (" is not an object of the project");
+                     end if;
+
+                     exit;
+                  end if;
+
+                  --  The second line is the time stamp of the object file.
+                  --  If there is no next line, then the dependency file is
+                  --  truncated, and the archive need to be rebuilt.
+
+                  if End_Of_File (File) then
+                     Need_To_Rebuild := True;
+
+                     if Verbose_Mode then
+                        Write_Str  ("      -> archive dependency file ");
+                        Write_Line (" is truncated");
+                     end if;
+
+                     exit;
+                  end if;
+
+                  Get_Line (File, Name_Buffer, Name_Len);
+
+                  --  If the line has the wrong number of character, then
+                  --  the dependency file is incorrectly formatted, and the
+                  --  archive needs to be rebuilt.
+
+                  if Name_Len /= Time_Stamp_Length then
+                     Need_To_Rebuild := True;
+
+                     if Verbose_Mode then
+                        Write_Str  ("      -> archive dependency file ");
+                        Write_Line (" is incorrectly formatted (time stamp)");
+                     end if;
+
+                     exit;
+                  end if;
+
+                  Time_Stamp := Time_Stamp_Type (Name_Buffer (1 .. Name_Len));
+
+                  --  If the time stamp in the dependency file is different
+                  --  from the time stamp of the object file, then the archive
+                  --  needs to be rebuilt.
+
+                  if Time_Stamp /= Source.Object_TS then
+                     Need_To_Rebuild := True;
+
+                     if Verbose_Mode then
+                        Write_Str  ("      -> time stamp of ");
+                        Write_Str  (Get_Name_String (Object_Name));
+                        Write_Str  (" is incorrect in the archive");
+                        Write_Line (" dependency file");
+                     end if;
+
+                     exit;
+                  end if;
+               end loop;
+
+               Close (File);
+
+               if not Need_To_Rebuild then
+                  --  Now, check if all object files of the project have been
+                  --  accounted for. If any of them is not in the dependency
+                  --  file, the archive needs to be rebuilt.
+
+                  for Index in 1 .. Last_Source loop
+                     if not Source_Indexes (Index).Found then
+                        Need_To_Rebuild := True;
+
+                        if Verbose_Mode then
+                           Source_Id := Source_Indexes (Index).Id;
+                           Source := Other_Sources.Table (Source_Id);
+                           Write_Str  ("      -> ");
+                           Write_Str  (Get_Name_String (Source.Object_Name));
+                           Write_Str  (" is not in the archive ");
+                           Write_Line ("dependency file");
+                        end if;
+
+                        exit;
+                     end if;
+                  end loop;
+               end if;
+
+               if (not Need_To_Rebuild) and Verbose_Mode then
+                  Write_Line ("      -> up to date");
+               end if;
+            end if;
+         end if;
+      end if;
+
+      --  Build the archive if necessary
+
+      if Need_To_Rebuild then
+         --  If an archive is built, then linking will need to occur
+         --  unconditionally.
+
+         Need_To_Relink := True;
+
+         Last_Argument := 0;
+
+         --  If it is a library project file, we need to build the library
+         --  in the library directory.
+
+         if Data.Library then
+            --  If there are sources in Ada, then gnatmake will build the
+            --  library, so nothing to do.
+
+            if not Data.Languages (Lang_Ada) then
+               --  Get all the object files of the project
+
+               Source_Id := Data.First_Other_Source;
+
+               while Source_Id /= No_Other_Source loop
+                  Source := Other_Sources.Table (Source_Id);
+                  Add_Argument
+                    (Get_Name_String (Source.Object_Name), Verbose_Mode);
+                  Source_Id := Source.Next;
+               end loop;
+
+               --  If it is a library, it need to be built it the same way
+               --  Ada libraries are built.
+
+               if Data.Library_Kind = Static then
+                  MLib.Build_Library
+                    (Ofiles => Arguments (1 .. Last_Argument),
+                     Afiles => No_Argument,
+                     Output_File => Get_Name_String (Data.Library_Name),
+                     Output_Dir  => Get_Name_String (Data.Library_Dir));
+
+               else
+                  MLib.Tgt.Build_Dynamic_Library
+                    (Ofiles       => Arguments (1 .. Last_Argument),
+                     Foreign      => Arguments (1 .. Last_Argument),
+                     Afiles       => No_Argument,
+                     Options      => No_Argument,
+                     Interfaces   => No_Argument,
+                     Lib_Filename => Get_Name_String (Data.Library_Name),
+                     Lib_Dir      => Get_Name_String (Data.Library_Dir),
+                     Symbol_Data  => No_Symbols,
+                     Driver_Name  => No_Name,
+                     Lib_Address  => "",
+                     Lib_Version  => "",
+                     Relocatable  => Data.Library_Kind = Relocatable,
+                     Auto_Init    => False);
+               end if;
+            end if;
+
+            --  Create a fake empty archive, to be able to check its time stamp
+            --  later.
+
+            declare
+               Archive : Ada.Text_IO.File_Type;
+               use Ada.Text_IO;
+
+            begin
+               Create (Archive, Out_File, Archive_Name);
+               Close (Archive);
+            end;
+
+            Create_Archive_Dependency_File
+              (Archive_Dep_Name, Data.First_Other_Source);
+
+            return;
+         end if;
+
+         --  Start with the options found in MLib.Tgt (usually just "rc")
+
+         Add_Arguments (Archive_Builder_Options.all, True);
+
+         --  Followed by the archive name
+
+         Add_Argument (Archive_Name, True);
+
+         --  Followed by all the object files of the project
+
+         Source_Id := Data.First_Other_Source;
+
+         while Source_Id /= No_Other_Source loop
+            Source := Other_Sources.Table (Source_Id);
+            Add_Argument (Get_Name_String (Source.Object_Name), Verbose_Mode);
+            Source_Id := Source.Next;
+         end loop;
+
+         --  Spawn the archive builder (ar)
+
+         Saved_Last_Argument := Last_Argument;
+
+         Last_Argument := Max_In_Archives;
+
+         loop
+            if Last_Argument > Saved_Last_Argument then
+               Last_Argument := Saved_Last_Argument;
+            end if;
+
+            Display_Command (Archive_Builder, Archive_Builder_Path);
+
+            Spawn
+              (Archive_Builder_Path.all,
+               Arguments (1 .. Last_Argument),
+               Success);
+
+            exit when not Success;
+
+            exit when Last_Argument = Saved_Last_Argument;
+
+            Arguments (1) := r;
+            Arguments (3 .. Saved_Last_Argument - Last_Argument + 2) :=
+              Arguments (Last_Argument + 1 .. Saved_Last_Argument);
+            Saved_Last_Argument := Saved_Last_Argument - Last_Argument + 2;
+         end loop;
+
+         if Success then
+            --  If the archive was built, run the archive indexer (ranlib),
+            --  if there is one.
+
+            if Archive_Indexer_Path /= null then
+               Last_Argument := 0;
+               Add_Argument (Archive_Name, True);
+
+               Display_Command (Archive_Indexer, Archive_Indexer_Path);
+
+               Spawn (Archive_Indexer_Path.all, Arguments (1 .. 1), Success);
+
+               if not Success then
+                  --  Running ranlib failed, delete the dependency file,
+                  --  if it exists.
+
+                  if Is_Regular_File (Archive_Dep_Name) then
+                     Delete_File (Archive_Dep_Name, Success);
+                  end if;
+
+                  --  And report the error
+
+                  Report_Error
+                    ("running" & Archive_Indexer & " for project """,
+                     Get_Name_String (Data.Name),
+                     """ failed");
+                  return;
+               end if;
+            end if;
+
+            --  The archive was correctly built, create its dependency file
+
+            Create_Archive_Dependency_File
+              (Archive_Dep_Name, Data.First_Other_Source);
+
+         else
+            --  Building the archive failed, delete the dependency file, if
+            --  one exists.
+
+            if Is_Regular_File (Archive_Dep_Name) then
+               Delete_File (Archive_Dep_Name, Success);
+            end if;
+
+            --  And report the error
+
+            Report_Error
+              ("building archive for project """,
+               Get_Name_String (Data.Name),
+               """ failed");
+         end if;
+      end if;
+   end Build_Archive;
+
+   ------------------------------
+   -- Check_Compilation_Needed --
+   ------------------------------
+
+   procedure Check_Compilation_Needed
+     (Source          : Other_Source;
+      Need_To_Compile : out Boolean)
+   is
+      Source_Name : constant String := Get_Name_String (Source.File_Name);
+      Source_Path : constant String := Get_Name_String (Source.Path_Name);
+      Object_Name : constant String := Get_Name_String (Source.Object_Name);
+      Dep_Name    : constant String := Get_Name_String (Source.Dep_Name);
+
+      Source_In_Dependencies : Boolean := False;
+      --  Set to True if the source was find in the dependency file of its
+      --  object file.
+
+      Dep_File : Prj.Util.Text_File;
+      Start, Finish : Natural;
+   begin
+      --  Assume the worst, so that statement "return;" may be used if there
+      --  is any problem.
+
+      Need_To_Compile := True;
+
+      if Verbose_Mode then
+         Write_Str  ("   Checking ");
+         Write_Str  (Source_Name);
+         Write_Line (" ... ");
+      end if;
+
+      --  If the object file does not exist, of course the source need to be
+      --  compiled.
+
+      if Source.Object_TS = Empty_Time_Stamp then
+         if Verbose_Mode then
+            Write_Str  ("      -> object file ");
+            Write_Str  (Object_Name);
+            Write_Line (" does not exist");
+         end if;
+
+         return;
+      end if;
+
+      --  If the object file has been created before the last modification
+      --  of the source, the source need to be recompiled.
+
+      if Source.Object_TS < Source.Source_TS then
+         if Verbose_Mode then
+            Write_Str  ("      -> object file ");
+            Write_Str  (Object_Name);
+            Write_Line (" has time stamp earlier than source");
+         end if;
+
+         return;
+      end if;
+
+      --  If there is no dependency file, then the source needs to be
+      --  recompiled and the dependency file need to be created.
+
+      if Source.Dep_TS = Empty_Time_Stamp then
+         if Verbose_Mode then
+            Write_Str  ("      -> dependency file ");
+            Write_Str  (Dep_Name);
+            Write_Line (" does not exist");
+         end if;
+
+         return;
+      end if;
+
+      --  The source needs to be recompiled if the source has been modified
+      --  after the dependency file has been created.
+
+      if Source.Dep_TS < Source.Source_TS then
+         if Verbose_Mode then
+            Write_Str  ("      -> dependency file ");
+            Write_Str  (Dep_Name);
+            Write_Line (" has time stamp earlier than source");
+         end if;
+
+         return;
+      end if;
+
+      --  Look for all dependencies
+
+      Open (Dep_File, Dep_Name);
+
+      --  If the dependency file cannot be open, we need to recompile the
+      --  source.
+
+      if not Is_Valid (Dep_File) then
+         if Verbose_Mode then
+            Write_Str  ("      -> could not open dependency file ");
+            Write_Line (Dep_Name);
+         end if;
+
+         return;
+      end if;
+
+      declare
+         End_Of_File_Reached : Boolean := False;
+      begin
+         loop
+            if End_Of_File (Dep_File) then
+               End_Of_File_Reached := True;
+               exit;
+            end if;
+
+            Get_Line (Dep_File, Name_Buffer, Name_Len);
+
+            exit when Name_Len > 0 and then Name_Buffer (1) /= '#';
+         end loop;
+
+         --  If dependency file contains only empty lines or comments, then
+         --  the dependencies are unknown, and the source needs to be
+         --  recompiled.
+
+         if End_Of_File_Reached then
+            if Verbose_Mode then
+               Write_Str  ("      -> dependency file ");
+               Write_Str  (Dep_Name);
+               Write_Line (" is empty");
+            end if;
+
+            Close (Dep_File);
+            return;
+         end if;
+      end;
+
+      Start  := 1;
+      Finish := Index (Name_Buffer (1 .. Name_Len), ": ");
+
+      --  The first line must start with the name of the object file, followed
+      --  by a colon (:).
+
+      if Finish = 0 or else Name_Buffer (1 .. Finish - 1) /= Object_Name then
+         if Verbose_Mode then
+            Write_Str  ("      -> dependency file ");
+            Write_Str  (Dep_Name);
+            Write_Line (" has wrong format");
+         end if;
+
+         Close (Dep_File);
+         return;
+
+      else
+         Start := Finish + 2;
+
+         --  Process each line
+
+         Line_Loop : loop
+            declare
+               Line : constant String := Name_Buffer (1 .. Name_Len);
+               Last : constant Natural := Name_Len;
+            begin
+               Name_Loop : loop
+                  --  Find the beginning of the next source path name
+
+                  while Start < Last and then Line (Start) = ' ' loop
+                     Start := Start + 1;
+                  end loop;
+
+                  --  Go to next line when there is a continuation character \
+                  --  at the end of the line.
+
+                  exit Name_Loop when Start = Last
+                                   and then Line (Start) = '\';
+
+                  --  We should not be at the end of the line, without
+                  --  a continuation character \.
+
+                  if Start = Last then
+                     if Verbose_Mode then
+                        Write_Str  ("      -> dependency file ");
+                        Write_Str  (Dep_Name);
+                        Write_Line (" has wrong format");
+                     end if;
+
+                     Close (Dep_File);
+                     return;
+                  end if;
+
+                  --  Look for the end of the source path name
+
+                  Finish := Start;
+                  while Finish < Last and then Line (Finish + 1) /= ' ' loop
+                     Finish := Finish + 1;
+                  end loop;
+
+                  --  Check this source
+
+                  declare
+                     Src_Name : constant String :=
+                       Normalize_Pathname
+                         (Name => Line (Start .. Finish),
+                          Case_Sensitive => False);
+                     Src_TS   : Time_Stamp_Type;
+                  begin
+                     --  If it is the original source,
+                     --  set Source_In_Dependencies.
+
+                     if Src_Name = Source_Path then
+                        Source_In_Dependencies := True;
+                     end if;
+
+                     Name_Len := 0;
+                     Add_Str_To_Name_Buffer (Src_Name);
+                     Src_TS := File_Stamp (Name_Find);
+
+                     --  If the source does not exist, we need to recompile
+
+                     if Src_TS = Empty_Time_Stamp then
+                        if Verbose_Mode then
+                           Write_Str  ("      -> source ");
+                           Write_Str  (Src_Name);
+                           Write_Line (" does not exist");
+                        end if;
+
+                        Close (Dep_File);
+                        return;
+
+                     --  If the source has been modified after the object file,
+                     --  we need to recompile.
+
+                     elsif Src_TS > Source.Object_TS then
+                        if Verbose_Mode then
+                           Write_Str  ("      -> source ");
+                           Write_Str  (Src_Name);
+                           Write_Line
+                             (" has time stamp later than object file");
+                        end if;
+
+                        Close (Dep_File);
+                        return;
+                     end if;
+                  end;
+
+                  --  If the source path name ends the line, we are done.
+
+                  exit Line_Loop when Finish = Last;
+
+                  --  Go get the next source on the line
+
+                  Start := Finish + 1;
+               end loop Name_Loop;
+            end;
+
+            --  If we are here, we had a continuation character \ at the end
+            --  of the line, so we continue with the next line.
+
+            Get_Line (Dep_File, Name_Buffer, Name_Len);
+            Start := 1;
+         end loop Line_Loop;
+      end if;
+
+      Close (Dep_File);
+
+      --  If the original sources were not in the dependency file, then we
+      --  need to recompile. It may mean that we are using a different source
+      --  (different variant) for this object file.
+
+      if not Source_In_Dependencies then
+         if Verbose_Mode then
+            Write_Str  ("      -> source ");
+            Write_Str  (Source_Path);
+            Write_Line (" is not in the dependencies");
+         end if;
+
+         return;
+      end if;
+
+      --  If we are here, then everything is OK, and we don't need
+      --  to recompile.
+
+      if Verbose_Mode then
+         Write_Line ("      -> up to date");
+      end if;
+
+      Need_To_Compile := False;
+   end Check_Compilation_Needed;
+
+   ---------------------------
+   -- Check_For_C_Plus_Plus --
+   ---------------------------
+
+   procedure Check_For_C_Plus_Plus is
+   begin
+      C_Plus_Plus_Is_Used := False;
+
+      for Project in 1 .. Projects.Last loop
+         if Projects.Table (Project).Languages (Lang_C_Plus_Plus) then
+            C_Plus_Plus_Is_Used := True;
+            exit;
+         end if;
+      end loop;
+   end Check_For_C_Plus_Plus;
+
+   -------------
+   -- Compile --
+   -------------
+
+   procedure Compile
+     (Source_Id    : Other_Source_Id;
+      Data         : in Project_Data;
+      Local_Errors : in out Boolean)
+   is
+      Source  : Other_Source := Other_Sources.Table (Source_Id);
+      Success : Boolean;
+   begin
+      --  If the compiler is not know yet, get its path name
+
+      if Compiler_Names (Source.Language) = null then
+         Get_Compiler (Source.Language);
+      end if;
+
+      --  For non GCC compilers, get the dependency file, calling first the
+      --  compiler with the switch -M.
+
+      if not Compiler_Is_Gcc (Source.Language) then
+         Last_Argument := 0;
+
+         --  Add the source name, preceded by -M
+
+         Add_Argument (Dash_M, True);
+         Add_Argument (Get_Name_String (Source.Path_Name), True);
+
+         --  Add the compiling switches for this source found in
+         --  package Compiler of the project file, if they exist.
+
+         Add_Switches
+           (Data, Compiler, Source.Language, Source.File_Name);
+
+         --  Add the compiling switches for the language specified
+         --  on the command line, if any.
+
+         for
+           J in 1 .. Comp_Opts.Last (Options (Source.Language))
+         loop
+            Add_Argument (Options (Source.Language).Table (J), True);
+         end loop;
+
+         --  Finally, add the imported directory switches for this
+         --  project file.
+
+         Add_Search_Directories (Data, Source.Language);
+
+         --  And invoke the compiler using GNAT.Expect
+
+         Display_Command
+           (Compiler_Names (Source.Language).all,
+            Compiler_Paths (Source.Language));
+
+         begin
+            Non_Blocking_Spawn
+              (FD,
+               Compiler_Paths (Source.Language).all,
+               Arguments (1 .. Last_Argument),
+               Buffer_Size => 0,
+               Err_To_Out => True);
+
+            declare
+               Dep_File : Ada.Text_IO.File_Type;
+               Result   : Expect_Match;
+               Status   : Integer;
+
+            begin
+               --  Create the dependency file
+
+               Create (Dep_File, Out_File, Get_Name_String (Source.Dep_Name));
+
+               loop
+                  Expect (FD, Result, Line_Matcher);
+
+                  exit when Result = Expect_Timeout;
+
+                  declare
+                     S : constant String := Strip_CR_LF (Expect_Out (FD));
+                  begin
+                     --  Each line of the output is put in the dependency
+                     --  file, including errors. If there are errors, the
+                     --  syntax of the dependency file will be incorrect and
+                     --  recompilation will occur automatically the next time
+                     --  the dependencies are checked.
+
+                     Put_Line (Dep_File, S);
+                  end;
+               end loop;
+
+               --  If we are here, it means we had a timeout.
+               --  So, the dependency file may be incomplete: it is safer to
+               --  delete it, otherwise the dependencies may be wrong.
+
+               Close (FD, Status);
+               Close (Dep_File);
+               Delete_File (Get_Name_String (Source.Dep_Name), Success);
+
+            exception
+               when Process_Died =>
+                  --  This is the normal outcome. Just close the file.
+
+                  Close (FD, Status);
+                  Close (Dep_File);
+
+               when others =>
+                  --  Something wrong happened. It is safer to delete the
+                  --  dependency file, otherwise the dependencies may be wrong.
+
+                  Close (FD, Status);
+
+                  if Is_Open (Dep_File) then
+                     Close (Dep_File);
+                  end if;
+
+                  Delete_File (Get_Name_String (Source.Dep_Name), Success);
+            end;
+
+         exception
+               --  If we cannot spawn the compiler, then the dependencies are
+               --  not updated. It is safer then to delete the dependency file,
+               --  otherwise the dependencies may be wrong.
+
+            when Invalid_Process =>
+               Delete_File (Get_Name_String (Source.Dep_Name), Success);
+         end;
+      end if;
+
+      Last_Argument := 0;
+
+      --  For GCC compilers, make sure the language is always
+      --  specified to the GCC driver, in case the extension is
+      --  not recognized by the GCC driver as a source of the
+      --  language.
+
+      if Compiler_Is_Gcc (Source.Language) then
+         Add_Argument (Dash_x, Verbose_Mode);
+         Add_Argument
+           (Lang_Names (Source.Language), Verbose_Mode);
+      end if;
+
+      --  Specify the source to be compiled
+      Add_Argument (Dash_c, True);
+      Add_Argument (Get_Name_String (Source.Path_Name), True);
+
+      --  If it is a non static library project, compile with the PIC option
+      --  if there is one (when there is no PIC option, function
+      --  MLib.Tgt.PIC_Option returns an empty string, and Add_Argument with
+      --  an empty string has no effect).
+
+      if Data.Library and then Data.Library_Kind /= Static then
+         Add_Argument (PIC_Option, True);
+      end if;
+
+      --  Indicate the name of the object
+
+      Add_Argument (Dash_o, True);
+      Add_Argument (Get_Name_String (Source.Object_Name), True);
+
+      --  When compiler is GCC, use the magic switch that creates
+      --  the dependency file in the correct format.
+
+      if Compiler_Is_Gcc (Source.Language) then
+         Add_Argument
+           ("-Wp,-MD," & Get_Name_String (Source.Dep_Name),
+            Verbose_Mode);
+      end if;
+
+      --  Add the compiling switches for this source found in
+      --  package Compiler of the project file, if they exist.
+
+      Add_Switches
+        (Data, Compiler, Source.Language, Source.File_Name);
+
+      --  Add the compiling switches for the language specified
+      --  on the command line, if any.
+
+      for
+        J in 1 .. Comp_Opts.Last (Options (Source.Language))
+      loop
+         Add_Argument (Options (Source.Language).Table (J), True);
+      end loop;
+
+      --  Finally, add the imported directory switches for this
+      --  project file (or, for gcc compilers, set up the CPATH env var
+      --  if needed).
+
+      Add_Search_Directories (Data, Source.Language);
+
+      --  And invoke the compiler
+
+      Display_Command
+        (Compiler_Names (Source.Language).all,
+         Compiler_Paths (Source.Language));
+
+      Spawn
+        (Compiler_Paths (Source.Language).all,
+         Arguments (1 .. Last_Argument),
+         Success);
+
+      if Success then
+         --  Compilation was successful, update the time stamp
+         --  of the object file.
+
+         Source.Object_TS := File_Stamp (Source.Object_Name);
+
+         --  Do some sanity checks
+
+         if Source.Object_TS = Empty_Time_Stamp then
+            Local_Errors := True;
+            Report_Error
+              ("object file ",
+               Get_Name_String (Source.Object_Name),
+               " has not been created");
+
+         elsif Source.Object_TS < Source.Source_TS then
+            Local_Errors := True;
+            Report_Error
+              ("object file ",
+               Get_Name_String (Source.Object_Name),
+               " has not been modified");
+
+         else
+            --  Everything looks fine, update the Other_Sources
+            --  table.
+
+            Other_Sources.Table (Source_Id) := Source;
+         end if;
+
+      else
+         Local_Errors := True;
+         Report_Error
+           ("compilation of ",
+            Get_Name_String (Source.Path_Name),
+            " failed");
+      end if;
+   end Compile;
+
+   --------------------------------
+   -- Compile_Individual_Sources --
+   --------------------------------
+
+   procedure Compile_Individual_Sources is
+      Data      : Project_Data := Projects.Table (Main_Project);
+      Source_Id : Other_Source_Id;
+      Source    : Other_Source;
+      Source_Name : Name_Id;
+      Project_Name : String := Get_Name_String (Data.Name);
+      Dummy        : Boolean := False;
+      Ada_Is_A_Language : constant Boolean := Data.Languages (Lang_Ada);
+   begin
+      Ada_Mains.Init;
+
+      To_Mixed (Project_Name);
+
+      Compile_Only := True;
+
+      Get_Imported_Directories (Main_Project, Data);
+      Projects.Table (Main_Project) := Data;
+
+      if not Data.Sources_Present then
+         if Ada_Is_A_Language then
+            Mains.Reset;
+
+            loop
+               declare
+                  Main : constant String := Mains.Next_Main;
+               begin
+                  exit when Main'Length = 0;
+                  Ada_Mains.Increment_Last;
+                  Ada_Mains.Table (Ada_Mains.Last) := new String'(Main);
+               end;
+            end loop;
+
+         else
+            Osint.Fail
+              ("project ", Project_Name, " contains no source");
+         end if;
+
+      else
+         Mains.Reset;
+
+         loop
+            declare
+               Main : constant String := Mains.Next_Main;
+            begin
+               Name_Len := Main'Length;
+               exit when Name_Len = 0;
+               Name_Buffer (1 .. Name_Len) := Main;
+               Canonical_Case_File_Name (Name_Buffer (1 .. Name_Len));
+               Source_Name := Name_Find;
+
+               if not Sources_Compiled.Get (Source_Name) then
+                  Sources_Compiled.Set (Source_Name, True);
+
+                  Source_Id := Data.First_Other_Source;
+
+                  while Source_Id /= No_Other_Source loop
+                     Source := Other_Sources.Table (Source_Id);
+                     exit when Source.File_Name = Source_Name;
+                     Source_Id := Source.Next;
+                  end loop;
+
+                  if Source_Id = No_Other_Source then
+                     if Ada_Is_A_Language then
+                        Ada_Mains.Increment_Last;
+                        Ada_Mains.Table (Ada_Mains.Last) :=
+                          new String'(Main);
+
+                     else
+                        Report_Error
+                          (Main,
+                           " is not a valid source of project ",
+                           Project_Name);
+                     end if;
+
+                  else
+                     Compile (Source_Id, Data, Dummy);
+                  end if;
+               end if;
+            end;
+         end loop;
+      end if;
+
+      if Ada_Mains.Last > 0 then
+         --  Invoke gnatmake for all sources that are not of a non Ada language
+
+         Last_Argument := 0;
+
+         Add_Argument (Dash_u, True);
+
+         for Index in 1 .. Ada_Mains.Last loop
+            Add_Argument (Ada_Mains.Table (Index), True);
+         end loop;
+
+         Compile_Link_With_Gnatmake (Mains_Specified => False);
+      end if;
+   end Compile_Individual_Sources;
+
+   --------------------------------
+   -- Compile_Link_With_Gnatmake --
+   --------------------------------
+
+   procedure Compile_Link_With_Gnatmake (Mains_Specified : Boolean) is
+      Data : constant Project_Data := Projects.Table (Main_Project);
+      Success : Boolean;
+   begin
+      --  Array Arguments may already contain some arguments, so we don't
+      --  set Last_Argument to 0.
+
+      --  Get the gnatmake to invoke
+
+      Get_Compiler (Lang_Ada);
+
+      --  Specify the project file
+
+      Add_Argument (Dash_P, True);
+      Add_Argument (Get_Name_String (Data.Path_Name), True);
+
+      --  If Mains_Specified is True, find the mains in package Mains
+
+      if Mains_Specified then
+         Mains.Reset;
+
+         loop
+            declare
+               Main : constant String := Mains.Next_Main;
+            begin
+               exit when Main'Length = 0;
+               Add_Argument (Main, True);
+            end;
+         end loop;
+      end if;
+
+      --  Specify output file name, if any was specified on the command line
+
+      if Output_File_Name /= null then
+         Add_Argument (Dash_o, True);
+         Add_Argument (Output_File_Name, True);
+      end if;
+
+      --  Transmit to gnatmake some switches
+
+      --  -c
+
+      if Compile_Only then
+         Add_Argument (Dash_c, True);
+      end if;
+
+      --  -k
+
+      if Keep_Going then
+         Add_Argument (Dash_k, True);
+      end if;
+
+      --  -f
+
+      if Force_Compilations then
+         Add_Argument (Dash_f, True);
+      end if;
+
+      --  -v
+
+      if Verbose_Mode then
+         Add_Argument (Dash_v, True);
+      end if;
+
+      --  -q
+
+      if Quiet_Output then
+         Add_Argument (Dash_q, True);
+      end if;
+
+      --  -vP1 and -vP2
+
+      case Current_Verbosity is
+         when Default =>
+            null;
+
+         when Medium =>
+            Add_Argument (Dash_vP1, True);
+
+         when High =>
+            Add_Argument (Dash_vP2, True);
+      end case;
+
+      --  If there are compiling options for Ada, transmit them to gnatmake
+
+      if Comp_Opts.Last (Options (Lang_Ada)) /= 0 then
+         Add_Argument (Dash_cargs, True);
+
+         for Arg in 1 .. Comp_Opts.Last (Options (Lang_Ada)) loop
+            Add_Argument (Options (Lang_Ada).Table (Arg), True);
+         end loop;
+      end if;
+
+      if not Compile_Only then
+         --  If there are linking options from the command line, transmit them
+         --  to gnatmake.
+
+         if Linker_Options.Last /= 0 then
+            Add_Argument (Dash_largs, True);
+
+            for Arg in 1 .. Linker_Options.Last loop
+               Add_Argument (Linker_Options.Table (Arg), True);
+            end loop;
+
+         else
+            Add_Argument (Dash_largs, Verbose_Mode);
+         end if;
+
+         --  Add the archives
+
+         Add_Archives (For_Gnatmake => True);
+      end if;
+
+      --  And invoke gnatmake
+
+      Display_Command
+        (Compiler_Names (Lang_Ada).all, Compiler_Paths (Lang_Ada));
+
+      Spawn
+        (Compiler_Paths (Lang_Ada).all,
+         Arguments (1 .. Last_Argument),
+         Success);
+
+      --  Report an error if call to gnatmake failed
+
+      if not Success then
+         Report_Error
+           ("invocation of ", Compiler_Names (Lang_Ada).all, " failed");
+      end if;
+
+   end Compile_Link_With_Gnatmake;
+
+   ---------------------
+   -- Compile_Sources --
+   ---------------------
+
+   procedure Compile_Sources is
+      Data         : Project_Data;
+      Source_Id    : Other_Source_Id;
+      Source       : Other_Source;
+
+      Local_Errors : Boolean := False;
+      --  Set to True when there is a compilation error.
+      --  Used only when Keep_Going is True, to inhibit the building of the
+      --  archive.
+
+      Need_To_Compile : Boolean;
+      --  Set to True when a source needs to be compiled/recompiled.
+
+      Need_To_Rebuild_Archive : Boolean := Force_Compilations;
+      --  True when the archive needs to be built/rebuilt unconditionally
+
+   begin
+      --  For each project file
+
+      for Project in 1 .. Projects.Last loop
+         Local_Errors := False;
+         Data := Projects.Table (Project);
+
+         if not Data.Virtual then
+            --  If the imported directory switches are unknown, compute them
+
+            if not Data.Include_Data_Set then
+               Get_Imported_Directories (Project, Data);
+               Data.Include_Data_Set := True;
+               Projects.Table (Project) := Data;
+            end if;
+
+            --  Nothing to do when there are no sources of language other than
+            --  Ada.
+
+            if Data.Sources_Present then
+               Need_To_Rebuild_Archive := Force_Compilations;
+
+               --  Compilation will occur in the object directory
+
+               Change_Dir (Get_Name_String (Data.Object_Directory));
+
+               Source_Id := Data.First_Other_Source;
+
+               --  Process each source one by one
+
+               while Source_Id /= No_Other_Source loop
+                  Source := Other_Sources.Table (Source_Id);
+
+                  Need_To_Compile := Force_Compilations;
+
+                  --  Check if compilation is needed
+
+                  if not Need_To_Compile then
+                     Check_Compilation_Needed (Source, Need_To_Compile);
+                  end if;
+
+                  --  Proceed, if compilation is needed
+
+                  if Need_To_Compile then
+                     --  If a source is compiled/recompiled, of course the
+                     --  archive will need to be built/rebuilt.
+
+                     Need_To_Rebuild_Archive := True;
+
+                     Compile (Source_Id, Data, Local_Errors);
+                  end if;
+
+                  --  Next source, if any
+
+                  Source_Id := Source.Next;
+               end loop;
+
+               --  If there was no compilation error, build/rebuild the archive
+               --  if necessary.
+
+               if not Local_Errors then
+                  Build_Archive (Project, Need_To_Rebuild_Archive);
+               end if;
+            end if;
+         end if;
+      end loop;
+   end Compile_Sources;
+
+   ---------------
+   -- Copyright --
+   ---------------
+
+   procedure Copyright is
+   begin
+      --  Only output the Copyright notice once
+
+      if not Copyright_Output then
+         Copyright_Output := True;
+         Write_Eol;
+         Write_Str ("GPRMAKE ");
+         Write_Str (Gnatvsn.Gnat_Version_String);
+         Write_Str (" Copyright 2004 Free Software Foundation, Inc.");
+         Write_Eol;
+      end if;
+   end Copyright;
+
+   ------------------------------------
+   -- Create_Archive_Dependency_File --
+   ------------------------------------
+
+   procedure Create_Archive_Dependency_File
+     (Name : String; First_Source : Other_Source_Id)
+   is
+      Source_Id : Other_Source_Id := First_Source;
+      Source    : Other_Source;
+      Dep_File : Ada.Text_IO.File_Type;
+      use Ada.Text_IO;
+
+   begin
+      Create (Dep_File, Out_File, Name);
+
+      while Source_Id /= No_Other_Source loop
+         Source := Other_Sources.Table (Source_Id);
+         Put_Line (Dep_File, Get_Name_String (Source.Object_Name));
+         Put_Line (Dep_File, String (Source.Object_TS));
+         Source_Id := Source.Next;
+      end loop;
+
+      Close (Dep_File);
+
+   exception
+      when others =>
+         if Is_Open (Dep_File) then
+            Close (Dep_File);
+         end if;
+   end Create_Archive_Dependency_File;
+
+   ---------------------
+   -- Display_Command --
+   ---------------------
+
+   procedure Display_Command (Name : String; Path : String_Access) is
+   begin
+      --  Only display the command in Verbose Mode (-v) or when
+      --  not in Quiet Output (no -q).
+
+      if Verbose_Mode or (not Quiet_Output) then
+         --  In Verbose Mode output the full path of the spawned process
+
+         if Verbose_Mode then
+            Write_Str (Path.all);
+
+         else
+            Write_Str (Name);
+         end if;
+
+         --  Display only the arguments for which the display flag is set
+         --  (in Verbose Mode, the display flag is set for all arguments)
+
+         for Arg in 1 .. Last_Argument loop
+            if Arguments_Displayed (Arg) then
+               Write_Char (' ');
+               Write_Str (Arguments (Arg).all);
+            end if;
+         end loop;
+
+         Write_Eol;
+      end if;
+   end Display_Command;
+
+   ------------------
+   -- Get_Compiler --
+   ------------------
+
+   procedure Get_Compiler (For_Language : Programming_Language) is
+      Data : constant Project_Data := Projects.Table (Main_Project);
+
+      Ide : constant Package_Id :=
+        Value_Of (Name_Ide, In_Packages => Data.Decl.Packages);
+      --  The id of the package IDE in the project file
+
+      Compiler : constant Variable_Value :=
+        Value_Of (Lang_Name_Ids (For_Language), Name_Compiler_Command, Ide);
+      --  The value of Compiler_Command ("language") in package IDE, if it is
+      --  defined.
+
+   begin
+      --  No need to do it again if the compiler is known for this language
+
+      if Compiler_Names (For_Language) = null then
+         --  If compiler command is not defined for this language in package
+         --  IDE, use the default compiler for this language.
+
+         if Compiler = Nil_Variable_Value then
+            Compiler_Names (For_Language) :=
+              Default_Compiler_Names (For_Language);
+
+         else
+            Compiler_Names (For_Language) :=
+              new String'(Get_Name_String (Compiler.Value));
+         end if;
+
+         --  Check if compiler is a GCC compiler: its name end with "gcc" or
+         --  "g++".
+
+         declare
+            Comp_Name : constant String := Compiler_Names (For_Language).all;
+            Last3     : String (1 .. 3);
+         begin
+            if Comp_Name'Length >= 3 then
+               Last3 := Comp_Name (Comp_Name'Last - 2 .. Comp_Name'Last);
+               Compiler_Is_Gcc (For_Language) :=
+                 (Last3 = "gcc") or (Last3 = "g++");
+
+            else
+               Compiler_Is_Gcc (For_Language) := False;
+            end if;
+         end;
+
+         --  Locate the compiler on the path
+
+         Compiler_Paths (For_Language) :=
+           Locate_Exec_On_Path (Compiler_Names (For_Language).all);
+
+         --  Fail if compiler cannot be found
+
+         if Compiler_Paths (For_Language) = null then
+            if For_Language = Lang_Ada then
+               Osint.Fail
+                 ("unable to locate """,
+                  Compiler_Names (For_Language).all,
+                  """");
+
+            else
+               Osint.Fail
+                 ("unable to locate " & Lang_Display_Names (For_Language).all,
+                  " compiler """, Compiler_Names (For_Language).all & '"');
+            end if;
+         end if;
+      end if;
+   end Get_Compiler;
+
+   ------------------------------
+   -- Get_Imported_Directories --
+   ------------------------------
+
+   procedure Get_Imported_Directories
+     (Project : Project_Id;
+      Data    : in out Project_Data)
+   is
+      Imported_Projects : Project_List := Data.Imported_Projects;
+      Path_Length : Natural := 0;
+      Position    : Natural := 0;
+
+      procedure Add (Source_Dirs : String_List_Id);
+      --  Add a list of source directories
+
+      procedure Recursive_Get_Dirs (Prj : Project_Id);
+      --  Recursive procedure to get the source directories of this project
+      --  file and of the project files it imports, in the correct order.
+
+      ---------
+      -- Add --
+      ---------
+
+      procedure Add (Source_Dirs : String_List_Id) is
+         Element_Id : String_List_Id := Source_Dirs;
+         Element    : String_Element;
+         Add_Arg    : Boolean := True;
+      begin
+         --  Add each source directory path name, preceded by "-I" to
+         --  Arguments.
+
+         while Element_Id /= Nil_String loop
+            Element := String_Elements.Table (Element_Id);
+
+            if Element.Value /= No_Name then
+               Get_Name_String (Element.Value);
+
+               if Name_Len > 0 then
+                  declare
+                     Arg : constant String :=
+                             "-I" & Name_Buffer (1 .. Name_Len);
+                  begin
+                     --  Check if directory is already in the list.
+                     --  If it is, no need to put it again.
+
+                     for Index in 1 .. Last_Argument loop
+                        if Arguments (Index).all = Arg then
+                           Add_Arg := False;
+                           exit;
+                        end if;
+                     end loop;
+
+                     if Add_Arg then
+                        if Path_Length /= 0 then
+                           Path_Length := Path_Length + 1;
+                        end if;
+
+                        Path_Length := Path_Length + Name_Len;
+
+                        Add_Argument (Arg, True);
+                     end if;
+                  end;
+               end if;
+            end if;
+
+            Element_Id := Element.Next;
+         end loop;
+      end Add;
+
+      ------------------------
+      -- Recursive_Get_Dirs --
+      ------------------------
+
+      procedure Recursive_Get_Dirs (Prj : Project_Id) is
+         Data : Project_Data;
+         Imported : Project_List;
+      begin
+         --  Nothing to do if project is undefined
+
+         if Prj /= No_Project then
+            Data := Projects.Table (Prj);
+
+            --  Nothing to do if project has already been processed
+
+            if not Data.Seen then
+               --  Mark the project as processed, to avoid multiple processing
+               --  of the same project.
+
+               Projects.Table (Prj).Seen := True;
+
+               --  Add the source directories of this project
+
+               if not Data.Virtual then
+                  Add (Data.Source_Dirs);
+               end if;
+
+               Recursive_Get_Dirs (Data.Extends);
+
+               Imported := Data.Imported_Projects;
+
+               --  Call itself for all imported projects, if any
+
+               while Imported /= Empty_Project_List loop
+                  Recursive_Get_Dirs (Project_Lists.Table (Imported).Project);
+                  Imported := Project_Lists.Table (Imported).Next;
+               end loop;
+            end if;
+         end if;
+      end Recursive_Get_Dirs;
+
+   begin
+      --  First, mark all project as not processed
+
+      for J in 1 .. Projects.Last loop
+         Projects.Table (J).Seen := False;
+      end loop;
+
+      --  Empty Arguments
+
+      Last_Argument := 0;
+
+      --  Process this project individually, the project data are already
+      --  known.
+
+      Projects.Table (Project).Seen := True;
+
+      Add (Data.Source_Dirs);
+
+      Recursive_Get_Dirs (Data.Extends);
+
+      while Imported_Projects /= Empty_Project_List loop
+         Recursive_Get_Dirs (Project_Lists.Table (Imported_Projects).Project);
+         Imported_Projects := Project_Lists.Table (Imported_Projects).Next;
+      end loop;
+
+      Data.Imported_Directories_Switches :=
+        new Argument_List'(Arguments (1 .. Last_Argument));
+
+      --  Create the Include_Path, from the Arguments
+
+      Data.Include_Path := new String (1 .. Path_Length);
+      Data.Include_Path (1 .. Arguments (1)'Length - 2) :=
+        Arguments (1)(Arguments (1)'First + 2 .. Arguments (1)'Last);
+      Position := Arguments (1)'Length - 2;
+
+      for Arg in 2 .. Last_Argument loop
+         Position := Position + 1;
+         Data.Include_Path (Position) := Path_Separator;
+         Data.Include_Path
+           (Position + 1 .. Position + Arguments (Arg)'Length - 2) :=
+           Arguments (Arg)(Arguments (Arg)'First + 2 .. Arguments (Arg)'Last);
+         Position := Position + Arguments (Arg)'Length - 2;
+      end loop;
+
+      Last_Argument := 0;
+   end Get_Imported_Directories;
+
+   -------------
+   -- Gprmake --
+   -------------
+
+   procedure Gprmake is
+   begin
+      Initialize;
+
+      if Verbose_Mode then
+         Write_Eol;
+         Write_Str ("Parsing Project File """);
+         Write_Str (Project_File_Name.all);
+         Write_Str (""".");
+         Write_Eol;
+      end if;
+
+      --  Parse and process the project files for other languages
+      --  (not for Ada).
+
+      Prj.Pars.Parse
+        (Project           => Main_Project,
+         Project_File_Name => Project_File_Name.all,
+         Packages_To_Check => Packages_To_Check,
+         Process_Languages => Other_Languages);
+
+      --  Fail if parsing/processing was unsuccessful
+
+      if Main_Project = No_Project then
+         Osint.Fail ("""", Project_File_Name.all, """ processing failed");
+      end if;
+
+      if Verbose_Mode then
+         Write_Eol;
+         Write_Str ("Parsing of Project File """);
+         Write_Str (Project_File_Name.all);
+         Write_Str (""" is finished.");
+         Write_Eol;
+      end if;
+
+      --  If -f was specified, we will certainly need to link (except when
+      --  -u or -c were specified, of course).
+
+      Need_To_Relink := Force_Compilations;
+
+      if Unique_Compile then
+         if Mains.Number_Of_Mains = 0 then
+            Osint.Fail
+              ("No source specified to compile in 'unique compile' mode");
+
+         else
+            Compile_Individual_Sources;
+            Report_Total_Errors ("compilation");
+         end if;
+
+      else
+
+         --  First compile sources and build archives, if necessary
+
+         Compile_Sources;
+
+         --  When Keep_Going is True, if we had some errors, fail now,
+         --  reporting the number of compilation errors.
+         --  Do not attempt to link.
+
+         Report_Total_Errors ("compilation");
+
+         --  If -c was not specified, link the executables, if there are any.
+
+         if not Compile_Only then
+            Check_For_C_Plus_Plus;
+            Link_Executables;
+         end if;
+
+         --  When Keep_Going is True, if we had some errors, fail, reporting
+         --  the number of linking errors.
+
+         Report_Total_Errors ("linking");
+      end if;
+   end Gprmake;
+
+   ----------------
+   -- Initialize --
+   ----------------
+
+   procedure Initialize is
+      Next_Arg : Positive;
+
+   begin
+      --  Do some necessary package initializations
+
+      Csets.Initialize;
+      Namet.Initialize;
+      Snames.Initialize;
+      Prj.Initialize;
+      Mains.Delete;
+
+      --  Set Name_Ide and Name_Compiler_Command
+
+      Name_Len := 0;
+      Add_Str_To_Name_Buffer ("ide");
+      Name_Ide := Name_Find;
+
+      Name_Len := 0;
+      Add_Str_To_Name_Buffer ("compiler_command");
+      Name_Compiler_Command := Name_Find;
+
+      Next_Arg := 1;
+
+      --  Get the command line arguments
+
+      Scan_Args : while Next_Arg <= Argument_Count loop
+         Scan_Arg (Argument (Next_Arg));
+         Next_Arg := Next_Arg + 1;
+      end loop Scan_Args;
+
+      --  Fail if command line ended with "-P"
+
+      if Project_File_Name_Expected then
+         Osint.Fail ("project file name missing after -P");
+
+      --  Or if it ended with "-o"
+
+      elsif Output_File_Name_Expected then
+         Osint.Fail ("output file name missing after -o");
+      end if;
+
+      --  If no project file was specified, display the usage and fail
+
+      if Project_File_Name = null then
+         Usage;
+         Exit_Program (E_Success);
+      end if;
+
+      --  To be able of finding libgnat.a in MLib.Tgt, we need to have the
+      --  default search dirs established in Osint.
+
+      Osint.Add_Default_Search_Dirs;
+   end Initialize;
+
+   ----------------------
+   -- Link_Executables --
+   ----------------------
+
+   procedure Link_Executables is
+      Data : constant Project_Data := Projects.Table (Main_Project);
+
+      Mains_Specified : constant Boolean := Mains.Number_Of_Mains /= 0;
+      --  True if main sources were specified on the command line
+
+      Object_Dir : constant String := Get_Name_String (Data.Object_Directory);
+      --  Path of the object directory of the main project
+
+      Source_Id : Other_Source_Id;
+      Source    : Other_Source;
+      Success   : Boolean;
+
+      Linker_Name : String_Access;
+      Linker_Path : String_Access;
+      --  The linker name and path, when linking is not done by gnatlink
+
+      Link_Done   : Boolean := False;
+      --  Set to True when the linker is invoked directly (not through
+      --  gnatmake) to be able to report if mains were up to date at the end
+      --  of execution.
+
+      procedure Add_C_Plus_Plus_Link_For_Gnatmake;
+      --  Add the --LINK= switch for gnatlink, depending on the C++ compiler
+
+      procedure Choose_C_Plus_Plus_Link_Process;
+      --  If the C++ compiler is not g++, create the correct script to link
+
+      ---------------------------------------
+      -- Add_C_Plus_Plus_Link_For_Gnatmake --
+      ---------------------------------------
+
+      procedure Add_C_Plus_Plus_Link_For_Gnatmake is
+      begin
+         if Compiler_Is_Gcc (Lang_C_Plus_Plus) then
+            Add_Argument
+              ("--LINK=" & Compiler_Names (Lang_C_Plus_Plus).all,
+               Verbose_Mode);
+
+         else
+            Add_Argument
+              ("--LINK=" &
+               Object_Dir & Directory_Separator &
+               Cpp_Linker,
+               Verbose_Mode);
+         end if;
+      end Add_C_Plus_Plus_Link_For_Gnatmake;
+
+      -------------------------------------
+      -- Choose_C_Plus_Plus_Link_Process --
+      -------------------------------------
+
+      procedure Choose_C_Plus_Plus_Link_Process is
+      begin
+         if Compiler_Names (Lang_C_Plus_Plus) = null then
+            Get_Compiler (Lang_C_Plus_Plus);
+         end if;
+
+         if not Compiler_Is_Gcc (Lang_C_Plus_Plus) then
+            Change_Dir (Object_Dir);
+
+            declare
+               procedure Set_Executable (Name : System.Address);
+               pragma Import
+                 (C, Set_Executable, "__gnat_set_executable");
+
+               Name : constant String := Cpp_Linker & ASCII.NUL;
+
+               File : Ada.Text_IO.File_Type;
+               use Ada.Text_IO;
+            begin
+               Create (File, Out_File, Cpp_Linker);
+
+               Put_Line (File, "#!/bin/sh");
+
+               Put_Line (File, "LIBGCC=`gcc -print-libgcc-file-name`");
+               Put_Line
+                 (File,
+                  Compiler_Names (Lang_C_Plus_Plus).all &
+                  " $* ${LIBGCC}");
+
+               Close (File);
+               Set_Executable (Name (Name'First)'Address);
+            end;
+         end if;
+      end Choose_C_Plus_Plus_Link_Process;
+
+
+
+   begin
+      --  If no mains were specified, get the mains from attribute Main, if
+      --  it exists.
+
+      if not Mains_Specified then
+         declare
+            Element_Id : String_List_Id := Data.Mains;
+            Element    : String_Element;
+
+         begin
+            while Element_Id /= Nil_String loop
+               Element := String_Elements.Table (Element_Id);
+
+               if Element.Value /= No_Name then
+                  Mains.Add_Main (Get_Name_String (Element.Value));
+               end if;
+
+               Element_Id := Element.Next;
+            end loop;
+         end;
+      end if;
+
+      if Mains.Number_Of_Mains = 0 then
+         --  If the attribute Main is an empty list or not specified,
+         --  there is nothing to do.
+
+         if Verbose_Mode then
+            Write_Line ("No main to link");
+         end if;
+         return;
+      end if;
+
+      --  Check if -o was used for several mains
+
+      if Output_File_Name /= null and then Mains.Number_Of_Mains > 1 then
+         Osint.Fail ("cannot specify an executable name for several mains");
+      end if;
+
+      --  Check how we are going to do the link
+
+      if not Data.Sources_Present then
+         --  Only Ada sources in the main project, and even maybe not
+
+         if not Data.Languages (Lang_Ada) then
+            --  Fail if the main project has no source of any language
+
+            Osint.Fail
+              ("project """,
+               Get_Name_String (Data.Name),
+               """ has no sources, so no main can be linked");
+
+         else
+            --  Only Ada sources in the main project, call gnatmake directly
+
+            Last_Argument := 0;
+
+            --  Choose the correct linker if there is C++ code in other
+            --  projects.
+
+            if C_Plus_Plus_Is_Used then
+               Choose_C_Plus_Plus_Link_Process;
+               Add_Argument (Dash_largs, Verbose_Mode);
+               Add_C_Plus_Plus_Link_For_Gnatmake;
+               Add_Argument (Dash_margs, Verbose_Mode);
+            end if;
+
+            Compile_Link_With_Gnatmake (Mains_Specified);
+         end if;
+
+      else
+         --  There are other language sources. First check if there are also
+         --  sources in Ada.
+
+         if Data.Languages (Lang_Ada) then
+            --  There is a mix of Ada and other language sources in the main
+            --  project. Any main that is not a source of the other languages
+            --  will be deemed to be an Ada main.
+            --
+            --  Find the mains of the other languages and the Ada mains.
+
+            Mains.Reset;
+            Ada_Mains.Set_Last (0);
+            Other_Mains.Set_Last (0);
+
+            --  For each main
+
+            loop
+               declare
+                  Main : constant String := Mains.Next_Main;
+                  Main_Id : Name_Id;
+               begin
+                  exit when Main'Length = 0;
+
+                  --  Get the main file name
+
+                  Name_Len := 0;
+                  Add_Str_To_Name_Buffer (Main);
+                  Canonical_Case_File_Name (Name_Buffer (1 .. Name_Len));
+                  Main_Id := Name_Find;
+                  Source_Id := Data.First_Other_Source;
+
+                  --  Check if it is a source of a language other than Ada
+
+                  while Source_Id /= No_Other_Source loop
+                     Source := Other_Sources.Table (Source_Id);
+                     exit when Source.File_Name = Main_Id;
+                     Source_Id := Source.Next;
+                  end loop;
+
+                  --  If it is not, put it in the list of Ada mains
+
+                  if Source_Id = No_Other_Source then
+                     Ada_Mains.Increment_Last;
+                     Ada_Mains.Table (Ada_Mains.Last) := new String'(Main);
+
+                  --  Otherwise, put it in the list of other mains
+
+                  else
+                     Other_Mains.Increment_Last;
+                     Other_Mains.Table (Other_Mains.Last) := Source;
+                  end if;
+               end;
+            end loop;
+
+            --  If C++ is one of the other language, create the shell script
+            --  to do the link.
+
+            if C_Plus_Plus_Is_Used then
+               Choose_C_Plus_Plus_Link_Process;
+            end if;
+
+            --  Call gnatmake with the necessary switches for each non-Ada
+            --  main, if there are some.
+
+            for Main in 1 .. Other_Mains.Last loop
+               declare
+                  Source : constant Other_Source := Other_Mains.Table (Main);
+               begin
+                  Last_Argument := 0;
+
+                  --  Add -o if -o was specified
+
+                  if Output_File_Name = null then
+                     Add_Argument (Dash_o, True);
+                     Add_Argument
+                       (Get_Name_String
+                          (Executable_Of
+                             (Project  => Main_Project,
+                              Main     => Other_Mains.Table (Main).File_Name,
+                              Ada_Main => False)),
+                        True);
+                  end if;
+
+                  --  Call gnatmake with the -B switch
+
+                  Add_Argument (Dash_B, True);
+
+                  --  Add to the linking options the object file of the source
+
+                  Add_Argument (Dash_largs, Verbose_Mode);
+                  Add_Argument
+                    (Get_Name_String (Source.Object_Name), Verbose_Mode);
+
+                  --  If C++ is one of the language, add the --LINK switch
+                  --  to the linking switches.
+
+                  if C_Plus_Plus_Is_Used then
+                     Add_C_Plus_Plus_Link_For_Gnatmake;
+                  end if;
+
+                  --  Add -margs so that the following switches are for
+                  --  gnatmake
+
+                  Add_Argument (Dash_margs, Verbose_Mode);
+
+                  --  And link with gnatmake
+
+                  Compile_Link_With_Gnatmake (Mains_Specified => False);
+               end;
+            end loop;
+
+            --  If there are also Ada mains, call gnatmake for all these mains
+
+            if Ada_Mains.Last /= 0 then
+               Last_Argument := 0;
+
+               --  Put all the Ada mains as the first arguments
+
+               for Main in 1 .. Ada_Mains.Last loop
+                  Add_Argument (Ada_Mains.Table (Main).all, True);
+               end loop;
+
+               --  If C++ is one of the languages, add the --LINK switch to
+               --  the linking switches.
+
+               if Data.Languages (Lang_C_Plus_Plus) then
+                  Add_Argument (Dash_largs, Verbose_Mode);
+                  Add_C_Plus_Plus_Link_For_Gnatmake;
+                  Add_Argument (Dash_margs, Verbose_Mode);
+               end if;
+
+               --  And link with gnatmake
+
+               Compile_Link_With_Gnatmake (Mains_Specified => False);
+            end if;
+
+         else
+            --  No Ada source in main project
+
+            --  First, get the linker to invoke
+
+            if Data.Languages (Lang_C_Plus_Plus) then
+               Get_Compiler (Lang_C_Plus_Plus);
+               Linker_Name := Compiler_Names (Lang_C_Plus_Plus);
+               Linker_Path := Compiler_Paths (Lang_C_Plus_Plus);
+
+            else
+               Get_Compiler (Lang_C);
+               Linker_Name := Compiler_Names (Lang_C);
+               Linker_Path := Compiler_Paths (Lang_C);
+            end if;
+
+            Link_Done := False;
+
+            Mains.Reset;
+
+            --  Get each main, check if it is a source of the main project,
+            --  and if it is, invoke the linker.
+
+            loop
+               declare
+                  Main : constant String := Mains.Next_Main;
+                  Main_Id : Name_Id;
+               begin
+                  exit when Main'Length = 0;
+
+                  --  Get the file name of the main
+
+                  Name_Len := 0;
+                  Add_Str_To_Name_Buffer (Main);
+                  Canonical_Case_File_Name (Name_Buffer (1 .. Name_Len));
+                  Main_Id := Name_Find;
+                  Source_Id := Data.First_Other_Source;
+
+                  --  Check if it is a source of the main project file
+
+                  while Source_Id /= No_Other_Source loop
+                     Source := Other_Sources.Table (Source_Id);
+                     exit when Source.File_Name = Main_Id;
+                     Source_Id := Source.Next;
+                  end loop;
+
+                  --  Report an error if it is not
+
+                  if Source_Id = No_Other_Source then
+                     Report_Error
+                       (Main, "is not a source of project ",
+                        Get_Name_String (Data.Name));
+
+                  else
+                     declare
+                        Executable_Name : constant String :=
+                          Get_Name_String
+                            (Executable_Of
+                                 (Main_Project, Main_Id, Ada_Main => False));
+                        --  File name of the executable
+
+                        Executable_Path : constant String :=
+                          Get_Name_String (Data.Exec_Directory) &
+                        Directory_Separator & Executable_Name;
+                        --  Path name of the executable
+
+                        Exec_Time_Stamp : Time_Stamp_Type;
+                     begin
+
+                        --  Now, check if the executable is up to date.
+                        --  It is considered up to date if its time stamp is
+                        --  not earlier that the time stamp of any archive.
+                        --  Only do that if we don't know if we need to link.
+
+                        if not Need_To_Relink then
+                           --  Get the time stamp of the excutable
+
+                           Name_Len := 0;
+                           Add_Str_To_Name_Buffer (Executable_Path);
+                           Exec_Time_Stamp := File_Stamp (Name_Find);
+
+                           if Verbose_Mode then
+                              Write_Str  ("   Checking executable ");
+                              Write_Line (Executable_Name);
+                           end if;
+
+                           --  If executable does not exist, we need to link
+
+                           if Exec_Time_Stamp = Empty_Time_Stamp then
+                              Need_To_Relink := True;
+
+                              if Verbose_Mode then
+                                 Write_Line ("      -> not found");
+                              end if;
+
+                           else
+                              --  Otherwise, get the time stamps of each
+                              --  archive. If one of them is found later than
+                              --  the executable, we need to relink.
+
+                              declare
+                                 Prj_Data : Project_Data;
+                              begin
+                                 for Prj in 1 .. Projects.Last loop
+                                    Prj_Data := Projects.Table (Prj);
+
+                                    --  There is an archive only in project
+                                    --  files with sources other than Ada
+                                    --  sources.
+
+                                    if Data.Sources_Present then
+                                       declare
+                                          Archive_Path : constant String :=
+                                            Get_Name_String
+                                              (Prj_Data.Object_Directory) &
+                                          Directory_Separator &
+                                          "lib" &
+                                          Get_Name_String (Prj_Data.Name) &
+                                          '.' & Archive_Ext;
+                                          Archive_TS : Time_Stamp_Type;
+                                       begin
+                                          Name_Len := 0;
+                                          Add_Str_To_Name_Buffer
+                                            (Archive_Path);
+                                          Archive_TS := File_Stamp (Name_Find);
+
+                                          --  If the archive is later than the
+                                          --  executable, we need to relink.
+
+                                          if Archive_TS /=  Empty_Time_Stamp
+                                            and then
+                                              Exec_Time_Stamp < Archive_TS
+                                          then
+                                             Need_To_Relink := True;
+
+                                             if Verbose_Mode then
+                                                Write_Str ("      -> ");
+                                                Write_Str (Archive_Path);
+                                                Write_Str (" has time stamp ");
+                                                Write_Str ("later than ");
+                                                Write_Line ("executable");
+                                             end if;
+
+                                             exit;
+                                          end if;
+                                       end;
+                                    end if;
+                                 end loop;
+                              end;
+                           end if;
+
+
+                           --  If Need_To_Relink is False, we are done
+
+                           if Verbose_Mode and (not Need_To_Relink) then
+                              Write_Line ("      -> up to date");
+                           end if;
+
+                        end if;
+
+                        --  Prepare to link
+
+                        if Need_To_Relink then
+                           Link_Done := True;
+
+                           Last_Argument := 0;
+
+                           --  Specify the executable path name
+
+                           Add_Argument (Dash_o, True);
+                           Add_Argument
+                             (Get_Name_String (Data.Exec_Directory) &
+                              Directory_Separator &
+                              Get_Name_String
+                                (Executable_Of
+                                   (Main_Project, Main_Id, Ada_Main => False)),
+                              True);
+
+                           --  Specify the object file of the main source
+
+                           Add_Argument
+                             (Object_Dir & Directory_Separator &
+                              Get_Name_String (Source.Object_Name),
+                              True);
+
+                           --  Add the switches specified in attribute
+                           --  Linker_Options of packages Linker.
+
+                           if Link_Options_Switches = null then
+                              Link_Options_Switches :=
+                                new Argument_List'
+                                  (Linker_Options_Switches (Main_Project));
+                           end if;
+
+                           Add_Arguments (Link_Options_Switches.all, True);
+
+                           --  Add the linking options specified on the
+                           --  command line.
+
+                           for Arg in 1 ..  Linker_Options.Last loop
+                              Add_Argument (Linker_Options.Table (Arg), True);
+                           end loop;
+
+                           --  Add all the archives, in a correct order
+
+                           Add_Archives (For_Gnatmake => False);
+
+                           --  If there are shared libraries and the run path
+                           --  option is supported, add the run path switch.
+
+                           if Lib_Path.Last > 0 then
+                              Add_Argument
+                                (Path_Option.all &
+                                 String (Lib_Path.Table (1 .. Lib_Path.Last)),
+                                Verbose_Mode);
+                           end if;
+
+                           --  And invoke the linker
+
+                           Display_Command (Linker_Name.all, Linker_Path);
+                           Spawn
+                             (Linker_Path.all,
+                              Arguments (1 .. Last_Argument),
+                              Success);
+
+                           if not Success then
+                              Report_Error ("could not link ", Main);
+                           end if;
+                        end if;
+                     end;
+                  end if;
+               end;
+            end loop;
+
+            --  If no linking was done, report it, except in Quiet Output
+
+            if (Verbose_Mode or (not Quiet_Output)) and (not Link_Done) then
+               Osint.Write_Program_Name;
+
+               if Mains.Number_Of_Mains = 1 then
+                  --  If there is only one executable, report its name too
+
+                  Write_Str (": """);
+                  Mains.Reset;
+
+                  declare
+                     Main : constant String := Mains.Next_Main;
+                     Main_Id : Name_Id;
+                  begin
+                     Name_Len := 0;
+                     Add_Str_To_Name_Buffer (Main);
+                     Main_Id := Name_Find;
+                     Write_Str
+                       (Get_Name_String
+                          (Executable_Of
+                             (Main_Project, Main_Id, Ada_Main => False)));
+                     Write_Line (""" up to date");
+                  end;
+
+               else
+                  Write_Line (": all executables up to date");
+               end if;
+            end if;
+         end if;
+      end if;
+   end Link_Executables;
+
+   ------------------
+   -- Report_Error --
+   ------------------
+
+   procedure Report_Error
+     (S1 : String; S2 : String := ""; S3 : String := "")
+   is
+   begin
+      --  If keep_Going is True, output the error message, preceded by the
+      --  error header.
+
+      if Keep_Going then
+         Total_Number_Of_Errors := Total_Number_Of_Errors + 1;
+         Write_Str (Error_Header);
+         Write_Str (S1);
+         Write_Str (S2);
+         Write_Str (S3);
+         Write_Eol;
+
+      else
+         --  Otherwise, just fail
+
+         Osint.Fail (S1, S2, S3);
+      end if;
+   end Report_Error;
+
+   -------------------------
+   -- Report_Total_Errors --
+   -------------------------
+
+   procedure Report_Total_Errors (Kind : String) is
+   begin
+      if Total_Number_Of_Errors /= 0 then
+         if Total_Number_Of_Errors = 1 then
+            Osint.Fail
+              ("One ", Kind, " error");
+
+         else
+            Osint.Fail
+              ("Total of" & Total_Number_Of_Errors'Img,
+               ' ' & Kind & " errors");
+         end if;
+      end if;
+   end Report_Total_Errors;
+
+   --------------
+   -- Scan_Arg --
+   --------------
+
+   procedure Scan_Arg (Arg : String) is
+   begin
+      pragma Assert (Arg'First = 1);
+
+      if Arg'Length = 0 then
+         return;
+      end if;
+
+      --  If preceding switch was -P, a project file name need to be specified,
+      --  not a switch.
+
+      if Project_File_Name_Expected then
+         if Arg (1) = '-' then
+            Osint.Fail ("project file name missing after -P");
+
+         else
+            Project_File_Name_Expected := False;
+            Project_File_Name := new String'(Arg);
+         end if;
+
+      --  If preceding switch was -o, an executable name need to be specidied,
+      --  not a switch.
+
+      elsif Output_File_Name_Expected then
+         if Arg (1) = '-' then
+            Osint.Fail ("output file name missing after -o");
+
+         else
+            Output_File_Name_Expected := False;
+            Output_File_Name := new String'(Arg);
+         end if;
+
+      --  Set the processor/language for the following switches
+
+      --  -c???args: Compiler arguments
+
+      elsif Arg'Length >= 6 and then
+         Arg (Arg'First .. Arg'First + 1) = "-c" and then
+         Arg (Arg'Last - 3 .. Arg'Last) = "args"
+      then
+         declare
+            OK : Boolean := False;
+            Args_String : constant String :=
+                            Arg (Arg'First + 2 .. Arg'Last - 4);
+
+         begin
+            for Lang in Programming_Language loop
+               if Args_String = Lang_Args (Lang).all then
+                  OK := True;
+                  Current_Language := Lang;
+                  exit;
+               end if;
+            end loop;
+
+            if OK then
+               Current_Processor := Compiler;
+
+            else
+               Osint.Fail ("illegal option """, Arg, """");
+            end if;
+         end;
+
+      elsif Arg = "-largs" then
+         Current_Processor := Linker;
+
+      --  -gargs: gprmake
+
+      elsif Arg = "-gargs" then
+         Current_Processor := None;
+
+      --  A special test is needed for the -o switch within a -largs
+      --  since that is another way to specify the name of the final
+      --  executable.
+
+      elsif Current_Processor = Linker and then Arg = "-o" then
+         Osint.Fail
+           ("switch -o not allowed within a -largs. Use -o directly.");
+
+      --  If current processor is not gprmake dirrectly, store the option in
+      --  the appropriate table.
+
+      elsif Current_Processor /= None then
+         Add_Option (Arg);
+
+      --  Switches start with '-'
+
+      elsif Arg (1) = '-' then
+         if Arg = "-c" then
+            Compile_Only := True;
+
+         elsif Arg = "-f" then
+            Force_Compilations := True;
+
+         elsif Arg = "-h" then
+            Usage;
+
+         elsif Arg = "-k" then
+            Keep_Going := True;
+
+         elsif Arg = "-o" then
+            if Output_File_Name /= null then
+               Osint.Fail ("cannot specify several -o switches");
+
+            else
+               Output_File_Name_Expected := True;
+            end if;
+
+         elsif Arg'Length >= 2 and then Arg (2) = 'P' then
+            if Project_File_Name /= null then
+               Osint.Fail ("cannot have several project files specified");
+
+            elsif Arg'Length = 2 then
+               Project_File_Name_Expected := True;
+
+            else
+               Project_File_Name := new String'(Arg (3 .. Arg'Last));
+            end if;
+
+         elsif Arg = "-q" then
+            Quiet_Output := True;
+
+         elsif Arg = "-u" then
+            Unique_Compile := True;
+            Compile_Only   := True;
+
+         elsif Arg = "-v" then
+            Verbose_Mode := True;
+
+         elsif Arg'Length = 4 and then Arg (1 .. 3) = "-vP"
+           and then Arg (4) in '0' .. '2'
+         then
+            case Arg (4) is
+               when '0' =>
+                  Current_Verbosity := Prj.Default;
+               when '1' =>
+                  Current_Verbosity := Prj.Medium;
+               when '2' =>
+                  Current_Verbosity := Prj.High;
+               when others =>
+                  null;
+            end case;
+
+         elsif Arg'Length >= 3 and then Arg (2) = 'X'
+           and then Is_External_Assignment (Arg)
+         then
+            --  Is_External_Assignment has side effects
+            --  when it returns True;
+
+            null;
+
+         else
+            Osint.Fail ("illegal option """, Arg, """");
+         end if;
+
+      else
+         --  Not a switch: must be a main
+
+         Mains.Add_Main (Arg);
+      end if;
+   end Scan_Arg;
+
+   -----------------
+   -- Strip_CR_LF --
+   -----------------
+
+   function Strip_CR_LF (Text : String) return String is
+
+      To  : String (1 .. Text'Length);
+      Index_To : Natural := 0;
+
+   begin
+      for Index in Text'Range loop
+         if (Text (Index) /= ASCII.CR) and then (Text (Index) /= ASCII.LF) then
+            Index_To := Index_To + 1;
+            To (Index_To) := Text (Index);
+         end if;
+      end loop;
+
+      return To (1 .. Index_To);
+   end Strip_CR_LF;
+
+   -----------
+   -- Usage --
+   -----------
+
+   procedure Usage is
+   begin
+      if not Usage_Output then
+         Usage_Output := True;
+         Copyright;
+
+         Write_Str ("Usage: ");
+         Osint.Write_Program_Name;
+         Write_Str (" -P<project file> [opts]  [name] {");
+
+         for Lang in Programming_Language loop
+            Write_Str ("[-c");
+            Write_Str (Lang_Args (Lang).all);
+            Write_Str ("args opts] ");
+         end loop;
+
+         Write_Str ("[-largs opts] [-gargs opts]}");
+         Write_Eol;
+         Write_Eol;
+         Write_Str ("  name is zero or more file names");
+         Write_Eol;
+         Write_Eol;
+
+         --  GPRMAKE switches
+
+         Write_Str ("gprmake switches:");
+         Write_Eol;
+
+         --  Line for -c
+
+         Write_Str ("  -c       Compile only");
+         Write_Eol;
+
+         --  Line for -f
+
+         Write_Str ("  -f       Force recompilations");
+         Write_Eol;
+
+         --  Line for -k
+
+         Write_Str ("  -k       Keep going after compilation errors");
+         Write_Eol;
+
+         --  Line for -o
+
+         Write_Str ("  -o name  Choose an alternate executable name");
+         Write_Eol;
+
+         --  Line for -P
+
+         Write_Str ("  -Pproj   Use GNAT Project File proj");
+         Write_Eol;
+
+         --  Line for -q
+
+         Write_Str ("  -q       Be quiet/terse");
+         Write_Eol;
+
+         --  Line for -u
+
+         Write_Str
+           ("  -u       Unique compilation. Only compile the given files");
+         Write_Eol;
+
+         --  Line for -v
+
+         Write_Str ("  -v       Verbose output");
+         Write_Eol;
+
+         --  Line for -vPx
+
+         Write_Str ("  -vPx     Specify verbosity when parsing Project Files");
+         Write_Eol;
+
+         --  Line for -X
+
+         Write_Str ("  -Xnm=val Specify an external reference for " &
+                    "Project Files");
+         Write_Eol;
+         Write_Eol;
+
+         --  Lines for -c*args
+
+         for Lang in Programming_Language loop
+            declare
+               Column : Positive := 13 + Lang_Args (Lang)'Length;
+               --  "  -cargs opts" is the minimum and is 13 character long
+
+            begin
+               Write_Str ("  -c");
+               Write_Str (Lang_Args (Lang).all);
+               Write_Str ("args opts");
+
+               loop
+                  Write_Char (' ');
+                  Column := Column + 1;
+                  exit when Column >= 17;
+               end loop;
+
+               Write_Str ("opts are passed to the ");
+               Write_Str (Lang_Display_Names (Lang).all);
+               Write_Str (" compiler");
+               Write_Eol;
+            end;
+         end loop;
+
+         --  Line for -largs
+
+         Write_Str ("  -largs opts    opts are passed to the linker");
+         Write_Eol;
+
+         --  Line for -gargs
+
+         Write_Str ("  -gargs opts    opts directly interpreted by gprmake");
+         Write_Eol;
+         Write_Eol;
+
+      end if;
+   end Usage;
+
+begin
+   Makeutl.Do_Fail := Report_Error'Access;
+end Makegpr;
diff --git a/gcc/ada/makegpr.ads b/gcc/ada/makegpr.ads
new file mode 100644 (file)
index 0000000..fc751e8
--- /dev/null
@@ -0,0 +1,35 @@
+------------------------------------------------------------------------------
+--                                                                          --
+--                         GNAT COMPILER COMPONENTS                         --
+--                                                                          --
+--                              M A K E G P R                               --
+--                                                                          --
+--                                 S p e c                                  --
+--                                                                          --
+--          Copyright (C) 2004 Free Software Foundation, Inc.               --
+--                                                                          --
+-- GNAT is free software;  you can  redistribute it  and/or modify it under --
+-- terms of the  GNU General Public License as published  by the Free Soft- --
+-- ware  Foundation;  either version 2,  or (at your option) any later ver- --
+-- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+-- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+-- or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License --
+-- for  more details.  You should have  received  a copy of the GNU General --
+-- Public License  distributed with GNAT;  see file COPYING.  If not, write --
+-- to  the Free Software Foundation,  59 Temple Place - Suite 330,  Boston, --
+-- MA 02111-1307, USA.                                                      --
+--                                                                          --
+-- GNAT was originally developed  by the GNAT team at  New York University. --
+-- Extensive contributions were provided by Ada Core Technologies Inc.      --
+--                                                                          --
+------------------------------------------------------------------------------
+
+--  The following package implements the facilities to compile, bind and/or
+--  link a set of Ada and non Ada sources, specified in Project Files.
+
+package Makegpr is
+
+   procedure Gprmake;
+   --  The driver of gprmake.
+
+end Makegpr;
index 4e7222701ee2e0cce844a8e9307090ddbaa9010d..e9a4a4be7490e2cb67b83c570cde8c739d1ce651 100644 (file)
@@ -368,7 +368,7 @@ package body Restrict is
         and then Restrictions.Set (No_Task_Allocators)
         and then Restrictions.Set (No_Dynamic_Priorities)
         and then Restrictions.Set (No_Terminate_Alternatives)
-        and then Restrictions.Set (No_Dynamic_Interrupts)
+        and then Restrictions.Set (No_Dynamic_Attachment)
         and then Restrictions.Set (No_Protected_Type_Allocators)
         and then Restrictions.Set (No_Local_Protected_Objects)
         and then Restrictions.Set (No_Requeue_Statements)
@@ -442,7 +442,7 @@ package body Restrict is
    procedure Set_Ravenscar (N : Node_Id) is
    begin
       Set_Restricted_Profile (N);
-      Set_Restriction (Boolean_Entry_Barriers,       N);
+      Set_Restriction (Simple_Barriers,              N);
       Set_Restriction (No_Select_Statements,         N);
       Set_Restriction (No_Calendar,                  N);
       Set_Restriction (No_Entry_Queue,               N);
@@ -468,7 +468,7 @@ package body Restrict is
       Set_Restriction (No_Task_Allocators,           N);
       Set_Restriction (No_Dynamic_Priorities,        N);
       Set_Restriction (No_Terminate_Alternatives,    N);
-      Set_Restriction (No_Dynamic_Interrupts,        N);
+      Set_Restriction (No_Dynamic_Attachment,        N);
       Set_Restriction (No_Protected_Type_Allocators, N);
       Set_Restriction (No_Local_Protected_Objects,   N);
       Set_Restriction (No_Requeue_Statements,        N);
index 0d2f72f350d03ab8487c50aa02a0e48e8e5e30f3..9029620b1f3ca1859fc0049b36a69210b728ee40 100644 (file)
@@ -104,9 +104,9 @@ package Restrict is
    --  (which is why this restriction itself is excluded from the list).
 
    Implementation_Restriction : array (All_Restrictions) of Boolean :=
-     (Boolean_Entry_Barriers             => True,
+     (Simple_Barriers                    => True,
       No_Calendar                        => True,
-      No_Dynamic_Interrupts              => True,
+      No_Dynamic_Attachment              => True,
       No_Enumeration_Maps                => True,
       No_Entry_Calls_In_Elaboration_Code => True,
       No_Entry_Queue                     => True,
index f677fab890eea4d087245a94c60d83859110700c..b43da3db60310a6ddee6d80b7618902edb47dfc5 100644 (file)
@@ -174,6 +174,23 @@ package body Rtsfind is
    --  used if you are sure that the message comes directly or indirectly from
    --  a call to the RTE function.
 
+   ------------------------
+   -- Entity_Not_Defined --
+   ------------------------
+
+   procedure Entity_Not_Defined (Id : RE_Id) is
+   begin
+      if No_Run_Time_Mode then
+         RTE_Error_Msg ("|construct not allowed in no run time mode");
+      elsif Configurable_Run_Time_Mode then
+         RTE_Error_Msg ("|construct not allowed in this configuration>");
+      else
+         RTE_Error_Msg ("run-time configuration error");
+      end if;
+
+      Output_Entity_Name (Id, "not defined");
+   end Entity_Not_Defined;
+
    -------------------
    -- Get_Unit_Name --
    -------------------
@@ -403,23 +420,6 @@ package body Rtsfind is
         Chars (Sel) in Text_IO_Package_Name;
    end Is_Text_IO_Kludge_Unit;
 
-   ------------------------
-   -- Entity_Not_Defined --
-   ------------------------
-
-   procedure Entity_Not_Defined (Id : RE_Id) is
-   begin
-      if No_Run_Time_Mode then
-         RTE_Error_Msg ("|construct not allowed in no run time mode");
-      elsif Configurable_Run_Time_Mode then
-         RTE_Error_Msg ("|construct not allowed in this configuration>");
-      else
-         RTE_Error_Msg ("run-time configuration error");
-      end if;
-
-      Output_Entity_Name (Id, "not defined");
-   end Entity_Not_Defined;
-
    ---------------
    -- Load_Fail --
    ---------------
@@ -1046,6 +1046,15 @@ package body Rtsfind is
       end if;
    end RTE_Error_Msg;
 
+   ----------------
+   -- RTU_Loaded --
+   ----------------
+
+   function RTU_Loaded (U : RTU_Id) return Boolean is
+   begin
+      return Present (RT_Unit_Table (U).Entity);
+   end RTU_Loaded;
+
    --------------------
    -- Text_IO_Kludge --
    --------------------
index b0eafd6ea7e6dddf160edcd2c784e171d083cb53..511242909d26035148f4a012792205b399e31baf 100644 (file)
@@ -2712,6 +2712,12 @@ package Rtsfind is
    --  exception and without generating an error message, i.e. if the
    --  call will obtain the desired entity without any problems.
 
+   function RTU_Loaded (U : RTU_Id) return Boolean;
+   pragma Inline (RTU_Loaded);
+   --  Returns true if indicated unit has already been successfully loaded.
+   --  If the unit has not been loaded, returns False. Note that this does
+   --  not mean that an attempt to load it subsequently would fail.
+
    procedure Text_IO_Kludge (Nam : Node_Id);
    --  In Ada 83, and hence for compatibility in Ada 9X, package Text_IO has
    --  generic subpackages (e.g. Integer_IO). They really should be child
index 50229e82e6cec1e096da5635df9c27d88b369101..e3bdbff6876b1bca2d2f7a146301a777ab06c6ef 100644 (file)
@@ -57,7 +57,7 @@ package System.Rident is
 
       --  The following cases are checked for consistency in the binder
 
-     (Boolean_Entry_Barriers,                  -- GNAT (Ravenscar)
+     (Simple_Barriers,                         -- GNAT (Ravenscar)
       No_Abort_Statements,                     -- (RM D.7(5), H.4(3))
       No_Access_Subprograms,                   -- (RM H.4(17))
       No_Allocators,                           -- (RM H.4(7))
@@ -66,7 +66,7 @@ package System.Rident is
       No_Delay,                                -- (RM H.4(21))
       No_Direct_Boolean_Operators,             -- GNAT
       No_Dispatch,                             -- (RM H.4(19))
-      No_Dynamic_Interrupts,                   -- GNAT
+      No_Dynamic_Attachment,                   -- GNAT
       No_Dynamic_Priorities,                   -- (RM D.9(9))
       No_Enumeration_Maps,                     -- GNAT
       No_Entry_Calls_In_Elaboration_Code,      -- GNAT
@@ -144,7 +144,7 @@ package System.Rident is
       --  between different non-zero values.
 
       Max_Asynchronous_Select_Nesting,         -- (RM D.7(18), H.4(3))
-      Max_Entry_Queue_Depth,                   -- GNAT
+      Max_Entry_Queue_Length,                  -- GNAT
 
       --  The remaining entries are not checked at compile/bind time
 
@@ -154,19 +154,22 @@ package System.Rident is
 
    --  Synonyms permitted for historical purposes of compatibility
 
-   --   No_Requeue         synonym for No_Requeue_Statements
-   --   No_Task_Attributes synonym for No_Task_Attributes_Package
+   --   Boolean_Entry_Barriers synonym for Simple_Barriers
+   --   Max_Entry_Queue_Depth  synonym for Max_Entry_Queue_Length
+   --   No_Dynamic_Interrupts  synonym for No_Dynamic_Attachment
+   --   No_Requeue             synonym for No_Requeue_Statements
+   --   No_Task_Attributes     synonym for No_Task_Attributes_Package
 
    subtype All_Restrictions is Restriction_Id range
-     Boolean_Entry_Barriers .. Max_Storage_At_Blocking;
+     Simple_Barriers .. Max_Storage_At_Blocking;
    --  All restrictions (excluding only Not_A_Restriction_Id)
 
    subtype All_Boolean_Restrictions is Restriction_Id range
-     Boolean_Entry_Barriers .. No_Elaboration_Code;
+     Simple_Barriers .. No_Elaboration_Code;
    --  All restrictions which do not take a parameter
 
    subtype Partition_Boolean_Restrictions is All_Boolean_Restrictions range
-     Boolean_Entry_Barriers .. Static_Storage_Size;
+     Simple_Barriers .. Static_Storage_Size;
    --  Boolean restrictions that are checked for partition consistency.
    --  Note that all parameter restrictions are checked for partition
    --  consistency by default, so this distinction is only needed in the
@@ -186,7 +189,7 @@ package System.Rident is
 
    subtype Checked_Parameter_Restrictions is
      All_Parameter_Restrictions range
-       Max_Protected_Entries .. Max_Entry_Queue_Depth;
+       Max_Protected_Entries .. Max_Entry_Queue_Length;
    --  These are the parameter restrictions that can be at least partially
    --  checked at compile/binder time. Minimally, the compiler can detect
    --  violations of a restriction pragma with a value of zero reliably.
@@ -213,7 +216,7 @@ package System.Rident is
 
    subtype Checked_Zero_Parameter_Restrictions is
      Checked_Parameter_Restrictions range
-       Max_Asynchronous_Select_Nesting .. Max_Entry_Queue_Depth;
+       Max_Asynchronous_Select_Nesting .. Max_Entry_Queue_Length;
    --  Restrictions with parameters where the compiler can detect the use of
    --  the feature, and hence violations of a restriction specifying a value
    --  of zero, but cannot detect specific values other than zero/nonzero.
index e9d63ee25623b97239ae35feb039f06077561cb1..e5646e7f3388b02339745b7f1c0c96434bbdbf12 100644 (file)
@@ -212,7 +212,7 @@ package body Sem_Aggr is
    --  This procedure performs the semantic checks for an array aggregate.
    --  True is returned if the aggregate resolution succeeds.
    --  The procedure works by recursively checking each nested aggregate.
-   --  Specifically, after checking a sub-aggreate nested at the i-th level
+   --  Specifically, after checking a sub-aggregate nested at the i-th level
    --  we recursively check all the subaggregates at the i+1-st level (if any).
    --  Note that for aggregates analysis and resolution go hand in hand.
    --  Aggregate analysis has been delayed up to here and it is done while
index ffb0a2706dce99098f0fdb1165e13f054d7624ad..efbd935641e6f35a20c36775a6349e50b2229589 100644 (file)
@@ -5896,7 +5896,7 @@ package body Sem_Attr is
          Id  : RE_Id;
 
       begin
-         if Is_RTE (P_Root_Type, RE_Address) then
+         if Is_Descendent_Of_Address (Typ) then
             Id := RE_Type_Class_Address;
 
          elsif Is_Enumeration_Type (Typ) then
index e89041a0eb7f355490848515a62af6af933dc011..1da9566e0dde8abc53c474e2a113a75f82dc3efa 100644 (file)
@@ -45,6 +45,7 @@ with Snames;   use Snames;
 with Stand;    use Stand;
 with Sinfo;    use Sinfo;
 with Table;
+with Targparm; use Targparm;
 with Ttypes;   use Ttypes;
 with Tbuild;   use Tbuild;
 with Urealp;   use Urealp;
@@ -2699,8 +2700,19 @@ package body Sem_Ch13 is
                   end if;
                end if;
 
-            when N_Integer_Literal   |
-                 N_Real_Literal      |
+            when N_Integer_Literal   =>
+
+               --  If this is a rewritten unchecked conversion, in a system
+               --  where Address is an integer type, always use the base type
+               --  for a literal value. This is user-friendly and prevents
+               --  order-of-elaboration issues with instances of unchecked
+               --  conversion.
+
+               if Nkind (Original_Node (Nod)) = N_Function_Call then
+                  Set_Etype (Nod, Base_Type (Etype (Nod)));
+               end if;
+
+            when N_Real_Literal      |
                  N_String_Literal    |
                  N_Character_Literal =>
                return;
@@ -3068,10 +3080,19 @@ package body Sem_Ch13 is
       then
          return 0;
 
-      --  Access types
+         --  Access types. Normally an access type cannot have a size smaller
+         --  than the size of System.Address. The exception is on VMS, where
+         --  we have short and long addresses, and it is possible for an access
+         --  type to have a short address size (and thus be less than the size
+         --  of System.Address itself). We simply skip the check for VMS, and
+         --  leave the back end to do the check.
 
       elsif Is_Access_Type (T) then
-         return System_Address_Size;
+         if OpenVMS_On_Target then
+            return 0;
+         else
+            return System_Address_Size;
+         end if;
 
       --  Floating-point types
 
index 42ebaef27861bbf00410d823442d3e551d9b7917..954d4d343cb562a54f221f9966ca67acb824bcdd 100644 (file)
@@ -4346,9 +4346,9 @@ package body Sem_Ch4 is
    --------------------------------
 
    procedure Remove_Abstract_Operations (N : Node_Id) is
-      I           : Interp_Index;
-      It          : Interp;
-      Abstract_Op : Entity_Id := Empty;
+      I            : Interp_Index;
+      It           : Interp;
+      Abstract_Op  : Entity_Id := Empty;
 
       --  AI-310: If overloaded, remove abstract non-dispatching
       --  operations. We activate this if either extensions are
@@ -4359,6 +4359,42 @@ package body Sem_Ch4 is
       --  subprograms are used to hide its operators, they will be
       --  truly hidden.
 
+      procedure Remove_Address_Interpretations;
+      --  Ambiguities may arise when the operands are literal and the
+      --  address operations in s-auxdec are visible. In that case, remove
+      --  the interpretation of a literal as Address, to retain the semantics
+      --  of Address as a private type.
+
+      ------------------------------------
+      -- Remove_Address_Intereprtations --
+      ------------------------------------
+
+      procedure Remove_Address_Interpretations is
+         Formal : Entity_Id;
+
+      begin
+         if Is_Overloaded (N) then
+            Get_First_Interp (N, I, It);
+            while Present (It.Nam) loop
+               Formal := First_Entity (It.Nam);
+
+               if Is_Descendent_Of_Address (Etype (Formal))
+                 or else
+                   (Present (Next_Entity (Formal))
+                      and then
+                        Is_Descendent_Of_Address
+                          (Etype (Next_Entity (Formal))))
+               then
+                  Remove_Interp (I);
+               end if;
+
+               Get_Next_Interp (I, It);
+            end loop;
+         end if;
+      end Remove_Address_Interpretations;
+
+   --  Start of processing for Remove_Abstract_Operations
+
    begin
       if Is_Overloaded (N) then
          Get_First_Interp (N, I, It);
@@ -4388,17 +4424,21 @@ package body Sem_Ch4 is
          if No (Abstract_Op) then
             return;
 
+            --  Remove address interpretations if we have a universal
+            --  interpretation. This avoids literals being interpreted
+            --  as type Address, which is never appropriate.
+
          elsif Nkind (N) in N_Op then
             if Nkind (N) in N_Unary_Op
               and then Present (Universal_Interpretation (Right_Opnd (N)))
             then
-               return;
+               Remove_Address_Interpretations;
 
             elsif Nkind (N) in N_Binary_Op
               and then Present (Universal_Interpretation (Right_Opnd (N)))
               and then Present (Universal_Interpretation (Left_Opnd  (N)))
             then
-               return;
+               Remove_Address_Interpretations;
 
             else
                Get_First_Interp (N, I, It);
@@ -4428,12 +4468,14 @@ package body Sem_Ch4 is
                    (No (Next (Arg1))
                      or else Present (Universal_Interpretation (Next (Arg1))))
                then
-                  return;
+                  Remove_Address_Interpretations;
 
                else
                   Get_First_Interp (N, I, It);
                   while Present (It.Nam) loop
-                     if Scope (It.Nam) = Standard_Standard then
+                     if Scope (It.Nam) = Standard_Standard
+                       and then It.Typ = Base_Type (Etype (Abstract_Op))
+                     then
                         Remove_Interp (I);
                      end if;
 
index 7dcf2787101affc03652b0a99c3b3a55bc908eb7..b7c3cafa0b5965689e61766e34f76ad3eacd7926 100644 (file)
@@ -888,7 +888,7 @@ package body Sem_Prag is
               ("argument of pragma% must be entity name", Arg1);
 
          elsif Prag_Id = Pragma_Interrupt_Handler then
-            Check_Restriction (No_Dynamic_Interrupts, N);
+            Check_Restriction (No_Dynamic_Attachment, N);
          end if;
 
          declare
@@ -3276,10 +3276,61 @@ package body Sem_Prag is
                   Error_Pragma_Arg
                     ("invalid form for restriction", Arg);
 
+               --  Deal with synonyms. This should be done more cleanly ???
+
                else
+                  --  Boolean_Entry_Barriers is a synonym of Simple_Barriers
+
+                  if Chars (Expr) = Name_Boolean_Entry_Barriers then
+                     Check_Restriction
+                       (No_Implementation_Restrictions, Arg);
+                     Set_Restriction (Simple_Barriers, N);
+                     Set_Warning (Simple_Barriers);
+
+                  --  Max_Entry_Queue_Depth is a synonym of
+                  --  Max_Entry_Queue_Length
+
+                  elsif Chars (Expr) = Name_Max_Entry_Queue_Depth then
+                     Analyze_And_Resolve (Expr, Any_Integer);
+
+                     if not Is_OK_Static_Expression (Expr) then
+                        Flag_Non_Static_Expr
+                          ("value must be static expression!", Expr);
+                        raise Pragma_Exit;
+
+                     elsif not Is_Integer_Type (Etype (Expr))
+                       or else Expr_Value (Expr) < 0
+                     then
+                        Error_Pragma_Arg
+                          ("value must be non-negative integer", Arg);
+
+                     --  Restriction pragma is active
+
+                     else
+                        Val := Expr_Value (Expr);
+
+                        if not UI_Is_In_Int_Range (Val) then
+                           Error_Pragma_Arg
+                             ("pragma ignored, value too large?", Arg);
+                        else
+                           Set_Restriction (Max_Entry_Queue_Length, N,
+                                            Integer (UI_To_Int (Val)));
+                           Set_Warning (Max_Entry_Queue_Length);
+                        end if;
+                     end if;
+
+                  --  No_Dynamic_Interrupts is a synonym for
+                  --  No_Dynamic_Attachment
+
+                  elsif Chars (Expr) = Name_No_Dynamic_Interrupts then
+                     Check_Restriction
+                       (No_Implementation_Restrictions, Arg);
+                     Set_Restriction (No_Dynamic_Attachment, N);
+                     Set_Warning (No_Dynamic_Attachment);
+
                   --  No_Requeue is a synonym for No_Requeue_Statements
 
-                  if Chars (Expr) = Name_No_Requeue then
+                  elsif Chars (Expr) = Name_No_Requeue then
                      Check_Restriction
                        (No_Implementation_Restrictions, Arg);
                      Set_Restriction (No_Requeue_Statements, N);
index 9799860cf13f611e80c6ea6bcc13d7772608d71a..275e9584993e622ffebc5c6c892630857b4f0fec 100644 (file)
@@ -4487,7 +4487,7 @@ package body Sem_Res is
       --  call at all violates a specified nesting depth of zero.
 
       if Is_Protected_Type (Scope (Nam)) then
-         Check_Restriction (Max_Entry_Queue_Depth, N);
+         Check_Restriction (Max_Entry_Queue_Length, N);
       end if;
 
       --  Use context type to disambiguate a protected function that can be
index f005c75151a496cb31f737eb88fa531d1c87405f..0951d8413cdd512b2ff8ae74d141ba0bad1820e7 100644 (file)
@@ -42,6 +42,7 @@ with Nmake;    use Nmake;
 with Output;   use Output;
 with Opt;      use Opt;
 with Restrict; use Restrict;
+with Rtsfind; use Rtsfind;
 with Scans;    use Scans;
 with Scn;      use Scn;
 with Sem;      use Sem;
@@ -3380,6 +3381,88 @@ package body Sem_Util is
         and then Prefix (P) = N;
    end Is_Dereferenced;
 
+   ----------------------
+   -- Is_Descendent_Of --
+   ----------------------
+
+   function Is_Descendent_Of (T1 : Entity_Id; T2 : Entity_Id) return Boolean is
+      T    : Entity_Id;
+      Etyp : Entity_Id;
+
+   begin
+      pragma Assert (Nkind (T1) in N_Entity);
+      pragma Assert (Nkind (T2) in N_Entity);
+
+      T := Base_Type (T1);
+
+      --  Immediate return if the types match
+
+      if T = T2 then
+         return True;
+
+      --  Comment needed here ???
+
+      elsif Ekind (T) = E_Class_Wide_Type then
+         return Etype (T) = T2;
+
+      --  All other cases
+
+      else
+         loop
+            Etyp := Etype (T);
+
+            --  Done if we found the type we are looking for
+
+            if Etyp = T2 then
+               return True;
+
+            --  Done if no more derivations to check
+
+            elsif T = T1 then
+               return False;
+
+            --  Following test catches error cases resulting from prev errors
+
+            elsif No (Etyp) then
+               return False;
+
+            elsif Is_Private_Type (T) and then Etyp = Full_View (T) then
+               return False;
+
+            elsif Is_Private_Type (Etyp) and then Full_View (Etyp) = T then
+               return False;
+            end if;
+
+            --  Return if no further entries to check
+
+            if T = Base_Type (T1) or else T = T1 then
+               return False;
+            end if;
+         end loop;
+      end if;
+
+      raise Program_Error;
+   end Is_Descendent_Of;
+
+   ------------------------------
+   -- Is_Descendent_Of_Address --
+   ------------------------------
+
+   function Is_Descendent_Of_Address (T1 : Entity_Id) return Boolean is
+   begin
+      --  If Address has not been loaded, answer must be False
+
+      if not RTU_Loaded (System) then
+         return False;
+
+      --  Otherwise we can get the entity we are interested in without
+      --  causing an unwanted dependency on System, and do the test.
+
+      else
+         return Is_Descendent_Of (T1, Base_Type (RTE (RE_Address)));
+      end if;
+   end Is_Descendent_Of_Address;
+
    --------------
    -- Is_False --
    --------------
index 9a35d8db75bc863a591ccc173d9009473c483bf8..d85c35c1e88f4cdcef633e906289c2491a39f5ee 100644 (file)
@@ -259,28 +259,28 @@ package Sem_Util is
       Governed_By   : List_Id;
       Into          : Elist_Id;
       Report_Errors : out Boolean);
-   --  The purpose of this procedure is to gather the valid components
-   --  in a record type according to the values of its discriminants, in order
-   --  to validate the components of a record aggregate.
+   --  The purpose of this procedure is to gather the valid components in a
+   --  record type according to the values of its discriminants, in order to
+   --  validate the components of a record aggregate.
    --
    --    Typ is the type of the aggregate when its constrained discriminants
    --      need to be collected, otherwise it is Empty.
    --
    --    Comp_List is an N_Component_List node.
    --
-   --    Governed_By is a list of N_Component_Association nodes,
-   --     where each choice list contains the name of a discriminant and
-   --     the expression field gives its value. The values of the
-   --     discriminants governing the (possibly nested) variant parts in
-   --     Comp_List are found in this Component_Association List.
+   --    Governed_By is a list of N_Component_Association nodes, where each
+   --     choice list contains the name of a discriminant and the expression
+   --     field gives its value. The values of the discriminants governing
+   --     the (possibly nested) variant parts in Comp_List are found in this
+   --     Component_Association List.
    --
-   --    Into is the list where the valid components are appended.
-   --     Note that Into need not be an Empty list. If it's not, components
-   --     are attached to its tail.
+   --    Into is the list where the valid components are appended. Note that
+   --     Into need not be an Empty list. If it's not, components are attached
+   --     to its tail.
+   --
+   --    Report_Errors is set to True if the values of the discriminants are
+   --     non-static.
    --
-   --    Report_Errors is set to True if the values of the discriminants
-   --     are non-static.
-
    --  This procedure is also used when building a record subtype. If the
    --  discriminant constraint of the subtype is static, the components of the
    --  subtype are only those of the variants selected by the values of the
@@ -442,6 +442,16 @@ package Sem_Util is
    --  of the access value (selected/indexed component, explicit dereference
    --  or a slice), and false otherwise.
 
+   function Is_Descendent_Of (T1 : Entity_Id; T2 : Entity_Id) return Boolean;
+   --  Returns True if type T1 is a descendent of type T2, and false otherwise.
+   --  This is the RM definition, a type is a descendent of another type if it
+   --  is the same type or is derived from a descendent of the other type.
+
+   function Is_Descendent_Of_Address (T1 : Entity_Id) return Boolean;
+   --  Returns True if type T1 is a descendent of Address or its base type.
+   --  Similar to calling Is_Descendent_Of with Base_Type (RTE (RE_Address))
+   --  except that it avoids creating an unconditional dependency on System.
+
    function Is_False (U : Uint) return Boolean;
    --  The argument is a Uint value which is the Boolean'Pos value of a
    --  Boolean operand (i.e. is either 0 for False, or 1 for True). This
index 5717ce6318ea6fd8b45731fb7307ce04005f98a2..d764320be368a71715adc03b25b0da7a98844cee 100644 (file)
@@ -319,6 +319,7 @@ package body Snames is
      "win32#" &
      "as_is#" &
      "body_file_name#" &
+     "boolean_entry_barriers#" &
      "casing#" &
      "code#" &
      "component#" &
@@ -340,6 +341,7 @@ package body Snames is
      "internal#" &
      "link_name#" &
      "lowercase#" &
+     "max_entry_queue_depth#" &
      "max_size#" &
      "mechanism#" &
      "mixedcase#" &
@@ -350,6 +352,7 @@ package body Snames is
      "on#" &
      "parameter_types#" &
      "reference#" &
+     "no_dynamic_interrupts#" &
      "no_requeue#" &
      "no_task_attributes#" &
      "restricted#" &
index 6a9a58e5f1fa816044faa74749fddbd0b389428b..402a791ef637796c8b51bcc0ca5b76de2fc8c983 100644 (file)
@@ -517,66 +517,69 @@ package Snames is
 
    Name_As_Is                          : constant Name_Id := N + 260;
    Name_Body_File_Name                 : constant Name_Id := N + 261;
-   Name_Casing                         : constant Name_Id := N + 262;
-   Name_Code                           : constant Name_Id := N + 263;
-   Name_Component                      : constant Name_Id := N + 264;
-   Name_Component_Size_4               : constant Name_Id := N + 265;
-   Name_Copy                           : constant Name_Id := N + 266;
-   Name_D_Float                        : constant Name_Id := N + 267;
-   Name_Descriptor                     : constant Name_Id := N + 268;
-   Name_Dot_Replacement                : constant Name_Id := N + 269;
-   Name_Dynamic                        : constant Name_Id := N + 270;
-   Name_Entity                         : constant Name_Id := N + 271;
-   Name_External_Name                  : constant Name_Id := N + 272;
-   Name_First_Optional_Parameter       : constant Name_Id := N + 273;
-   Name_Form                           : constant Name_Id := N + 274;
-   Name_G_Float                        : constant Name_Id := N + 275;
-   Name_Gcc                            : constant Name_Id := N + 276;
-   Name_Gnat                           : constant Name_Id := N + 277;
-   Name_GPL                            : constant Name_Id := N + 278;
-   Name_IEEE_Float                     : constant Name_Id := N + 279;
-   Name_Internal                       : constant Name_Id := N + 280;
-   Name_Link_Name                      : constant Name_Id := N + 281;
-   Name_Lowercase                      : constant Name_Id := N + 282;
-   Name_Max_Size                       : constant Name_Id := N + 283;
-   Name_Mechanism                      : constant Name_Id := N + 284;
-   Name_Mixedcase                      : constant Name_Id := N + 285;
-   Name_Modified_GPL                   : constant Name_Id := N + 286;
-   Name_Name                           : constant Name_Id := N + 287;
-   Name_NCA                            : constant Name_Id := N + 288;
-   Name_No                             : constant Name_Id := N + 289;
-   Name_On                             : constant Name_Id := N + 290;
-   Name_Parameter_Types                : constant Name_Id := N + 291;
-   Name_Reference                      : constant Name_Id := N + 292;
-   Name_No_Requeue                     : constant Name_Id := N + 293;
-   Name_No_Task_Attributes             : constant Name_Id := N + 294;
-   Name_Restricted                     : constant Name_Id := N + 295;
-   Name_Result_Mechanism               : constant Name_Id := N + 296;
-   Name_Result_Type                    : constant Name_Id := N + 297;
-   Name_Runtime                        : constant Name_Id := N + 298;
-   Name_SB                             : constant Name_Id := N + 299;
-   Name_Secondary_Stack_Size           : constant Name_Id := N + 300;
-   Name_Section                        : constant Name_Id := N + 301;
-   Name_Semaphore                      : constant Name_Id := N + 302;
-   Name_Spec_File_Name                 : constant Name_Id := N + 303;
-   Name_Static                         : constant Name_Id := N + 304;
-   Name_Stack_Size                     : constant Name_Id := N + 305;
-   Name_Subunit_File_Name              : constant Name_Id := N + 306;
-   Name_Task_Stack_Size_Default        : constant Name_Id := N + 307;
-   Name_Task_Type                      : constant Name_Id := N + 308;
-   Name_Time_Slicing_Enabled           : constant Name_Id := N + 309;
-   Name_Top_Guard                      : constant Name_Id := N + 310;
-   Name_UBA                            : constant Name_Id := N + 311;
-   Name_UBS                            : constant Name_Id := N + 312;
-   Name_UBSB                           : constant Name_Id := N + 313;
-   Name_Unit_Name                      : constant Name_Id := N + 314;
-   Name_Unknown                        : constant Name_Id := N + 315;
-   Name_Unrestricted                   : constant Name_Id := N + 316;
-   Name_Uppercase                      : constant Name_Id := N + 317;
-   Name_User                           : constant Name_Id := N + 318;
-   Name_VAX_Float                      : constant Name_Id := N + 319;
-   Name_VMS                            : constant Name_Id := N + 320;
-   Name_Working_Storage                : constant Name_Id := N + 321;
+   Name_Boolean_Entry_Barriers         : constant Name_Id := N + 262;
+   Name_Casing                         : constant Name_Id := N + 263;
+   Name_Code                           : constant Name_Id := N + 264;
+   Name_Component                      : constant Name_Id := N + 265;
+   Name_Component_Size_4               : constant Name_Id := N + 266;
+   Name_Copy                           : constant Name_Id := N + 267;
+   Name_D_Float                        : constant Name_Id := N + 268;
+   Name_Descriptor                     : constant Name_Id := N + 269;
+   Name_Dot_Replacement                : constant Name_Id := N + 270;
+   Name_Dynamic                        : constant Name_Id := N + 271;
+   Name_Entity                         : constant Name_Id := N + 272;
+   Name_External_Name                  : constant Name_Id := N + 273;
+   Name_First_Optional_Parameter       : constant Name_Id := N + 274;
+   Name_Form                           : constant Name_Id := N + 275;
+   Name_G_Float                        : constant Name_Id := N + 276;
+   Name_Gcc                            : constant Name_Id := N + 277;
+   Name_Gnat                           : constant Name_Id := N + 278;
+   Name_GPL                            : constant Name_Id := N + 279;
+   Name_IEEE_Float                     : constant Name_Id := N + 280;
+   Name_Internal                       : constant Name_Id := N + 281;
+   Name_Link_Name                      : constant Name_Id := N + 282;
+   Name_Lowercase                      : constant Name_Id := N + 283;
+   Name_Max_Entry_Queue_Depth          : constant Name_Id := N + 284;
+   Name_Max_Size                       : constant Name_Id := N + 285;
+   Name_Mechanism                      : constant Name_Id := N + 286;
+   Name_Mixedcase                      : constant Name_Id := N + 287;
+   Name_Modified_GPL                   : constant Name_Id := N + 288;
+   Name_Name                           : constant Name_Id := N + 289;
+   Name_NCA                            : constant Name_Id := N + 290;
+   Name_No                             : constant Name_Id := N + 291;
+   Name_On                             : constant Name_Id := N + 292;
+   Name_Parameter_Types                : constant Name_Id := N + 293;
+   Name_Reference                      : constant Name_Id := N + 294;
+   Name_No_Dynamic_Interrupts          : constant Name_Id := N + 295;
+   Name_No_Requeue                     : constant Name_Id := N + 296;
+   Name_No_Task_Attributes             : constant Name_Id := N + 297;
+   Name_Restricted                     : constant Name_Id := N + 298;
+   Name_Result_Mechanism               : constant Name_Id := N + 299;
+   Name_Result_Type                    : constant Name_Id := N + 300;
+   Name_Runtime                        : constant Name_Id := N + 301;
+   Name_SB                             : constant Name_Id := N + 302;
+   Name_Secondary_Stack_Size           : constant Name_Id := N + 303;
+   Name_Section                        : constant Name_Id := N + 304;
+   Name_Semaphore                      : constant Name_Id := N + 305;
+   Name_Spec_File_Name                 : constant Name_Id := N + 306;
+   Name_Static                         : constant Name_Id := N + 307;
+   Name_Stack_Size                     : constant Name_Id := N + 308;
+   Name_Subunit_File_Name              : constant Name_Id := N + 309;
+   Name_Task_Stack_Size_Default        : constant Name_Id := N + 310;
+   Name_Task_Type                      : constant Name_Id := N + 311;
+   Name_Time_Slicing_Enabled           : constant Name_Id := N + 312;
+   Name_Top_Guard                      : constant Name_Id := N + 313;
+   Name_UBA                            : constant Name_Id := N + 314;
+   Name_UBS                            : constant Name_Id := N + 315;
+   Name_UBSB                           : constant Name_Id := N + 316;
+   Name_Unit_Name                      : constant Name_Id := N + 317;
+   Name_Unknown                        : constant Name_Id := N + 318;
+   Name_Unrestricted                   : constant Name_Id := N + 319;
+   Name_Uppercase                      : constant Name_Id := N + 320;
+   Name_User                           : constant Name_Id := N + 321;
+   Name_VAX_Float                      : constant Name_Id := N + 322;
+   Name_VMS                            : constant Name_Id := N + 323;
+   Name_Working_Storage                : constant Name_Id := N + 324;
 
    --  Names of recognized attributes. The entries with the comment "Ada 83"
    --  are attributes that are defined in Ada 83, but not in Ada 95. These
@@ -590,158 +593,158 @@ package Snames is
    --  The entries marked VMS are recognized only in OpenVMS implementations
    --  of GNAT, and are treated as illegal in all other contexts.
 
-   First_Attribute_Name                : constant Name_Id := N + 322;
-   Name_Abort_Signal                   : constant Name_Id := N + 322;  -- GNAT
-   Name_Access                         : constant Name_Id := N + 323;
-   Name_Address                        : constant Name_Id := N + 324;
-   Name_Address_Size                   : constant Name_Id := N + 325;  -- GNAT
-   Name_Aft                            : constant Name_Id := N + 326;
-   Name_Alignment                      : constant Name_Id := N + 327;
-   Name_Asm_Input                      : constant Name_Id := N + 328;  -- GNAT
-   Name_Asm_Output                     : constant Name_Id := N + 329;  -- GNAT
-   Name_AST_Entry                      : constant Name_Id := N + 330;  -- VMS
-   Name_Bit                            : constant Name_Id := N + 331;  -- GNAT
-   Name_Bit_Order                      : constant Name_Id := N + 332;
-   Name_Bit_Position                   : constant Name_Id := N + 333;  -- GNAT
-   Name_Body_Version                   : constant Name_Id := N + 334;
-   Name_Callable                       : constant Name_Id := N + 335;
-   Name_Caller                         : constant Name_Id := N + 336;
-   Name_Code_Address                   : constant Name_Id := N + 337;  -- GNAT
-   Name_Component_Size                 : constant Name_Id := N + 338;
-   Name_Compose                        : constant Name_Id := N + 339;
-   Name_Constrained                    : constant Name_Id := N + 340;
-   Name_Count                          : constant Name_Id := N + 341;
-   Name_Default_Bit_Order              : constant Name_Id := N + 342; -- GNAT
-   Name_Definite                       : constant Name_Id := N + 343;
-   Name_Delta                          : constant Name_Id := N + 344;
-   Name_Denorm                         : constant Name_Id := N + 345;
-   Name_Digits                         : constant Name_Id := N + 346;
-   Name_Elaborated                     : constant Name_Id := N + 347; -- GNAT
-   Name_Emax                           : constant Name_Id := N + 348; -- Ada 83
-   Name_Enum_Rep                       : constant Name_Id := N + 349; -- GNAT
-   Name_Epsilon                        : constant Name_Id := N + 350; -- Ada 83
-   Name_Exponent                       : constant Name_Id := N + 351;
-   Name_External_Tag                   : constant Name_Id := N + 352;
-   Name_First                          : constant Name_Id := N + 353;
-   Name_First_Bit                      : constant Name_Id := N + 354;
-   Name_Fixed_Value                    : constant Name_Id := N + 355; -- GNAT
-   Name_Fore                           : constant Name_Id := N + 356;
-   Name_Has_Discriminants              : constant Name_Id := N + 357; -- GNAT
-   Name_Identity                       : constant Name_Id := N + 358;
-   Name_Img                            : constant Name_Id := N + 359; -- GNAT
-   Name_Integer_Value                  : constant Name_Id := N + 360; -- GNAT
-   Name_Large                          : constant Name_Id := N + 361; -- Ada 83
-   Name_Last                           : constant Name_Id := N + 362;
-   Name_Last_Bit                       : constant Name_Id := N + 363;
-   Name_Leading_Part                   : constant Name_Id := N + 364;
-   Name_Length                         : constant Name_Id := N + 365;
-   Name_Machine_Emax                   : constant Name_Id := N + 366;
-   Name_Machine_Emin                   : constant Name_Id := N + 367;
-   Name_Machine_Mantissa               : constant Name_Id := N + 368;
-   Name_Machine_Overflows              : constant Name_Id := N + 369;
-   Name_Machine_Radix                  : constant Name_Id := N + 370;
-   Name_Machine_Rounds                 : constant Name_Id := N + 371;
-   Name_Machine_Size                   : constant Name_Id := N + 372; -- GNAT
-   Name_Mantissa                       : constant Name_Id := N + 373; -- Ada 83
-   Name_Max_Size_In_Storage_Elements   : constant Name_Id := N + 374;
-   Name_Maximum_Alignment              : constant Name_Id := N + 375; -- GNAT
-   Name_Mechanism_Code                 : constant Name_Id := N + 376; -- GNAT
-   Name_Model_Emin                     : constant Name_Id := N + 377;
-   Name_Model_Epsilon                  : constant Name_Id := N + 378;
-   Name_Model_Mantissa                 : constant Name_Id := N + 379;
-   Name_Model_Small                    : constant Name_Id := N + 380;
-   Name_Modulus                        : constant Name_Id := N + 381;
-   Name_Null_Parameter                 : constant Name_Id := N + 382; -- GNAT
-   Name_Object_Size                    : constant Name_Id := N + 383; -- GNAT
-   Name_Partition_ID                   : constant Name_Id := N + 384;
-   Name_Passed_By_Reference            : constant Name_Id := N + 385; -- GNAT
-   Name_Pool_Address                   : constant Name_Id := N + 386;
-   Name_Pos                            : constant Name_Id := N + 387;
-   Name_Position                       : constant Name_Id := N + 388;
-   Name_Range                          : constant Name_Id := N + 389;
-   Name_Range_Length                   : constant Name_Id := N + 390; -- GNAT
-   Name_Round                          : constant Name_Id := N + 391;
-   Name_Safe_Emax                      : constant Name_Id := N + 392; -- Ada 83
-   Name_Safe_First                     : constant Name_Id := N + 393;
-   Name_Safe_Large                     : constant Name_Id := N + 394; -- Ada 83
-   Name_Safe_Last                      : constant Name_Id := N + 395;
-   Name_Safe_Small                     : constant Name_Id := N + 396; -- Ada 83
-   Name_Scale                          : constant Name_Id := N + 397;
-   Name_Scaling                        : constant Name_Id := N + 398;
-   Name_Signed_Zeros                   : constant Name_Id := N + 399;
-   Name_Size                           : constant Name_Id := N + 400;
-   Name_Small                          : constant Name_Id := N + 401;
-   Name_Storage_Size                   : constant Name_Id := N + 402;
-   Name_Storage_Unit                   : constant Name_Id := N + 403; -- GNAT
-   Name_Tag                            : constant Name_Id := N + 404;
-   Name_Target_Name                    : constant Name_Id := N + 405; -- GNAT
-   Name_Terminated                     : constant Name_Id := N + 406;
-   Name_To_Address                     : constant Name_Id := N + 407; -- GNAT
-   Name_Type_Class                     : constant Name_Id := N + 408; -- GNAT
-   Name_UET_Address                    : constant Name_Id := N + 409; -- GNAT
-   Name_Unbiased_Rounding              : constant Name_Id := N + 410;
-   Name_Unchecked_Access               : constant Name_Id := N + 411;
-   Name_Unconstrained_Array            : constant Name_Id := N + 412;
-   Name_Universal_Literal_String       : constant Name_Id := N + 413; -- GNAT
-   Name_Unrestricted_Access            : constant Name_Id := N + 414; -- GNAT
-   Name_VADS_Size                      : constant Name_Id := N + 415; -- GNAT
-   Name_Val                            : constant Name_Id := N + 416;
-   Name_Valid                          : constant Name_Id := N + 417;
-   Name_Value_Size                     : constant Name_Id := N + 418; -- GNAT
-   Name_Version                        : constant Name_Id := N + 419;
-   Name_Wchar_T_Size                   : constant Name_Id := N + 420; -- GNAT
-   Name_Wide_Width                     : constant Name_Id := N + 421;
-   Name_Width                          : constant Name_Id := N + 422;
-   Name_Word_Size                      : constant Name_Id := N + 423; -- GNAT
+   First_Attribute_Name                : constant Name_Id := N + 325;
+   Name_Abort_Signal                   : constant Name_Id := N + 325;  -- GNAT
+   Name_Access                         : constant Name_Id := N + 326;
+   Name_Address                        : constant Name_Id := N + 327;
+   Name_Address_Size                   : constant Name_Id := N + 328;  -- GNAT
+   Name_Aft                            : constant Name_Id := N + 329;
+   Name_Alignment                      : constant Name_Id := N + 330;
+   Name_Asm_Input                      : constant Name_Id := N + 331;  -- GNAT
+   Name_Asm_Output                     : constant Name_Id := N + 332;  -- GNAT
+   Name_AST_Entry                      : constant Name_Id := N + 333;  -- VMS
+   Name_Bit                            : constant Name_Id := N + 334;  -- GNAT
+   Name_Bit_Order                      : constant Name_Id := N + 335;
+   Name_Bit_Position                   : constant Name_Id := N + 336;  -- GNAT
+   Name_Body_Version                   : constant Name_Id := N + 337;
+   Name_Callable                       : constant Name_Id := N + 338;
+   Name_Caller                         : constant Name_Id := N + 339;
+   Name_Code_Address                   : constant Name_Id := N + 340;  -- GNAT
+   Name_Component_Size                 : constant Name_Id := N + 341;
+   Name_Compose                        : constant Name_Id := N + 342;
+   Name_Constrained                    : constant Name_Id := N + 343;
+   Name_Count                          : constant Name_Id := N + 344;
+   Name_Default_Bit_Order              : constant Name_Id := N + 345; -- GNAT
+   Name_Definite                       : constant Name_Id := N + 346;
+   Name_Delta                          : constant Name_Id := N + 347;
+   Name_Denorm                         : constant Name_Id := N + 348;
+   Name_Digits                         : constant Name_Id := N + 349;
+   Name_Elaborated                     : constant Name_Id := N + 350; -- GNAT
+   Name_Emax                           : constant Name_Id := N + 351; -- Ada 83
+   Name_Enum_Rep                       : constant Name_Id := N + 352; -- GNAT
+   Name_Epsilon                        : constant Name_Id := N + 353; -- Ada 83
+   Name_Exponent                       : constant Name_Id := N + 354;
+   Name_External_Tag                   : constant Name_Id := N + 355;
+   Name_First                          : constant Name_Id := N + 356;
+   Name_First_Bit                      : constant Name_Id := N + 357;
+   Name_Fixed_Value                    : constant Name_Id := N + 358; -- GNAT
+   Name_Fore                           : constant Name_Id := N + 359;
+   Name_Has_Discriminants              : constant Name_Id := N + 360; -- GNAT
+   Name_Identity                       : constant Name_Id := N + 361;
+   Name_Img                            : constant Name_Id := N + 362; -- GNAT
+   Name_Integer_Value                  : constant Name_Id := N + 363; -- GNAT
+   Name_Large                          : constant Name_Id := N + 364; -- Ada 83
+   Name_Last                           : constant Name_Id := N + 365;
+   Name_Last_Bit                       : constant Name_Id := N + 366;
+   Name_Leading_Part                   : constant Name_Id := N + 367;
+   Name_Length                         : constant Name_Id := N + 368;
+   Name_Machine_Emax                   : constant Name_Id := N + 369;
+   Name_Machine_Emin                   : constant Name_Id := N + 370;
+   Name_Machine_Mantissa               : constant Name_Id := N + 371;
+   Name_Machine_Overflows              : constant Name_Id := N + 372;
+   Name_Machine_Radix                  : constant Name_Id := N + 373;
+   Name_Machine_Rounds                 : constant Name_Id := N + 374;
+   Name_Machine_Size                   : constant Name_Id := N + 375; -- GNAT
+   Name_Mantissa                       : constant Name_Id := N + 376; -- Ada 83
+   Name_Max_Size_In_Storage_Elements   : constant Name_Id := N + 377;
+   Name_Maximum_Alignment              : constant Name_Id := N + 378; -- GNAT
+   Name_Mechanism_Code                 : constant Name_Id := N + 379; -- GNAT
+   Name_Model_Emin                     : constant Name_Id := N + 380;
+   Name_Model_Epsilon                  : constant Name_Id := N + 381;
+   Name_Model_Mantissa                 : constant Name_Id := N + 382;
+   Name_Model_Small                    : constant Name_Id := N + 383;
+   Name_Modulus                        : constant Name_Id := N + 384;
+   Name_Null_Parameter                 : constant Name_Id := N + 385; -- GNAT
+   Name_Object_Size                    : constant Name_Id := N + 386; -- GNAT
+   Name_Partition_ID                   : constant Name_Id := N + 387;
+   Name_Passed_By_Reference            : constant Name_Id := N + 388; -- GNAT
+   Name_Pool_Address                   : constant Name_Id := N + 389;
+   Name_Pos                            : constant Name_Id := N + 390;
+   Name_Position                       : constant Name_Id := N + 391;
+   Name_Range                          : constant Name_Id := N + 392;
+   Name_Range_Length                   : constant Name_Id := N + 393; -- GNAT
+   Name_Round                          : constant Name_Id := N + 394;
+   Name_Safe_Emax                      : constant Name_Id := N + 395; -- Ada 83
+   Name_Safe_First                     : constant Name_Id := N + 396;
+   Name_Safe_Large                     : constant Name_Id := N + 397; -- Ada 83
+   Name_Safe_Last                      : constant Name_Id := N + 398;
+   Name_Safe_Small                     : constant Name_Id := N + 399; -- Ada 83
+   Name_Scale                          : constant Name_Id := N + 400;
+   Name_Scaling                        : constant Name_Id := N + 401;
+   Name_Signed_Zeros                   : constant Name_Id := N + 402;
+   Name_Size                           : constant Name_Id := N + 403;
+   Name_Small                          : constant Name_Id := N + 404;
+   Name_Storage_Size                   : constant Name_Id := N + 405;
+   Name_Storage_Unit                   : constant Name_Id := N + 406; -- GNAT
+   Name_Tag                            : constant Name_Id := N + 407;
+   Name_Target_Name                    : constant Name_Id := N + 408; -- GNAT
+   Name_Terminated                     : constant Name_Id := N + 409;
+   Name_To_Address                     : constant Name_Id := N + 410; -- GNAT
+   Name_Type_Class                     : constant Name_Id := N + 411; -- GNAT
+   Name_UET_Address                    : constant Name_Id := N + 412; -- GNAT
+   Name_Unbiased_Rounding              : constant Name_Id := N + 413;
+   Name_Unchecked_Access               : constant Name_Id := N + 414;
+   Name_Unconstrained_Array            : constant Name_Id := N + 415;
+   Name_Universal_Literal_String       : constant Name_Id := N + 416; -- GNAT
+   Name_Unrestricted_Access            : constant Name_Id := N + 417; -- GNAT
+   Name_VADS_Size                      : constant Name_Id := N + 418; -- GNAT
+   Name_Val                            : constant Name_Id := N + 419;
+   Name_Valid                          : constant Name_Id := N + 420;
+   Name_Value_Size                     : constant Name_Id := N + 421; -- GNAT
+   Name_Version                        : constant Name_Id := N + 422;
+   Name_Wchar_T_Size                   : constant Name_Id := N + 423; -- GNAT
+   Name_Wide_Width                     : constant Name_Id := N + 424;
+   Name_Width                          : constant Name_Id := N + 425;
+   Name_Word_Size                      : constant Name_Id := N + 426; -- GNAT
 
    --  Attributes that designate attributes returning renamable functions,
    --  i.e. functions that return other than a universal value.
 
-   First_Renamable_Function_Attribute  : constant Name_Id := N + 424;
-   Name_Adjacent                       : constant Name_Id := N + 424;
-   Name_Ceiling                        : constant Name_Id := N + 425;
-   Name_Copy_Sign                      : constant Name_Id := N + 426;
-   Name_Floor                          : constant Name_Id := N + 427;
-   Name_Fraction                       : constant Name_Id := N + 428;
-   Name_Image                          : constant Name_Id := N + 429;
-   Name_Input                          : constant Name_Id := N + 430;
-   Name_Machine                        : constant Name_Id := N + 431;
-   Name_Max                            : constant Name_Id := N + 432;
-   Name_Min                            : constant Name_Id := N + 433;
-   Name_Model                          : constant Name_Id := N + 434;
-   Name_Pred                           : constant Name_Id := N + 435;
-   Name_Remainder                      : constant Name_Id := N + 436;
-   Name_Rounding                       : constant Name_Id := N + 437;
-   Name_Succ                           : constant Name_Id := N + 438;
-   Name_Truncation                     : constant Name_Id := N + 439;
-   Name_Value                          : constant Name_Id := N + 440;
-   Name_Wide_Image                     : constant Name_Id := N + 441;
-   Name_Wide_Value                     : constant Name_Id := N + 442;
-   Last_Renamable_Function_Attribute   : constant Name_Id := N + 442;
+   First_Renamable_Function_Attribute  : constant Name_Id := N + 427;
+   Name_Adjacent                       : constant Name_Id := N + 427;
+   Name_Ceiling                        : constant Name_Id := N + 428;
+   Name_Copy_Sign                      : constant Name_Id := N + 429;
+   Name_Floor                          : constant Name_Id := N + 430;
+   Name_Fraction                       : constant Name_Id := N + 431;
+   Name_Image                          : constant Name_Id := N + 432;
+   Name_Input                          : constant Name_Id := N + 433;
+   Name_Machine                        : constant Name_Id := N + 434;
+   Name_Max                            : constant Name_Id := N + 435;
+   Name_Min                            : constant Name_Id := N + 436;
+   Name_Model                          : constant Name_Id := N + 437;
+   Name_Pred                           : constant Name_Id := N + 438;
+   Name_Remainder                      : constant Name_Id := N + 439;
+   Name_Rounding                       : constant Name_Id := N + 440;
+   Name_Succ                           : constant Name_Id := N + 441;
+   Name_Truncation                     : constant Name_Id := N + 442;
+   Name_Value                          : constant Name_Id := N + 443;
+   Name_Wide_Image                     : constant Name_Id := N + 444;
+   Name_Wide_Value                     : constant Name_Id := N + 445;
+   Last_Renamable_Function_Attribute   : constant Name_Id := N + 445;
 
    --  Attributes that designate procedures
 
-   First_Procedure_Attribute           : constant Name_Id := N + 443;
-   Name_Output                         : constant Name_Id := N + 443;
-   Name_Read                           : constant Name_Id := N + 444;
-   Name_Write                          : constant Name_Id := N + 445;
-   Last_Procedure_Attribute            : constant Name_Id := N + 445;
+   First_Procedure_Attribute           : constant Name_Id := N + 446;
+   Name_Output                         : constant Name_Id := N + 446;
+   Name_Read                           : constant Name_Id := N + 447;
+   Name_Write                          : constant Name_Id := N + 448;
+   Last_Procedure_Attribute            : constant Name_Id := N + 448;
 
    --  Remaining attributes are ones that return entities
 
-   First_Entity_Attribute_Name         : constant Name_Id := N + 446;
-   Name_Elab_Body                      : constant Name_Id := N + 446; -- GNAT
-   Name_Elab_Spec                      : constant Name_Id := N + 447; -- GNAT
-   Name_Storage_Pool                   : constant Name_Id := N + 448;
+   First_Entity_Attribute_Name         : constant Name_Id := N + 449;
+   Name_Elab_Body                      : constant Name_Id := N + 449; -- GNAT
+   Name_Elab_Spec                      : constant Name_Id := N + 450; -- GNAT
+   Name_Storage_Pool                   : constant Name_Id := N + 451;
 
    --  These attributes are the ones that return types
 
-   First_Type_Attribute_Name           : constant Name_Id := N + 449;
-   Name_Base                           : constant Name_Id := N + 449;
-   Name_Class                          : constant Name_Id := N + 450;
-   Last_Type_Attribute_Name            : constant Name_Id := N + 450;
-   Last_Entity_Attribute_Name          : constant Name_Id := N + 450;
-   Last_Attribute_Name                 : constant Name_Id := N + 450;
+   First_Type_Attribute_Name           : constant Name_Id := N + 452;
+   Name_Base                           : constant Name_Id := N + 452;
+   Name_Class                          : constant Name_Id := N + 453;
+   Last_Type_Attribute_Name            : constant Name_Id := N + 453;
+   Last_Entity_Attribute_Name          : constant Name_Id := N + 453;
+   Last_Attribute_Name                 : constant Name_Id := N + 453;
 
    --  Names of recognized locking policy identifiers
 
@@ -749,10 +752,10 @@ package Snames is
    --  name (e.g. C for Ceiling_Locking). If new policy names are added,
    --  the first character must be distinct.
 
-   First_Locking_Policy_Name           : constant Name_Id := N + 451;
-   Name_Ceiling_Locking                : constant Name_Id := N + 451;
-   Name_Inheritance_Locking            : constant Name_Id := N + 452;
-   Last_Locking_Policy_Name            : constant Name_Id := N + 452;
+   First_Locking_Policy_Name           : constant Name_Id := N + 454;
+   Name_Ceiling_Locking                : constant Name_Id := N + 454;
+   Name_Inheritance_Locking            : constant Name_Id := N + 455;
+   Last_Locking_Policy_Name            : constant Name_Id := N + 455;
 
    --  Names of recognized queuing policy identifiers.
 
@@ -760,10 +763,10 @@ package Snames is
    --  name (e.g. F for FIFO_Queuing). If new policy names are added,
    --  the first character must be distinct.
 
-   First_Queuing_Policy_Name           : constant Name_Id := N + 453;
-   Name_FIFO_Queuing                   : constant Name_Id := N + 453;
-   Name_Priority_Queuing               : constant Name_Id := N + 454;
-   Last_Queuing_Policy_Name            : constant Name_Id := N + 454;
+   First_Queuing_Policy_Name           : constant Name_Id := N + 456;
+   Name_FIFO_Queuing                   : constant Name_Id := N + 456;
+   Name_Priority_Queuing               : constant Name_Id := N + 457;
+   Last_Queuing_Policy_Name            : constant Name_Id := N + 457;
 
    --  Names of recognized task dispatching policy identifiers
 
@@ -771,193 +774,193 @@ package Snames is
    --  name (e.g. F for FIFO_WIthinn_Priorities). If new policy names
    --  are added, the first character must be distinct.
 
-   First_Task_Dispatching_Policy_Name  : constant Name_Id := N + 455;
-   Name_FIFO_Within_Priorities         : constant Name_Id := N + 455;
-   Last_Task_Dispatching_Policy_Name   : constant Name_Id := N + 455;
+   First_Task_Dispatching_Policy_Name  : constant Name_Id := N + 458;
+   Name_FIFO_Within_Priorities         : constant Name_Id := N + 458;
+   Last_Task_Dispatching_Policy_Name   : constant Name_Id := N + 458;
 
    --  Names of recognized checks for pragma Suppress
 
-   First_Check_Name                    : constant Name_Id := N + 456;
-   Name_Access_Check                   : constant Name_Id := N + 456;
-   Name_Accessibility_Check            : constant Name_Id := N + 457;
-   Name_Discriminant_Check             : constant Name_Id := N + 458;
-   Name_Division_Check                 : constant Name_Id := N + 459;
-   Name_Elaboration_Check              : constant Name_Id := N + 460;
-   Name_Index_Check                    : constant Name_Id := N + 461;
-   Name_Length_Check                   : constant Name_Id := N + 462;
-   Name_Overflow_Check                 : constant Name_Id := N + 463;
-   Name_Range_Check                    : constant Name_Id := N + 464;
-   Name_Storage_Check                  : constant Name_Id := N + 465;
-   Name_Tag_Check                      : constant Name_Id := N + 466;
-   Name_All_Checks                     : constant Name_Id := N + 467;
-   Last_Check_Name                     : constant Name_Id := N + 467;
+   First_Check_Name                    : constant Name_Id := N + 459;
+   Name_Access_Check                   : constant Name_Id := N + 459;
+   Name_Accessibility_Check            : constant Name_Id := N + 460;
+   Name_Discriminant_Check             : constant Name_Id := N + 461;
+   Name_Division_Check                 : constant Name_Id := N + 462;
+   Name_Elaboration_Check              : constant Name_Id := N + 463;
+   Name_Index_Check                    : constant Name_Id := N + 464;
+   Name_Length_Check                   : constant Name_Id := N + 465;
+   Name_Overflow_Check                 : constant Name_Id := N + 466;
+   Name_Range_Check                    : constant Name_Id := N + 467;
+   Name_Storage_Check                  : constant Name_Id := N + 468;
+   Name_Tag_Check                      : constant Name_Id := N + 469;
+   Name_All_Checks                     : constant Name_Id := N + 470;
+   Last_Check_Name                     : constant Name_Id := N + 470;
 
    --  Names corresponding to reserved keywords, excluding those already
    --  declared in the attribute list (Access, Delta, Digits, Range).
 
-   Name_Abort                          : constant Name_Id := N + 468;
-   Name_Abs                            : constant Name_Id := N + 469;
-   Name_Accept                         : constant Name_Id := N + 470;
-   Name_And                            : constant Name_Id := N + 471;
-   Name_All                            : constant Name_Id := N + 472;
-   Name_Array                          : constant Name_Id := N + 473;
-   Name_At                             : constant Name_Id := N + 474;
-   Name_Begin                          : constant Name_Id := N + 475;
-   Name_Body                           : constant Name_Id := N + 476;
-   Name_Case                           : constant Name_Id := N + 477;
-   Name_Constant                       : constant Name_Id := N + 478;
-   Name_Declare                        : constant Name_Id := N + 479;
-   Name_Delay                          : constant Name_Id := N + 480;
-   Name_Do                             : constant Name_Id := N + 481;
-   Name_Else                           : constant Name_Id := N + 482;
-   Name_Elsif                          : constant Name_Id := N + 483;
-   Name_End                            : constant Name_Id := N + 484;
-   Name_Entry                          : constant Name_Id := N + 485;
-   Name_Exception                      : constant Name_Id := N + 486;
-   Name_Exit                           : constant Name_Id := N + 487;
-   Name_For                            : constant Name_Id := N + 488;
-   Name_Function                       : constant Name_Id := N + 489;
-   Name_Generic                        : constant Name_Id := N + 490;
-   Name_Goto                           : constant Name_Id := N + 491;
-   Name_If                             : constant Name_Id := N + 492;
-   Name_In                             : constant Name_Id := N + 493;
-   Name_Is                             : constant Name_Id := N + 494;
-   Name_Limited                        : constant Name_Id := N + 495;
-   Name_Loop                           : constant Name_Id := N + 496;
-   Name_Mod                            : constant Name_Id := N + 497;
-   Name_New                            : constant Name_Id := N + 498;
-   Name_Not                            : constant Name_Id := N + 499;
-   Name_Null                           : constant Name_Id := N + 500;
-   Name_Of                             : constant Name_Id := N + 501;
-   Name_Or                             : constant Name_Id := N + 502;
-   Name_Others                         : constant Name_Id := N + 503;
-   Name_Out                            : constant Name_Id := N + 504;
-   Name_Package                        : constant Name_Id := N + 505;
-   Name_Pragma                         : constant Name_Id := N + 506;
-   Name_Private                        : constant Name_Id := N + 507;
-   Name_Procedure                      : constant Name_Id := N + 508;
-   Name_Raise                          : constant Name_Id := N + 509;
-   Name_Record                         : constant Name_Id := N + 510;
-   Name_Rem                            : constant Name_Id := N + 511;
-   Name_Renames                        : constant Name_Id := N + 512;
-   Name_Return                         : constant Name_Id := N + 513;
-   Name_Reverse                        : constant Name_Id := N + 514;
-   Name_Select                         : constant Name_Id := N + 515;
-   Name_Separate                       : constant Name_Id := N + 516;
-   Name_Subtype                        : constant Name_Id := N + 517;
-   Name_Task                           : constant Name_Id := N + 518;
-   Name_Terminate                      : constant Name_Id := N + 519;
-   Name_Then                           : constant Name_Id := N + 520;
-   Name_Type                           : constant Name_Id := N + 521;
-   Name_Use                            : constant Name_Id := N + 522;
-   Name_When                           : constant Name_Id := N + 523;
-   Name_While                          : constant Name_Id := N + 524;
-   Name_With                           : constant Name_Id := N + 525;
-   Name_Xor                            : constant Name_Id := N + 526;
+   Name_Abort                          : constant Name_Id := N + 471;
+   Name_Abs                            : constant Name_Id := N + 472;
+   Name_Accept                         : constant Name_Id := N + 473;
+   Name_And                            : constant Name_Id := N + 474;
+   Name_All                            : constant Name_Id := N + 475;
+   Name_Array                          : constant Name_Id := N + 476;
+   Name_At                             : constant Name_Id := N + 477;
+   Name_Begin                          : constant Name_Id := N + 478;
+   Name_Body                           : constant Name_Id := N + 479;
+   Name_Case                           : constant Name_Id := N + 480;
+   Name_Constant                       : constant Name_Id := N + 481;
+   Name_Declare                        : constant Name_Id := N + 482;
+   Name_Delay                          : constant Name_Id := N + 483;
+   Name_Do                             : constant Name_Id := N + 484;
+   Name_Else                           : constant Name_Id := N + 485;
+   Name_Elsif                          : constant Name_Id := N + 486;
+   Name_End                            : constant Name_Id := N + 487;
+   Name_Entry                          : constant Name_Id := N + 488;
+   Name_Exception                      : constant Name_Id := N + 489;
+   Name_Exit                           : constant Name_Id := N + 490;
+   Name_For                            : constant Name_Id := N + 491;
+   Name_Function                       : constant Name_Id := N + 492;
+   Name_Generic                        : constant Name_Id := N + 493;
+   Name_Goto                           : constant Name_Id := N + 494;
+   Name_If                             : constant Name_Id := N + 495;
+   Name_In                             : constant Name_Id := N + 496;
+   Name_Is                             : constant Name_Id := N + 497;
+   Name_Limited                        : constant Name_Id := N + 498;
+   Name_Loop                           : constant Name_Id := N + 499;
+   Name_Mod                            : constant Name_Id := N + 500;
+   Name_New                            : constant Name_Id := N + 501;
+   Name_Not                            : constant Name_Id := N + 502;
+   Name_Null                           : constant Name_Id := N + 503;
+   Name_Of                             : constant Name_Id := N + 504;
+   Name_Or                             : constant Name_Id := N + 505;
+   Name_Others                         : constant Name_Id := N + 506;
+   Name_Out                            : constant Name_Id := N + 507;
+   Name_Package                        : constant Name_Id := N + 508;
+   Name_Pragma                         : constant Name_Id := N + 509;
+   Name_Private                        : constant Name_Id := N + 510;
+   Name_Procedure                      : constant Name_Id := N + 511;
+   Name_Raise                          : constant Name_Id := N + 512;
+   Name_Record                         : constant Name_Id := N + 513;
+   Name_Rem                            : constant Name_Id := N + 514;
+   Name_Renames                        : constant Name_Id := N + 515;
+   Name_Return                         : constant Name_Id := N + 516;
+   Name_Reverse                        : constant Name_Id := N + 517;
+   Name_Select                         : constant Name_Id := N + 518;
+   Name_Separate                       : constant Name_Id := N + 519;
+   Name_Subtype                        : constant Name_Id := N + 520;
+   Name_Task                           : constant Name_Id := N + 521;
+   Name_Terminate                      : constant Name_Id := N + 522;
+   Name_Then                           : constant Name_Id := N + 523;
+   Name_Type                           : constant Name_Id := N + 524;
+   Name_Use                            : constant Name_Id := N + 525;
+   Name_When                           : constant Name_Id := N + 526;
+   Name_While                          : constant Name_Id := N + 527;
+   Name_With                           : constant Name_Id := N + 528;
+   Name_Xor                            : constant Name_Id := N + 529;
 
    --  Names of intrinsic subprograms
 
    --  Note: Asm is missing from this list, since Asm is a legitimate
    --  convention name. So is To_Adress, which is a GNAT attribute.
 
-   First_Intrinsic_Name                : constant Name_Id := N + 527;
-   Name_Divide                         : constant Name_Id := N + 527;
-   Name_Enclosing_Entity               : constant Name_Id := N + 528;
-   Name_Exception_Information          : constant Name_Id := N + 529;
-   Name_Exception_Message              : constant Name_Id := N + 530;
-   Name_Exception_Name                 : constant Name_Id := N + 531;
-   Name_File                           : constant Name_Id := N + 532;
-   Name_Import_Address                 : constant Name_Id := N + 533;
-   Name_Import_Largest_Value           : constant Name_Id := N + 534;
-   Name_Import_Value                   : constant Name_Id := N + 535;
-   Name_Is_Negative                    : constant Name_Id := N + 536;
-   Name_Line                           : constant Name_Id := N + 537;
-   Name_Rotate_Left                    : constant Name_Id := N + 538;
-   Name_Rotate_Right                   : constant Name_Id := N + 539;
-   Name_Shift_Left                     : constant Name_Id := N + 540;
-   Name_Shift_Right                    : constant Name_Id := N + 541;
-   Name_Shift_Right_Arithmetic         : constant Name_Id := N + 542;
-   Name_Source_Location                : constant Name_Id := N + 543;
-   Name_Unchecked_Conversion           : constant Name_Id := N + 544;
-   Name_Unchecked_Deallocation         : constant Name_Id := N + 545;
-   Name_To_Pointer                     : constant Name_Id := N + 546;
-   Last_Intrinsic_Name                 : constant Name_Id := N + 546;
+   First_Intrinsic_Name                : constant Name_Id := N + 530;
+   Name_Divide                         : constant Name_Id := N + 530;
+   Name_Enclosing_Entity               : constant Name_Id := N + 531;
+   Name_Exception_Information          : constant Name_Id := N + 532;
+   Name_Exception_Message              : constant Name_Id := N + 533;
+   Name_Exception_Name                 : constant Name_Id := N + 534;
+   Name_File                           : constant Name_Id := N + 535;
+   Name_Import_Address                 : constant Name_Id := N + 536;
+   Name_Import_Largest_Value           : constant Name_Id := N + 537;
+   Name_Import_Value                   : constant Name_Id := N + 538;
+   Name_Is_Negative                    : constant Name_Id := N + 539;
+   Name_Line                           : constant Name_Id := N + 540;
+   Name_Rotate_Left                    : constant Name_Id := N + 541;
+   Name_Rotate_Right                   : constant Name_Id := N + 542;
+   Name_Shift_Left                     : constant Name_Id := N + 543;
+   Name_Shift_Right                    : constant Name_Id := N + 544;
+   Name_Shift_Right_Arithmetic         : constant Name_Id := N + 545;
+   Name_Source_Location                : constant Name_Id := N + 546;
+   Name_Unchecked_Conversion           : constant Name_Id := N + 547;
+   Name_Unchecked_Deallocation         : constant Name_Id := N + 548;
+   Name_To_Pointer                     : constant Name_Id := N + 549;
+   Last_Intrinsic_Name                 : constant Name_Id := N + 549;
 
    --  Reserved words used only in Ada 95
 
-   First_95_Reserved_Word              : constant Name_Id := N + 547;
-   Name_Abstract                       : constant Name_Id := N + 547;
-   Name_Aliased                        : constant Name_Id := N + 548;
-   Name_Protected                      : constant Name_Id := N + 549;
-   Name_Until                          : constant Name_Id := N + 550;
-   Name_Requeue                        : constant Name_Id := N + 551;
-   Name_Tagged                         : constant Name_Id := N + 552;
-   Last_95_Reserved_Word               : constant Name_Id := N + 552;
+   First_95_Reserved_Word              : constant Name_Id := N + 550;
+   Name_Abstract                       : constant Name_Id := N + 550;
+   Name_Aliased                        : constant Name_Id := N + 551;
+   Name_Protected                      : constant Name_Id := N + 552;
+   Name_Until                          : constant Name_Id := N + 553;
+   Name_Requeue                        : constant Name_Id := N + 554;
+   Name_Tagged                         : constant Name_Id := N + 555;
+   Last_95_Reserved_Word               : constant Name_Id := N + 555;
 
    subtype Ada_95_Reserved_Words is
      Name_Id range First_95_Reserved_Word .. Last_95_Reserved_Word;
 
    --  Miscellaneous names used in semantic checking
 
-   Name_Raise_Exception                : constant Name_Id := N + 553;
+   Name_Raise_Exception                : constant Name_Id := N + 556;
 
    --  Additional reserved words in GNAT Project Files
    --  Note that Name_External is already previously declared
 
-   Name_Binder                         : constant Name_Id := N + 554;
-   Name_Body_Suffix                    : constant Name_Id := N + 555;
-   Name_Builder                        : constant Name_Id := N + 556;
-   Name_Compiler                       : constant Name_Id := N + 557;
-   Name_Cross_Reference                : constant Name_Id := N + 558;
-   Name_Default_Switches               : constant Name_Id := N + 559;
-   Name_Exec_Dir                       : constant Name_Id := N + 560;
-   Name_Executable                     : constant Name_Id := N + 561;
-   Name_Executable_Suffix              : constant Name_Id := N + 562;
-   Name_Extends                        : constant Name_Id := N + 563;
-   Name_Finder                         : constant Name_Id := N + 564;
-   Name_Global_Configuration_Pragmas   : constant Name_Id := N + 565;
-   Name_Gnatls                         : constant Name_Id := N + 566;
-   Name_Gnatstub                       : constant Name_Id := N + 567;
-   Name_Implementation                 : constant Name_Id := N + 568;
-   Name_Implementation_Exceptions      : constant Name_Id := N + 569;
-   Name_Implementation_Suffix          : constant Name_Id := N + 570;
-   Name_Languages                      : constant Name_Id := N + 571;
-   Name_Library_Dir                    : constant Name_Id := N + 572;
-   Name_Library_Auto_Init              : constant Name_Id := N + 573;
-   Name_Library_GCC                    : constant Name_Id := N + 574;
-   Name_Library_Interface              : constant Name_Id := N + 575;
-   Name_Library_Kind                   : constant Name_Id := N + 576;
-   Name_Library_Name                   : constant Name_Id := N + 577;
-   Name_Library_Options                : constant Name_Id := N + 578;
-   Name_Library_Reference_Symbol_File  : constant Name_Id := N + 579;
-   Name_Library_Src_Dir                : constant Name_Id := N + 580;
-   Name_Library_Symbol_File            : constant Name_Id := N + 581;
-   Name_Library_Symbol_Policy          : constant Name_Id := N + 582;
-   Name_Library_Version                : constant Name_Id := N + 583;
-   Name_Linker                         : constant Name_Id := N + 584;
-   Name_Local_Configuration_Pragmas    : constant Name_Id := N + 585;
-   Name_Locally_Removed_Files          : constant Name_Id := N + 586;
-   Name_Naming                         : constant Name_Id := N + 587;
-   Name_Object_Dir                     : constant Name_Id := N + 588;
-   Name_Pretty_Printer                 : constant Name_Id := N + 589;
-   Name_Project                        : constant Name_Id := N + 590;
-   Name_Separate_Suffix                : constant Name_Id := N + 591;
-   Name_Source_Dirs                    : constant Name_Id := N + 592;
-   Name_Source_Files                   : constant Name_Id := N + 593;
-   Name_Source_List_File               : constant Name_Id := N + 594;
-   Name_Spec                           : constant Name_Id := N + 595;
-   Name_Spec_Suffix                    : constant Name_Id := N + 596;
-   Name_Specification                  : constant Name_Id := N + 597;
-   Name_Specification_Exceptions       : constant Name_Id := N + 598;
-   Name_Specification_Suffix           : constant Name_Id := N + 599;
-   Name_Switches                       : constant Name_Id := N + 600;
+   Name_Binder                         : constant Name_Id := N + 557;
+   Name_Body_Suffix                    : constant Name_Id := N + 558;
+   Name_Builder                        : constant Name_Id := N + 559;
+   Name_Compiler                       : constant Name_Id := N + 560;
+   Name_Cross_Reference                : constant Name_Id := N + 561;
+   Name_Default_Switches               : constant Name_Id := N + 562;
+   Name_Exec_Dir                       : constant Name_Id := N + 563;
+   Name_Executable                     : constant Name_Id := N + 564;
+   Name_Executable_Suffix              : constant Name_Id := N + 565;
+   Name_Extends                        : constant Name_Id := N + 566;
+   Name_Finder                         : constant Name_Id := N + 567;
+   Name_Global_Configuration_Pragmas   : constant Name_Id := N + 568;
+   Name_Gnatls                         : constant Name_Id := N + 569;
+   Name_Gnatstub                       : constant Name_Id := N + 570;
+   Name_Implementation                 : constant Name_Id := N + 571;
+   Name_Implementation_Exceptions      : constant Name_Id := N + 572;
+   Name_Implementation_Suffix          : constant Name_Id := N + 573;
+   Name_Languages                      : constant Name_Id := N + 574;
+   Name_Library_Dir                    : constant Name_Id := N + 575;
+   Name_Library_Auto_Init              : constant Name_Id := N + 576;
+   Name_Library_GCC                    : constant Name_Id := N + 577;
+   Name_Library_Interface              : constant Name_Id := N + 578;
+   Name_Library_Kind                   : constant Name_Id := N + 579;
+   Name_Library_Name                   : constant Name_Id := N + 580;
+   Name_Library_Options                : constant Name_Id := N + 581;
+   Name_Library_Reference_Symbol_File  : constant Name_Id := N + 582;
+   Name_Library_Src_Dir                : constant Name_Id := N + 583;
+   Name_Library_Symbol_File            : constant Name_Id := N + 584;
+   Name_Library_Symbol_Policy          : constant Name_Id := N + 585;
+   Name_Library_Version                : constant Name_Id := N + 586;
+   Name_Linker                         : constant Name_Id := N + 587;
+   Name_Local_Configuration_Pragmas    : constant Name_Id := N + 588;
+   Name_Locally_Removed_Files          : constant Name_Id := N + 589;
+   Name_Naming                         : constant Name_Id := N + 590;
+   Name_Object_Dir                     : constant Name_Id := N + 591;
+   Name_Pretty_Printer                 : constant Name_Id := N + 592;
+   Name_Project                        : constant Name_Id := N + 593;
+   Name_Separate_Suffix                : constant Name_Id := N + 594;
+   Name_Source_Dirs                    : constant Name_Id := N + 595;
+   Name_Source_Files                   : constant Name_Id := N + 596;
+   Name_Source_List_File               : constant Name_Id := N + 597;
+   Name_Spec                           : constant Name_Id := N + 598;
+   Name_Spec_Suffix                    : constant Name_Id := N + 599;
+   Name_Specification                  : constant Name_Id := N + 600;
+   Name_Specification_Exceptions       : constant Name_Id := N + 601;
+   Name_Specification_Suffix           : constant Name_Id := N + 602;
+   Name_Switches                       : constant Name_Id := N + 603;
    --  Other miscellaneous names used in front end
 
-   Name_Unaligned_Valid                : constant Name_Id := N + 601;
+   Name_Unaligned_Valid                : constant Name_Id := N + 604;
 
    --  Mark last defined name for consistency check in Snames body
 
-   Last_Predefined_Name                : constant Name_Id := N + 601;
+   Last_Predefined_Name                : constant Name_Id := N + 604;
 
    subtype Any_Operator_Name is Name_Id range
      First_Operator_Name .. Last_Operator_Name;