diff options
author | Arnaud Charlet <charlet@gcc.gnu.org> | 2004-05-03 13:58:34 +0200 |
---|---|---|
committer | Arnaud Charlet <charlet@gcc.gnu.org> | 2004-05-03 13:58:34 +0200 |
commit | 9f4fd324ab932c0fbb3bf28f7230f17236ba2daa (patch) | |
tree | c63309227b71a108f3774e414aacfd0be78c8d20 /gcc | |
parent | 178af0f39063ac9facc911211ab49dd274c0b851 (diff) | |
download | gcc-9f4fd324ab932c0fbb3bf28f7230f17236ba2daa.zip gcc-9f4fd324ab932c0fbb3bf28f7230f17236ba2daa.tar.gz gcc-9f4fd324ab932c0fbb3bf28f7230f17236ba2daa.tar.bz2 |
[multiple changes]
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
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ada/ChangeLog | 100 | ||||
-rw-r--r-- | gcc/ada/Make-lang.in | 682 | ||||
-rw-r--r-- | gcc/ada/Makefile.in | 8 | ||||
-rw-r--r-- | gcc/ada/a-exexpr.adb | 8 | ||||
-rw-r--r-- | gcc/ada/a-tags.adb | 32 | ||||
-rw-r--r-- | gcc/ada/a-tags.ads | 4 | ||||
-rw-r--r-- | gcc/ada/exp_ch2.adb | 8 | ||||
-rw-r--r-- | gcc/ada/exp_ch9.adb | 2 | ||||
-rw-r--r-- | gcc/ada/gnatbind.adb | 2 | ||||
-rw-r--r-- | gcc/ada/gprmake.adb | 36 | ||||
-rw-r--r-- | gcc/ada/lang-specs.h | 8 | ||||
-rw-r--r-- | gcc/ada/make.adb | 12 | ||||
-rw-r--r-- | gcc/ada/makegpr.adb | 3527 | ||||
-rw-r--r-- | gcc/ada/makegpr.ads | 35 | ||||
-rw-r--r-- | gcc/ada/restrict.adb | 6 | ||||
-rw-r--r-- | gcc/ada/restrict.ads | 4 | ||||
-rw-r--r-- | gcc/ada/rtsfind.adb | 43 | ||||
-rw-r--r-- | gcc/ada/rtsfind.ads | 6 | ||||
-rw-r--r-- | gcc/ada/s-rident.ads | 23 | ||||
-rw-r--r-- | gcc/ada/sem_aggr.adb | 2 | ||||
-rw-r--r-- | gcc/ada/sem_attr.adb | 2 | ||||
-rw-r--r-- | gcc/ada/sem_ch13.adb | 29 | ||||
-rw-r--r-- | gcc/ada/sem_ch4.adb | 56 | ||||
-rw-r--r-- | gcc/ada/sem_prag.adb | 55 | ||||
-rw-r--r-- | gcc/ada/sem_res.adb | 2 | ||||
-rw-r--r-- | gcc/ada/sem_util.adb | 83 | ||||
-rw-r--r-- | gcc/ada/sem_util.ads | 38 | ||||
-rw-r--r-- | gcc/ada/snames.adb | 3 | ||||
-rw-r--r-- | gcc/ada/snames.ads | 729 |
29 files changed, 4770 insertions, 775 deletions
diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog index 5daf8d4..d6c5534 100644 --- a/gcc/ada/ChangeLog +++ b/gcc/ada/ChangeLog @@ -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 diff --git a/gcc/ada/Make-lang.in b/gcc/ada/Make-lang.in index 755ba55..751bc03 100644 --- a/gcc/ada/Make-lang.in +++ b/gcc/ada/Make-lang.in @@ -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) ] ; \ @@ -640,6 +644,17 @@ ada.install-common: 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 \ $(RM) $(DESTDIR)$(bindir)/gpr2make$(exeext); \ @@ -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 diff --git a/gcc/ada/Makefile.in b/gcc/ada/Makefile.in index 13cf6836..41b5f5b 100644 --- a/gcc/ada/Makefile.in +++ b/gcc/ada/Makefile.in @@ -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 diff --git a/gcc/ada/a-exexpr.adb b/gcc/ada/a-exexpr.adb index ba554f9..b42b3fc 100644 --- a/gcc/ada/a-exexpr.adb +++ b/gcc/ada/a-exexpr.adb @@ -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 diff --git a/gcc/ada/a-tags.adb b/gcc/ada/a-tags.adb index a2e40f8..c232695 100644 --- a/gcc/ada/a-tags.adb +++ b/gcc/ada/a-tags.adb @@ -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; diff --git a/gcc/ada/a-tags.ads b/gcc/ada/a-tags.ads index 6dd97ff..6e6adbf 100644 --- a/gcc/ada/a-tags.ads +++ b/gcc/ada/a-tags.ads @@ -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; diff --git a/gcc/ada/exp_ch2.adb b/gcc/ada/exp_ch2.adb index bc8c2ff..5788109 100644 --- a/gcc/ada/exp_ch2.adb +++ b/gcc/ada/exp_ch2.adb @@ -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 diff --git a/gcc/ada/exp_ch9.adb b/gcc/ada/exp_ch9.adb index c712eac..d0eb439 100644 --- a/gcc/ada/exp_ch9.adb +++ b/gcc/ada/exp_ch9.adb @@ -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; ------------------------------------ diff --git a/gcc/ada/gnatbind.adb b/gcc/ada/gnatbind.adb index 755a34e..3dc76ef 100644 --- a/gcc/ada/gnatbind.adb +++ b/gcc/ada/gnatbind.adb @@ -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 index 0000000..dc8a659 --- /dev/null +++ b/gcc/ada/gprmake.adb @@ -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; diff --git a/gcc/ada/lang-specs.h b/gcc/ada/lang-specs.h index 46a862a..8cd85a8 100644 --- a/gcc/ada/lang-specs.h +++ b/gcc/ada/lang-specs.h @@ -32,13 +32,13 @@ {"@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}, diff --git a/gcc/ada/make.adb b/gcc/ada/make.adb index 149c1fc..d3f2da3 100644 --- a/gcc/ada/make.adb +++ b/gcc/ada/make.adb @@ -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 index 0000000..08a1f4d --- /dev/null +++ b/gcc/ada/makegpr.adb @@ -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 index 0000000..fc751e8 --- /dev/null +++ b/gcc/ada/makegpr.ads @@ -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; diff --git a/gcc/ada/restrict.adb b/gcc/ada/restrict.adb index 4e72227..e9a4a4b 100644 --- a/gcc/ada/restrict.adb +++ b/gcc/ada/restrict.adb @@ -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); diff --git a/gcc/ada/restrict.ads b/gcc/ada/restrict.ads index 0d2f72f..9029620 100644 --- a/gcc/ada/restrict.ads +++ b/gcc/ada/restrict.ads @@ -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, diff --git a/gcc/ada/rtsfind.adb b/gcc/ada/rtsfind.adb index f677fab..b43da3d 100644 --- a/gcc/ada/rtsfind.adb +++ b/gcc/ada/rtsfind.adb @@ -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 -- -------------------- diff --git a/gcc/ada/rtsfind.ads b/gcc/ada/rtsfind.ads index b0eafd6..5112429 100644 --- a/gcc/ada/rtsfind.ads +++ b/gcc/ada/rtsfind.ads @@ -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 diff --git a/gcc/ada/s-rident.ads b/gcc/ada/s-rident.ads index 50229e8..e3bdbff 100644 --- a/gcc/ada/s-rident.ads +++ b/gcc/ada/s-rident.ads @@ -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. diff --git a/gcc/ada/sem_aggr.adb b/gcc/ada/sem_aggr.adb index e9d63ee..e5646e7 100644 --- a/gcc/ada/sem_aggr.adb +++ b/gcc/ada/sem_aggr.adb @@ -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 diff --git a/gcc/ada/sem_attr.adb b/gcc/ada/sem_attr.adb index ffb0a27..efbd935 100644 --- a/gcc/ada/sem_attr.adb +++ b/gcc/ada/sem_attr.adb @@ -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 diff --git a/gcc/ada/sem_ch13.adb b/gcc/ada/sem_ch13.adb index e89041a..1da9566 100644 --- a/gcc/ada/sem_ch13.adb +++ b/gcc/ada/sem_ch13.adb @@ -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 diff --git a/gcc/ada/sem_ch4.adb b/gcc/ada/sem_ch4.adb index 42ebaef..954d4d3 100644 --- a/gcc/ada/sem_ch4.adb +++ b/gcc/ada/sem_ch4.adb @@ -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; diff --git a/gcc/ada/sem_prag.adb b/gcc/ada/sem_prag.adb index 7dcf278..b7c3caf 100644 --- a/gcc/ada/sem_prag.adb +++ b/gcc/ada/sem_prag.adb @@ -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); diff --git a/gcc/ada/sem_res.adb b/gcc/ada/sem_res.adb index 9799860..275e958 100644 --- a/gcc/ada/sem_res.adb +++ b/gcc/ada/sem_res.adb @@ -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 diff --git a/gcc/ada/sem_util.adb b/gcc/ada/sem_util.adb index f005c75..0951d84 100644 --- a/gcc/ada/sem_util.adb +++ b/gcc/ada/sem_util.adb @@ -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 -- -------------- diff --git a/gcc/ada/sem_util.ads b/gcc/ada/sem_util.ads index 9a35d8d..d85c35c 100644 --- a/gcc/ada/sem_util.ads +++ b/gcc/ada/sem_util.ads @@ -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 diff --git a/gcc/ada/snames.adb b/gcc/ada/snames.adb index 5717ce6..d764320 100644 --- a/gcc/ada/snames.adb +++ b/gcc/ada/snames.adb @@ -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#" & diff --git a/gcc/ada/snames.ads b/gcc/ada/snames.ads index 6a9a58e..402a791 100644 --- a/gcc/ada/snames.ads +++ b/gcc/ada/snames.ads @@ -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; |