+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
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); \
# 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) ] ; \
fi ; \
fi
-if [ -f gnat1$(exeext) ] ; \
+ then \
+ if [ -f gprmake-cross$(exeext) ] ; \
+ then \
+ $(RM) $(DESTDIR)$(bindir)/$(target_noncanonical)-gprmake$(exeext); \
+ $(INSTALL_PROGRAM) gprmake-cross$(exeext) $(DESTDIR)$(bindir)/$(target_noncanonical)-gprmake$(exeext); \
+ else \
+ $(RM) $(bindir)/gprmake$(exeext); \
+ $(INSTALL_PROGRAM) gprmake$(exeext) $(DESTDIR)$(bindir)/gprmake$(exeext); \
+ fi ; \
+ fi
+ -if [ -f gnat1$(exeext) ] ; \
then \
if [ -f gpr2make$(exeext) ] ; \
then \
-$(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/*
#
# 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 \
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 \
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 \
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 \
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 \
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 \
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 \
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 \
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 \
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 \
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 \
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 \
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 \
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 \
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 \
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 \
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 \
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 \
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 \
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 \
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 \
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 \
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 \
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 \
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 \
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 \
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 \
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 \
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 \
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 \
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 \
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 \
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 \
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 \
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 \
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 \
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 \
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 \
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 \
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 \
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 \
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 \
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 \
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 \
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 \
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 \
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 \
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 \
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 \
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 \
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 \
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 \
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 \
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 \
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 \
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 \
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 \
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 \
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 \
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 \
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 \
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 \
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 \
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 \
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 \
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 \
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 \
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 \
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 \
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 \
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 \
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 \
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 \
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 \
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 \
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 \
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 \
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 \
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 \
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 \
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 \
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 \
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 \
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 \
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 \
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 \
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 \
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 \
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 \
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 \
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 \
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 \
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 \
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 \
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 \
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 \
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 \
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 \
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 \
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 \
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 \
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 \
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 \
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 \
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 \
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 \
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 \
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 \
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 \
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 \
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 \
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 \
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 \
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 \
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 \
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 \
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 \
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 \
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 \
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 \
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 \
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 \
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 \
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 \
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 \
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 \
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 \
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 \
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 \
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 \
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 \
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 \
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 \
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
../../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.
$(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
-- --
-- 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 --
-- --
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;
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
-- 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
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
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 --
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;
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;
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;
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;
-- 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;
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;
-- 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
-- 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;
------------------------------------
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,
--- /dev/null
+------------------------------------------------------------------------------
+-- --
+-- 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;
{"@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},
-- 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.
-- 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
--- /dev/null
+------------------------------------------------------------------------------
+-- --
+-- 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;
--- /dev/null
+------------------------------------------------------------------------------
+-- --
+-- 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;
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)
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);
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);
-- (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,
-- 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 --
-------------------
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 --
---------------
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 --
--------------------
-- 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
-- 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))
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
-- 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
-- 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
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.
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.
-- 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
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
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;
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;
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
--------------------------------
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
-- 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);
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);
(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;
("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
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);
-- 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
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;
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 --
--------------
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
-- 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
"win32#" &
"as_is#" &
"body_file_name#" &
+ "boolean_entry_barriers#" &
"casing#" &
"code#" &
"component#" &
"internal#" &
"link_name#" &
"lowercase#" &
+ "max_entry_queue_depth#" &
"max_size#" &
"mechanism#" &
"mixedcase#" &
"on#" &
"parameter_types#" &
"reference#" &
+ "no_dynamic_interrupts#" &
"no_requeue#" &
"no_task_attributes#" &
"restricted#" &
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
-- 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
-- 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.
-- 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
-- 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;