summaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorcharlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4>2004-02-18 11:52:55 +0000
committercharlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4>2004-02-18 11:52:55 +0000
commit8b20af99cceb12742aa1581d0082be01934b3861 (patch)
treeab088861e5fc012e91fec0d42b6282779d593f5c /gcc
parentbfacbdb8e407d7c37e6bd588b2390c683facafa7 (diff)
downloadgcc-8b20af99cceb12742aa1581d0082be01934b3861.tar.gz
2004-02-18 Emmanuel Briot <briot@act-europe.fr>
* ali.ads, ali.adb (First_Sdep_Entry): No longer a constant, so that Scan_ALI can be used for multiple ALI files without reinitializing between calls. 2004-02-18 Robert Dewar <dewar@gnat.com> * debug.adb: Minor reformatting. 2004-02-18 Richard Kenner <kenner@vlsi1.ultra.nyu.edu> * decl.c (gnat_to_gnu_entity, case object): Set DECL_POINTER_ALIAS_SET to zero if there is an address clause. 2004-02-18 Thomas Quinot <quinot@act-europe.fr> * exp_util.adb (Side_Effect_Free): Any literal is side effects free. 2004-02-18 Gary Dismukes <dismukes@gnat.com> * layout.adb (Layout_Component_List): Revise generation of call to discriminant-checking function to pass selections of all of the type's discriminants rather than just the variant-controlling discriminant. 2004-02-18 Olivier Hainque <hainque@act-europe.fr> * 5gmastop.adb (Pop_Frame): Do not call exc_unwind, which is bound to fail in the current setup and triggers spurious system error messages. Pretend it occurred and failed instead. 2004-02-18 Vincent Celier <celier@gnat.com> * bld.adb: Mark FLDFLAGS as saved (Process_Declarative_Items): Add Linker'Linker_Options to FLDFLAGS when it is not the root project. Put each directory to be extended between double quotes to prevent it to be expanded on Windows. (Recursive_Process): Reset CFLAGS/CXXFLAGS to nothing before processing the project file. Set them back to their initial values if they have not been set in the project file. * gprcmd.adb: (Gprdebug, Debug): New global variables (Display_Command): New procedure (Usage): Document new command "linkopts" Call Display_Command when env var GPRDEBUG has the value "TRUE" Implement new command "linkopts" Remove quotes that may be around arguments for "extend" Always call Normalize_Pathname with arguments formatted for the platform * Makefile.generic: Link C/C++ mains with $(FLDFLAGS) Change @echo to @$(display) in target clean to be able to clean silently * Makefile.prolog: Save FLDFLAGS and give it an initial empty value * prj-part.adb (Project_Path_Name_Of): Do not put final result in canonical case. * prj-part.adb (Parse_Single_Project): Always call with From_Extended = Extending_All when current project is an extending all project. * vms_conv.adb (Output_File_Expected): New Boolean global variable, set to True only for LINK command, after Unix switch -o. (Process_Arguments): Set Output_File_Expected to True for LINK command after Unix switch -o. When Output_File_Expected is True, never add an extension to a file name. * 5vml-tgt.adb (Build_Dynamic_Library): Do not append "/OPTIONS" to the option file name, only to the --for-linker= switch. (Option_File_Name): If option file name do not end with ".opt", append "/OPTIONS". 2004-02-18 GNAT Script <nobody@gnat.com> * Make-lang.in: Makefile automatically updated git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@78024 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ada/5gmastop.adb22
-rw-r--r--gcc/ada/5vml-tgt.adb20
-rw-r--r--gcc/ada/ChangeLog75
-rw-r--r--gcc/ada/Make-lang.in299
-rw-r--r--gcc/ada/Makefile.generic26
-rw-r--r--gcc/ada/Makefile.prolog2
-rw-r--r--gcc/ada/ali.adb2
-rw-r--r--gcc/ada/ali.ads6
-rw-r--r--gcc/ada/bld.adb61
-rw-r--r--gcc/ada/debug.adb2
-rw-r--r--gcc/ada/decl.c8
-rw-r--r--gcc/ada/exp_util.adb9
-rw-r--r--gcc/ada/gprcmd.adb133
-rw-r--r--gcc/ada/layout.adb55
-rw-r--r--gcc/ada/prj-part.adb53
-rw-r--r--gcc/ada/vms_conv.adb23
16 files changed, 572 insertions, 224 deletions
diff --git a/gcc/ada/5gmastop.adb b/gcc/ada/5gmastop.adb
index d05a779a18e..480e3ead130 100644
--- a/gcc/ada/5gmastop.adb
+++ b/gcc/ada/5gmastop.adb
@@ -7,7 +7,7 @@
-- B o d y --
-- (Version for IRIX/MIPS) --
-- --
--- Copyright (C) 1999-2003 Free Software Foundation, Inc. --
+-- Copyright (C) 1999-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- --
@@ -301,7 +301,25 @@ package body System.Machine_State_Operations is
-- Lock_Task is used in many other places.
Lock_Task.all;
- Exc_Unwind (Scp);
+
+ -- ??? Calling exc_unwind in the current setup does not work and
+ -- triggers the emission of system warning messages. Why it does
+ -- not work remains to be investigated. Part of the problem is
+ -- probably a section naming issue (e.g. .eh_frame/.debug_frame).
+
+ -- Instead of letting the call take place for nothing and emit
+ -- messages we don't expect, we just arrange things to pretend it
+ -- occurred and failed.
+
+ -- ??? Until this is fixed, we shall document that the backtrace
+ -- computation facility does not work.
+
+ if False then
+ Exc_Unwind (Scp);
+ else
+ Scp.SC_PC := 0;
+ end if;
+
Unlock_Task.all;
if Scp.SC_PC = 0 or else Scp.SC_PC = 1 then
diff --git a/gcc/ada/5vml-tgt.adb b/gcc/ada/5vml-tgt.adb
index 835443723f9..f7479223f08 100644
--- a/gcc/ada/5vml-tgt.adb
+++ b/gcc/ada/5vml-tgt.adb
@@ -209,7 +209,9 @@ package body MLib.Tgt is
if Symbol_Data.Symbol_File = No_Name then
return "symvec.opt";
else
- return Get_Name_String (Symbol_Data.Symbol_File);
+ Get_Name_String (Symbol_Data.Symbol_File);
+ To_Lower (Name_Buffer (1 .. Name_Len));
+ return Name_Buffer (1 .. Name_Len);
end if;
end Option_File_Name;
@@ -244,8 +246,7 @@ package body MLib.Tgt is
Opt_File_Name : constant String := Option_File_Name;
Version : constant String := Version_String;
- For_Linker_Opt : constant String_Access :=
- new String'("--for-linker=" & Opt_File_Name);
+ For_Linker_Opt : String_Access;
-- Start of processing for Build_Dynamic_Library
@@ -258,6 +259,19 @@ package body MLib.Tgt is
Link_With_Shared_Libgcc := No_Shared_Libgcc_Switch'Access;
end if;
+ -- If option file name does not ends with ".opt", append "/OPTIONS"
+ -- to its specification for the VMS linker.
+
+ if Opt_File_Name'Length > 4
+ and then
+ Opt_File_Name (Opt_File_Name'Last - 3 .. Opt_File_Name'Last) = ".opt"
+ then
+ For_Linker_Opt := new String'("--for-linker=" & Opt_File_Name);
+ else
+ For_Linker_Opt :=
+ new String'("--for-linker=" & Opt_File_Name & "/OPTIONS");
+ end if;
+
VMS_Options (VMS_Options'First + 1) := For_Linker_Opt;
for J in Inter'Range loop
diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog
index 26931448138..1fa62593055 100644
--- a/gcc/ada/ChangeLog
+++ b/gcc/ada/ChangeLog
@@ -1,3 +1,78 @@
+2004-02-18 Emmanuel Briot <briot@act-europe.fr>
+
+ * ali.ads, ali.adb (First_Sdep_Entry): No longer a constant, so that
+ Scan_ALI can be used for multiple ALI files without reinitializing
+ between calls.
+
+2004-02-18 Robert Dewar <dewar@gnat.com>
+
+ * debug.adb: Minor reformatting.
+
+2004-02-18 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
+
+ * decl.c (gnat_to_gnu_entity, case object): Set DECL_POINTER_ALIAS_SET
+ to zero if there is an address clause.
+
+2004-02-18 Thomas Quinot <quinot@act-europe.fr>
+
+ * exp_util.adb (Side_Effect_Free): Any literal is side effects free.
+
+2004-02-18 Gary Dismukes <dismukes@gnat.com>
+
+ * layout.adb (Layout_Component_List): Revise generation of call to
+ discriminant-checking function to pass selections of all of the type's
+ discriminants rather than just the variant-controlling discriminant.
+
+2004-02-18 Olivier Hainque <hainque@act-europe.fr>
+
+ * 5gmastop.adb (Pop_Frame): Do not call exc_unwind, which is bound to
+ fail in the current setup and triggers spurious system error messages.
+ Pretend it occurred and failed instead.
+
+2004-02-18 Vincent Celier <celier@gnat.com>
+
+ * bld.adb: Mark FLDFLAGS as saved
+ (Process_Declarative_Items): Add Linker'Linker_Options to FLDFLAGS when
+ it is not the root project. Put each directory to be
+ extended between double quotes to prevent it to be expanded on Windows.
+ (Recursive_Process): Reset CFLAGS/CXXFLAGS to nothing before processing
+ the project file. Set them back to their initial values if they have not
+ been set in the project file.
+
+ * gprcmd.adb: (Gprdebug, Debug): New global variables
+ (Display_Command): New procedure
+ (Usage): Document new command "linkopts"
+ Call Display_Command when env var GPRDEBUG has the value "TRUE"
+ Implement new command "linkopts"
+ Remove quotes that may be around arguments for "extend"
+ Always call Normalize_Pathname with arguments formatted for the platform
+
+ * Makefile.generic: Link C/C++ mains with $(FLDFLAGS)
+ Change @echo to @$(display) in target clean to be able to clean silently
+
+ * Makefile.prolog: Save FLDFLAGS and give it an initial empty value
+
+ * prj-part.adb (Project_Path_Name_Of): Do not put final result in
+ canonical case.
+
+ * prj-part.adb (Parse_Single_Project): Always call with From_Extended
+ = Extending_All when current project is an extending all project.
+
+ * vms_conv.adb (Output_File_Expected): New Boolean global variable,
+ set to True only for LINK command, after Unix switch -o.
+ (Process_Arguments): Set Output_File_Expected to True for LINK command
+ after Unix switch -o. When Output_File_Expected is True, never add an
+ extension to a file name.
+
+ * 5vml-tgt.adb (Build_Dynamic_Library): Do not append "/OPTIONS" to the
+ option file name, only to the --for-linker= switch.
+ (Option_File_Name): If option file name do not end with ".opt", append
+ "/OPTIONS".
+
+2004-02-18 GNAT Script <nobody@gnat.com>
+
+ * Make-lang.in: Makefile automatically updated
+
2004-02-17 Matt Kraai <kraai@alumni.cmu.edu>
* Make-lang.in (stamp-sdefault): Do not depend on
diff --git a/gcc/ada/Make-lang.in b/gcc/ada/Make-lang.in
index a259654f930..188bd5a003b 100644
--- a/gcc/ada/Make-lang.in
+++ b/gcc/ada/Make-lang.in
@@ -1369,8 +1369,8 @@ ada/bindgen.o : ada/ada.ads ada/a-except.ads ada/ali.ads ada/alloc.ads \
ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb ada/s-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/targparm.ads ada/tree_io.ads ada/types.ads ada/uintp.ads \
- ada/unchconv.ads ada/unchdeal.ads
+ ada/targparm.ads ada/tree_io.ads ada/types.ads ada/unchconv.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 \
@@ -1406,19 +1406,19 @@ ada/checks.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/atree.ads \
ada/lib.ads ada/lib.adb ada/lib-list.adb ada/lib-load.ads \
ada/lib-sort.adb 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/rtsfind.adb ada/sem.ads \
- ada/sem_cat.ads ada/sem_ch7.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/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/restrict.adb ada/rident.ads ada/rtsfind.ads ada/rtsfind.adb \
+ ada/sem.ads ada/sem_cat.ads ada/sem_ch7.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/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/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 \
@@ -1565,24 +1565,25 @@ ada/exp_aggr.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/atree.ads \
ada/exp_aggr.ads ada/exp_aggr.adb ada/exp_ch11.ads ada/exp_ch2.ads \
ada/exp_ch3.ads ada/exp_ch7.ads ada/exp_ch9.ads ada/exp_tss.ads \
ada/exp_util.ads ada/exp_util.adb ada/expander.ads ada/fname.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/itypes.ads ada/lib.ads ada/lib.adb \
- ada/lib-list.adb ada/lib-sort.adb 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_ch3.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/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-exctab.adb \
- 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/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/itypes.ads \
+ ada/lib.ads ada/lib.adb ada/lib-list.adb ada/lib-sort.adb 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_cat.ads ada/sem_ch3.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/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-exctab.adb 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_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 \
@@ -1779,36 +1780,35 @@ ada/exp_ch5.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/atree.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/debug_a.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/expander.ads ada/fname.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/rident.ads \
+ 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_aggr.ads ada/sem_attr.ads ada/sem_cat.ads \
- ada/sem_ch12.ads ada/sem_ch13.ads ada/sem_ch4.ads ada/sem_ch6.ads \
- ada/sem_ch8.ads 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/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/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/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 \
@@ -2333,12 +2333,12 @@ ada/gnatbind.o : ada/ada.ads ada/a-except.ads ada/ali.ads ada/ali-util.ads \
ada/gnatvsn.ads ada/hostparm.ads ada/namet.ads ada/opt.ads \
ada/osint.ads ada/osint-b.ads ada/output.ads ada/rident.ads \
ada/switch.ads ada/switch-b.ads ada/system.ads ada/s-casuti.ads \
- ada/s-exctab.ads ada/s-htable.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-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/targparm.ads \
- ada/tree_io.ads ada/types.ads ada/uintp.ads ada/unchconv.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-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/targparm.ads ada/tree_io.ads ada/types.ads ada/unchconv.ads \
ada/unchdeal.ads
ada/gnatvsn.o : ada/gnatvsn.ads ada/gnatvsn.adb ada/system.ads \
@@ -3345,28 +3345,28 @@ 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/einfo.ads ada/einfo.adb ada/elists.ads ada/elists.adb \
ada/err_vars.ads ada/errout.ads ada/erroutc.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-hesora.ads ada/g-htable.ads \
- ada/g-os_lib.ads ada/g-string.ads ada/gnatvsn.ads ada/hostparm.ads \
- ada/interfac.ads ada/lib.ads ada/lib.adb ada/lib-list.adb \
- ada/lib-load.ads 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/scn.ads ada/scng.ads ada/scng.adb \
- ada/sem.ads ada/sem_cat.ads ada/sem_ch7.ads ada/sem_ch8.ads \
- ada/sem_elab.ads ada/sem_elab.adb ada/sem_eval.ads ada/sem_res.ads \
- ada/sem_type.ads ada/sem_util.ads ada/sem_util.adb ada/sinfo.ads \
- ada/sinfo.adb ada/sinput.ads ada/sinput.adb ada/snames.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/widechar.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-hesora.ads \
+ ada/g-htable.ads ada/g-os_lib.ads ada/g-string.ads ada/gnatvsn.ads \
+ ada/hostparm.ads ada/interfac.ads ada/lib.ads ada/lib.adb \
+ ada/lib-list.adb ada/lib-load.ads 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_cat.ads \
+ ada/sem_ch7.ads ada/sem_ch8.ads ada/sem_elab.ads ada/sem_elab.adb \
+ ada/sem_eval.ads ada/sem_res.ads ada/sem_type.ads ada/sem_util.ads \
+ ada/sem_util.adb ada/sinfo.ads ada/sinfo.adb ada/sinput.ads \
+ ada/sinput.adb ada/snames.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/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 \
@@ -3464,33 +3464,34 @@ ada/sem_prag.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/atree.ads \
ada/elists.ads ada/elists.adb ada/err_vars.ads ada/errout.ads \
ada/erroutc.ads ada/eval_fat.ads ada/exp_ch7.ads ada/exp_dist.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-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-writ.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/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_ch13.ads \
- ada/sem_ch3.ads ada/sem_ch4.ads ada/sem_ch6.ads ada/sem_ch8.ads \
- ada/sem_disp.ads ada/sem_dist.ads ada/sem_elab.ads ada/sem_elim.ads \
- ada/sem_eval.ads ada/sem_eval.adb ada/sem_intr.ads ada/sem_mech.ads \
- ada/sem_prag.ads ada/sem_prag.adb ada/sem_res.ads ada/sem_res.adb \
- ada/sem_type.ads ada/sem_util.ads ada/sem_util.adb ada/sem_vfpt.ads \
- ada/sem_warn.ads ada/sinfo.ads ada/sinfo.adb ada/sinfo-cn.ads \
- ada/sinput.ads ada/sinput.adb ada/snames.ads ada/snames.adb \
- ada/stand.ads ada/stringt.ads ada/stringt.adb ada/style.ads \
- ada/styleg.ads ada/styleg.adb ada/styleg-c.ads ada/stylesw.ads \
- ada/system.ads ada/s-carun8.ads ada/s-crc32.ads ada/s-exctab.ads \
- ada/s-exctab.adb 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/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/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-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-writ.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_ch13.ads ada/sem_ch3.ads ada/sem_ch4.ads \
+ ada/sem_ch6.ads ada/sem_ch8.ads ada/sem_disp.ads ada/sem_dist.ads \
+ ada/sem_elab.ads ada/sem_elim.ads ada/sem_eval.ads ada/sem_eval.adb \
+ ada/sem_intr.ads ada/sem_mech.ads ada/sem_prag.ads ada/sem_prag.adb \
+ ada/sem_res.ads ada/sem_res.adb ada/sem_type.ads ada/sem_util.ads \
+ ada/sem_util.adb ada/sem_vfpt.ads ada/sem_warn.ads ada/sinfo.ads \
+ ada/sinfo.adb ada/sinfo-cn.ads ada/sinput.ads ada/sinput.adb \
+ ada/snames.ads ada/snames.adb ada/stand.ads ada/stringt.ads \
+ ada/stringt.adb ada/style.ads ada/styleg.ads ada/styleg.adb \
+ ada/styleg-c.ads ada/stylesw.ads ada/system.ads ada/s-carun8.ads \
+ ada/s-crc32.ads ada/s-exctab.ads ada/s-exctab.adb 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/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/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 \
@@ -3498,29 +3499,30 @@ ada/sem_res.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/atree.ads \
ada/einfo.ads ada/einfo.adb ada/elists.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_tss.ads ada/exp_util.ads \
- ada/exp_util.adb ada/expander.ads ada/fname.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/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_ch4.ads ada/sem_ch6.ads ada/sem_ch8.ads ada/sem_disp.ads \
- ada/sem_dist.ads ada/sem_elab.ads ada/sem_eval.ads ada/sem_eval.adb \
- 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/snames.ads ada/sprint.ads \
- ada/stand.ads ada/stringt.ads ada/stringt.adb ada/style.ads \
- ada/styleg.ads ada/styleg.adb ada/styleg-c.ads ada/stylesw.ads \
- ada/system.ads ada/s-carun8.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/types.adb ada/uintp.ads ada/uintp.adb ada/uname.ads \
+ ada/exp_util.adb ada/expander.ads 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_aggr.ads ada/sem_attr.ads ada/sem_cat.ads ada/sem_ch4.ads \
+ ada/sem_ch6.ads ada/sem_ch8.ads ada/sem_disp.ads ada/sem_dist.ads \
+ ada/sem_elab.ads ada/sem_eval.ads ada/sem_eval.adb 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/snames.ads ada/sprint.ads ada/stand.ads \
+ ada/stringt.ads ada/stringt.adb ada/style.ads ada/styleg.ads \
+ ada/styleg.adb ada/styleg-c.ads ada/stylesw.ads ada/system.ads \
+ ada/s-carun8.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/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
@@ -3809,15 +3811,14 @@ ada/table.o : ada/debug.ads ada/gnat.ads ada/g-os_lib.ads ada/g-string.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-htable.ads ada/g-os_lib.ads \
- ada/g-string.ads ada/gnatvsn.ads ada/hostparm.ads ada/namet.ads \
- ada/namet.adb ada/opt.ads ada/osint.ads ada/output.ads ada/rident.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/targparm.adb ada/tree_io.ads \
- ada/types.ads ada/uintp.ads ada/uintp.adb ada/unchconv.ads \
+ ada/debug.ads ada/gnat.ads ada/g-os_lib.ads ada/g-string.ads \
+ ada/gnatvsn.ads ada/hostparm.ads ada/namet.ads ada/namet.adb \
+ ada/opt.ads ada/osint.ads ada/output.ads ada/rident.ads ada/system.ads \
+ ada/s-exctab.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/targparm.adb ada/tree_io.ads ada/types.ads ada/unchconv.ads \
ada/unchdeal.ads ada/widechar.ads
ada/tbuild.o : ada/ada.ads ada/a-except.ads ada/alloc.ads ada/atree.ads \
diff --git a/gcc/ada/Makefile.generic b/gcc/ada/Makefile.generic
index 61d0ff9e839..60f5bd5fd5a 100644
--- a/gcc/ada/Makefile.generic
+++ b/gcc/ada/Makefile.generic
@@ -349,8 +349,8 @@ else
link: $(EXEC_DIR)/$(EXEC) archive-objects
$(EXEC_DIR)/$(EXEC): $(OBJ_FILES)
- @$(display) $(LINKER) -o $(EXEC_DIR)/$(EXEC) $(OBJ_DIR)/$(MAIN_OBJECT) $(LDFLAGS)
- $(LINKER) -o $(EXEC_DIR)/$(EXEC) $(OBJ_DIR)/$(MAIN_OBJECT) $(LDFLAGS)
+ @$(display) $(LINKER) -o $(EXEC_DIR)/$(EXEC) $(OBJ_DIR)/$(MAIN_OBJECT) $(LDFLAGS) $(FLDFLAGS)
+ @$(LINKER) -o $(EXEC_DIR)/$(EXEC) $(OBJ_DIR)/$(MAIN_OBJECT) $(LDFLAGS) $(FLDFLAGS)
endif
endif
@@ -363,7 +363,7 @@ ifeq ($(strip $(filter-out c c++ ada,$(LANGUAGES))),)
ifeq ($(MAIN),ada)
# Ada main
link: $(LINKER) archive-objects force
- @(display) $(GNATMAKE) -b -l -P$(PROJECT_FILE) $(ADA_SOURCES)
+ @$(display) $(GNATMAKE) -b -l -P$(PROJECT_FILE) $(ADA_SOURCES)
@$(GNATMAKE) -b -l -P$(PROJECT_FILE) $(ADA_SOURCES) \
-largs $(LARGS) $(LDFLAGS)
@@ -376,15 +376,15 @@ else
# C/C++ main
link: $(LINKER) archive-objects force
- @(display) $(GNATMAKE) $(EXEC_RULE) -B -P$(PROJECT_FILE) $(ADA_SOURCES)
+ @$(display) $(GNATMAKE) $(EXEC_RULE) -B -P$(PROJECT_FILE) $(ADA_SOURCES)
@$(GNATMAKE) $(EXEC_RULE) -B -P$(PROJECT_FILE) $(ADA_SOURCES) \
- -largs $(MAIN_OBJECT) $(LARGS) $(LDFLAGS)
+ -largs $(MAIN_OBJECT) $(LARGS) $(LDFLAGS) $(FLDFLAGS)
internal-build: $(LINKER) archive-objects force
@$(display) $(GNATMAKE) -B -P$(PROJECT_FILE) $(ADA_SOURCES) $(EXEC_RULE) $(ADAFLAGS)
@$(GNATMAKE) $(EXEC_RULE) \
-B -P$(PROJECT_FILE) $(ADA_SOURCES) $(ADAFLAGS) \
- -largs $(MAIN_OBJECT) $(LARGS) $(LDFLAGS)
+ -largs $(MAIN_OBJECT) $(LARGS) $(LDFLAGS) $(FLDFLAGS)
endif
else
@@ -483,20 +483,20 @@ internal-c++ : $(CXX_OBJECTS)
.PHONY: force internal-clean internal-archive internal-build internal-compile internal-ada internal-c internal-c++ build compile clean ada c c++
internal-clean:
- @echo $(RM) $(OBJ_DIR)/*$(OBJ_EXT)
+ @$(display) $(RM) $(OBJ_DIR)/*$(OBJ_EXT)
@$(RM) $(OBJ_DIR)/*$(OBJ_EXT)
- @echo $(RM) $(OBJ_DIR)/*.ali
+ @$(display) $(RM) $(OBJ_DIR)/*.ali
@$(RM) $(OBJ_DIR)/*.ali
- @echo $(RM) $(OBJ_DIR)/b~*
+ @$(display) $(RM) $(OBJ_DIR)/b~*
@$(RM) $(OBJ_DIR)/b~*
- @echo $(RM) $(OBJ_DIR)/b_*
+ @$(display) $(RM) $(OBJ_DIR)/b_*
@$(RM) $(OBJ_DIR)/b_*
- @echo $(RM) $(OBJ_DIR)/*$(AR_EXT)
+ @$(display) $(RM) $(OBJ_DIR)/*$(AR_EXT)
@$(RM) $(OBJ_DIR)/*$(AR_EXT)
- @echo $(RM) $(OBJ_DIR)/*.d
+ @$(display) $(RM) $(OBJ_DIR)/*.d
@$(RM) $(OBJ_DIR)/*.d
ifneq ($(EXEC),)
- @echo $(RM) $(EXEC_DIR)/$(EXEC)
+ @$(display) $(RM) $(EXEC_DIR)/$(EXEC)
@$(RM) $(EXEC_DIR)/$(EXEC)
endif
diff --git a/gcc/ada/Makefile.prolog b/gcc/ada/Makefile.prolog
index cdad81fa6b0..83da2cd614e 100644
--- a/gcc/ada/Makefile.prolog
+++ b/gcc/ada/Makefile.prolog
@@ -40,6 +40,7 @@ GNATMAKE.saved:=$(GNATMAKE)
ADAFLAGS.saved:=$(ADAFLAGS)
CFLAGS.saved:=$(CFLAGS)
CXXFLAGS.saved:=$(CXXFLAGS)
+FLDFLAGS.saved:=$(FLDFLAGS)
LIBS.saved:=$(LIBS)
LDFLAGS.saved:=$(LDFLAGS)
ADA_SOURCES.saved:=$(ADA_SOURCES)
@@ -57,6 +58,7 @@ CXX_EXT:=.cc
AR_EXT=.a
OBJ_EXT=.o
CC=gcc
+FLDFLAGS:=
# Default target is to build (compile/bind/link)
# Target build is defined in Makefile.generic
diff --git a/gcc/ada/ali.adb b/gcc/ada/ali.adb
index 06055bad6a6..2e76ee13825 100644
--- a/gcc/ada/ali.adb
+++ b/gcc/ada/ali.adb
@@ -601,6 +601,8 @@ package body ALI is
-- Start of processing for Scan_ALI
begin
+ First_Sdep_Entry := Sdep.Last + 1;
+
-- Acquire lines to be ignored
if Read_Xref then
diff --git a/gcc/ada/ali.ads b/gcc/ada/ali.ads
index f789b0c3581..d04346de766 100644
--- a/gcc/ada/ali.ads
+++ b/gcc/ada/ali.ads
@@ -593,8 +593,10 @@ package ALI is
No_Sdep_Id : constant Sdep_Id := Sdep_Id'First;
-- Special value indicating no Sdep table entry
- First_Sdep_Entry : constant Sdep_Id := No_Sdep_Id + 1;
- -- Id of first actual entry in table
+ First_Sdep_Entry : Sdep_Id := No_Sdep_Id + 1;
+ -- Id of first Sdep entry for current ali file. This is initialized to
+ -- the first Sdep entry in the table, and then incremented appropriately
+ -- as successive ALI files are scanned.
type Sdep_Record is record
diff --git a/gcc/ada/bld.adb b/gcc/ada/bld.adb
index a86f299c6c9..fef76a02371 100644
--- a/gcc/ada/bld.adb
+++ b/gcc/ada/bld.adb
@@ -222,6 +222,7 @@ package body Bld is
Deps_Projects_String : aliased String := "DEPS_PROJECT";
Exec_String : aliased String := "EXEC";
Exec_Dir_String : aliased String := "EXEC_DIR";
+ Fldflags_String : aliased String := "FLDFLAGS";
Gnatmake_String : aliased String := "GNATMAKE";
Languages_String : aliased String := "LANGUAGES";
Ld_Flags_String : aliased String := "LD_FLAGS";
@@ -251,6 +252,7 @@ package body Bld is
Deps_Projects_String'Access,
Exec_String 'Access,
Exec_Dir_String 'Access,
+ Fldflags_String 'Access,
Gnatmake_String 'Access,
Languages_String 'Access,
Ld_Flags_String 'Access,
@@ -1426,7 +1428,8 @@ package body Bld is
(Pkg = No_Name
or else Pkg = Snames.Name_Naming
or else Pkg = Snames.Name_Compiler
- or else Pkg = Name_Ide);
+ or else Pkg = Name_Ide
+ or else Pkg = Snames.Name_Linker);
if Put_Declaration then
-- Some attributes are converted into reserved variables
@@ -1508,7 +1511,7 @@ package body Bld is
Put_Attribute (Project, Pkg, Item_Name, No_Name);
Put ("),$(shell gprcmd extend $(");
Put (Project_Name);
- Put_Line (".base_dir) '$(name)'))");
+ Put_Line (".base_dir) '""$(name)""'))");
elsif Item_Name = Snames.Name_Source_Files then
@@ -1959,6 +1962,38 @@ package body Bld is
end if;
end if;
end;
+
+ else
+ -- Other attribute are of no interest; suppress
+ -- their declarations.
+
+ Put_Declaration := False;
+ end if;
+
+ elsif Pkg = Snames.Name_Linker then
+ if Item_Name = Snames.Name_Linker_Options then
+ -- Only add linker options if this is not the root
+ -- project.
+
+ Put ("ifeq ($(");
+ Put (Project_Name);
+ Put (".root),False)");
+ New_Line;
+
+ -- Add the linker options to FLDFLAGS, in reverse
+ -- order.
+
+ Put (" FLDFLAGS:=$(shell gprcmd linkopts $(");
+ Put (Project_Name);
+ Put (".base_dir) $(");
+ Put_Attribute
+ (Project, Pkg, Item_Name, No_Name);
+ Put (")) $(FLDFLAGS)");
+ New_Line;
+
+ Put ("endif");
+ New_Line;
+
else
-- Other attribute are of no interest; suppress
-- their declarations.
@@ -2686,6 +2721,15 @@ package body Bld is
-- Set defaults to some variables
+ -- CFLAGS and CXXFLAGS are set by default to nothing.
+ -- Their initial values have been saved, If they are not set
+ -- by this project file, then they will be reset to their
+ -- initial values. This is to avoid "inheritance" of these
+ -- flags from an imported project file.
+
+ Put_Line ("CFLAGS:=");
+ Put_Line ("CXXFLAGS:=");
+
IO.Mark (Src_Files_Init);
Put_Line ("src_files.specified:=FALSE");
@@ -3345,6 +3389,19 @@ package body Bld is
end if;
end;
+ -- If CFLAGS/CXXFLAGS have not been set, set them back to
+ -- their initial values.
+
+ Put_Line ("ifeq ($(CFLAGS),)");
+ Put_Line (" CFLAGS:=$(CFLAGS.saved)");
+ Put_Line ("endif");
+ New_Line;
+
+ Put_Line ("ifeq ($(CXXFLAGS),)");
+ Put_Line (" CXXFLAGS:=$(CXXFLAGS.saved)");
+ Put_Line ("endif");
+ New_Line;
+
-- If this is the main Makefile, include Makefile.Generic
Put ("ifeq ($(");
diff --git a/gcc/ada/debug.adb b/gcc/ada/debug.adb
index 85f58ce64e3..436f380ed5c 100644
--- a/gcc/ada/debug.adb
+++ b/gcc/ada/debug.adb
@@ -470,7 +470,7 @@ package body Debug is
-- testing high integrity mode.
-- d.x No exception handlers in generated code. This causes exception
- -- handles to be eliminated from the generated code. They are still
+ -- handlers to be eliminated from the generated code. They are still
-- fully compiled and analyzed, they just get eliminated from the
-- code generation step.
diff --git a/gcc/ada/decl.c b/gcc/ada/decl.c
index ca7d78c5f9e..ce93a169811 100644
--- a/gcc/ada/decl.c
+++ b/gcc/ada/decl.c
@@ -1048,6 +1048,14 @@ gnat_to_gnu_entity (Entity_Id gnat_entity, tree gnu_expr, int definition)
DECL_BY_REF_P (gnu_decl) = used_by_ref;
DECL_POINTS_TO_READONLY_P (gnu_decl) = used_by_ref && inner_const_flag;
+ /* If we have an address clause and we've made this indirect, it's
+ not enough to merely mark the type as volatile since volatile
+ references only conflict with other volatile references while this
+ reference must conflict with all other references. So ensure that
+ the dereferenced value has alias set 0. */
+ if (Present (Address_Clause (gnat_entity)) && used_by_ref)
+ DECL_POINTER_ALIAS_SET (gnu_decl) = 0;
+
if (definition && DECL_SIZE (gnu_decl) != 0
&& gnu_block_stack != 0
&& TREE_VALUE (gnu_block_stack) != 0
diff --git a/gcc/ada/exp_util.adb b/gcc/ada/exp_util.adb
index 69f93610504..d5a7a41cc96 100644
--- a/gcc/ada/exp_util.adb
+++ b/gcc/ada/exp_util.adb
@@ -3348,6 +3348,15 @@ package body Exp_Util is
when N_Unchecked_Expression =>
return Side_Effect_Free (Expression (N));
+ -- A literal is side effect free
+
+ when N_Character_Literal |
+ N_Integer_Literal |
+ N_Real_Literal |
+ N_String_Literal
+ =>
+ return True;
+
-- We consider that anything else has side effects. This is a bit
-- crude, but we are pretty close for most common cases, and we
-- are certainly correct (i.e. we never return True when the
diff --git a/gcc/ada/gprcmd.adb b/gcc/ada/gprcmd.adb
index 14798fb4f49..9c4dea3553e 100644
--- a/gcc/ada/gprcmd.adb
+++ b/gcc/ada/gprcmd.adb
@@ -58,6 +58,10 @@ procedure Gprcmd is
-- ??? comments are thin throughout this unit
+ Gprdebug : constant String := To_Lower (Getenv ("GPRDEBUG").all);
+ Debug : constant Boolean := Gprdebug = "true";
+ -- When Debug is True, gprcmd displays its arguments to Standard_Error.
+ -- This is to help to debug.
procedure Cat (File : String);
-- Print the contents of file on standard output.
@@ -82,6 +86,9 @@ procedure Gprcmd is
procedure Copy_Time_Stamp (From, To : String);
-- Copy file time stamp from file From to file To.
+ procedure Display_Command;
+ -- Display the invoked command to Standard_Error
+
---------
-- Cat --
---------
@@ -256,6 +263,19 @@ procedure Gprcmd is
Free (Buffer);
end Deps;
+ ---------------------
+ -- Display_Command --
+ ---------------------
+
+ procedure Display_Command is
+ begin
+ for J in 0 .. Argument_Count loop
+ Put (Standard_Error, Argument (J) & ' ');
+ end loop;
+
+ New_Line (Standard_Error);
+ end Display_Command;
+
------------
-- Extend --
------------
@@ -354,6 +374,8 @@ procedure Gprcmd is
"get the prefix of the GNAT installation");
Put_Line (Standard_Error, " path " &
"convert a directory list into a path list");
+ Put_Line (Standard_Error, " linkopts " &
+ "process attribute Linker'Linker_Options");
Put_Line (Standard_Error, " ignore " &
"do nothing");
OS_Exit (1);
@@ -362,6 +384,10 @@ procedure Gprcmd is
-- Start of processing for Gprcmd
begin
+ if Debug then
+ Display_Command;
+ end if;
+
Check_Args (Argument_Count > 0);
declare
@@ -408,8 +434,11 @@ begin
if Is_Absolute_Path (Argument (J)) then
Put (Format_Pathname (Argument (J), UNIX));
else
- Put (Format_Pathname (Normalize_Pathname (Argument (J), Dir),
- UNIX));
+ Put (Format_Pathname
+ (Normalize_Pathname
+ (Format_Pathname (Argument (J)),
+ Format_Pathname (Dir)),
+ UNIX));
end if;
if J < Argument_Count then
@@ -426,17 +455,33 @@ begin
begin
for J in 3 .. Argument_Count loop
- if Is_Absolute_Path (Argument (J)) then
- Extend (Format_Pathname (Argument (J), UNIX));
- else
- Extend
- (Format_Pathname (Normalize_Pathname (Argument (J), Dir),
- UNIX));
- end if;
- if J < Argument_Count then
- Put (' ');
- end if;
+ -- Remove quotes that may have been added around each argument
+
+ declare
+ Arg : constant String := Argument (J);
+ First : Natural := Arg'First;
+ Last : Natural := Arg'Last;
+ begin
+ if Arg (First) = '"' and then Arg (Last) = '"' then
+ First := First + 1;
+ Last := Last - 1;
+ end if;
+ if Is_Absolute_Path (Arg (First .. Last)) then
+ Extend (Format_Pathname (Arg (First .. Last), UNIX));
+ else
+ Extend
+ (Format_Pathname
+ (Normalize_Pathname
+ (Format_Pathname (Arg (First .. Last)),
+ Format_Pathname (Dir)),
+ UNIX));
+ end if;
+
+ if J < Argument_Count then
+ Put (' ');
+ end if;
+ end;
end loop;
end;
@@ -490,6 +535,70 @@ begin
Put (Path_Separator);
end loop;
+ -- Check the linker options for relative paths. Insert the project
+ -- base dir before relative paths.
+
+ elsif Cmd = "linkopts" then
+ Check_Args (Argument_Count >= 2);
+
+ -- First argument is the base directory of the project file
+
+ declare
+ Base_Dir : constant String := Argument (2) & '/';
+ begin
+ -- process the remainder of the arguments
+
+ for J in 3 .. Argument_Count loop
+ declare
+ Arg : constant String := Argument (J);
+ begin
+ -- If it is a switch other than a -L switch, just send back
+ -- the argument.
+
+ if Arg (Arg'First) = '-' and then
+ (Arg'Length <= 2 or else Arg (Arg'First + 1) /= 'L')
+ then
+ Put (Arg);
+
+ else
+ -- If it is a file, check if its path is relative, and
+ -- if it is relative, add <project base dir>/ in front.
+ -- Otherwise just send back the argument.
+
+ if Arg'Length <= 2
+ or else Arg (Arg'First .. Arg'First + 1) /= "-L"
+ then
+ if not Is_Absolute_Path (Arg) then
+ Put (Base_Dir);
+ end if;
+
+ Put (Arg);
+
+ -- For -L switches, check if the path is relative and
+ -- proceed similarly.
+
+ else
+ Put ("-L");
+
+ if
+ not Is_Absolute_Path (Arg (Arg'First + 2 .. Arg'Last))
+ then
+ Put (Base_Dir);
+ end if;
+
+ Put (Arg (Arg'First + 2 .. Arg'Last));
+ end if;
+ end if;
+ end;
+
+ -- Insert a space between each processed argument
+
+ if J /= Argument_Count then
+ Put (' ');
+ end if;
+ end loop;
+ end;
+
-- For "ignore" do nothing
elsif Cmd = "ignore" then
diff --git a/gcc/ada/layout.adb b/gcc/ada/layout.adb
index df310323931..119d184041c 100644
--- a/gcc/ada/layout.adb
+++ b/gcc/ada/layout.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2001-2003 Free Software Foundation, Inc. --
+-- Copyright (C) 2001-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- --
@@ -1980,11 +1980,13 @@ package body Layout is
else
declare
- EsizV : SO_Ref;
- RM_SizV : Node_Id;
- Dchoice : Node_Id;
- Discrim : Node_Id;
- Dtest : Node_Id;
+ EsizV : SO_Ref;
+ RM_SizV : Node_Id;
+ Dchoice : Node_Id;
+ Discrim : Node_Id;
+ Dtest : Node_Id;
+ D_List : List_Id;
+ D_Entity : Entity_Id;
begin
RM_Siz_Expr := Empty;
@@ -2052,16 +2054,6 @@ package body Layout is
-- Otherwise construct the appropriate test
else
- -- Discriminant to be tested
-
- Discrim :=
- Make_Selected_Component (Loc,
- Prefix =>
- Make_Identifier (Loc, Chars => Vname),
- Selector_Name =>
- New_Occurrence_Of
- (Entity (Name (Vpart)), Loc));
-
-- The test to be used in general is a call to the
-- discriminant checking function. However, it is
-- definitely worth special casing the very common
@@ -2072,6 +2064,16 @@ package body Layout is
if No (Next (Dchoice))
and then Nkind (Dchoice) /= N_Range
then
+ -- Discriminant to be tested
+
+ Discrim :=
+ Make_Selected_Component (Loc,
+ Prefix =>
+ Make_Identifier (Loc, Chars => Vname),
+ Selector_Name =>
+ New_Occurrence_Of
+ (Entity (Name (Vpart)), Loc));
+
Dtest :=
Make_Op_Eq (Loc,
Left_Opnd => Discrim,
@@ -2083,6 +2085,25 @@ package body Layout is
-- False when the passed discriminant value matches.
else
+ -- The checking function takes all of the type's
+ -- discriminants as parameters, so a list of all
+ -- the selected discriminants must be constructed.
+
+ D_List := New_List;
+ D_Entity := First_Discriminant (E);
+ while Present (D_Entity) loop
+ Append (
+ Make_Selected_Component (Loc,
+ Prefix =>
+ Make_Identifier (Loc, Chars => Vname),
+ Selector_Name =>
+ New_Occurrence_Of
+ (D_Entity, Loc)),
+ D_List);
+
+ D_Entity := Next_Discriminant (D_Entity);
+ end loop;
+
Dtest :=
Make_Op_Not (Loc,
Right_Opnd =>
@@ -2091,7 +2112,7 @@ package body Layout is
New_Occurrence_Of
(Dcheck_Function (Var), Loc),
Parameter_Associations =>
- New_List (Discrim)));
+ D_List));
end if;
RM_Siz_Expr :=
diff --git a/gcc/ada/prj-part.adb b/gcc/ada/prj-part.adb
index 2415a3f31d1..a97f8744363 100644
--- a/gcc/ada/prj-part.adb
+++ b/gcc/ada/prj-part.adb
@@ -840,6 +840,8 @@ package body Prj.Part is
Project_Scan_State : Saved_Project_Scan_State;
Source_Index : Source_File_Index;
+ Extending : Boolean := False;
+
Extended_Project : Project_Node_Id := Empty_Node;
A_Project_Name_And_Node : Tree_Private_Part.Project_Name_And_Node :=
@@ -1051,6 +1053,27 @@ package body Prj.Part is
Scan;
end loop;
+ -- See if this is an extending project
+
+ if Token = Tok_Extends then
+
+ -- Make sure that gnatmake will use mapping files
+
+ Create_Mapping_File := True;
+
+ -- We are extending another project
+
+ Extending := True;
+
+ Scan; -- scan past EXTENDS
+
+ if Token = Tok_All then
+ Extends_All := True;
+ Set_Is_Extending_All (Project);
+ Scan; -- scan past ALL
+ end if;
+ end if;
+
-- If the name is well formed, Buffer_Last is > 0
if Buffer_Last > 0 then
@@ -1098,7 +1121,7 @@ package body Prj.Part is
begin
-- Extending_All is always propagated
- if From_Extended = Extending_All then
+ if From_Extended = Extending_All or else Extends_All then
From_Ext := Extending_All;
-- Otherwise, From_Extended is set to Extending_Single if the
@@ -1149,22 +1172,7 @@ package body Prj.Part is
end if;
- if Token = Tok_Extends then
-
- -- Make sure that gnatmake will use mapping files
-
- Create_Mapping_File := True;
-
- -- We are extending another project
-
- Scan; -- scan past EXTENDS
-
- if Token = Tok_All then
- Extends_All := True;
- Set_Is_Extending_All (Project);
- Scan; -- scan past ALL
- end if;
-
+ if Extending then
Expect (Tok_String_Literal, "literal string");
if Token = Tok_String_Literal then
@@ -1205,11 +1213,11 @@ package body Prj.Part is
else
declare
- From_Extended : Extension_Origin := None;
+ From_Ext : Extension_Origin := None;
begin
- if Is_Extending_All (Project) then
- From_Extended := Extending_All;
+ if From_Extended = Extending_All or else Extends_All then
+ From_Ext := Extending_All;
end if;
Parse_Single_Project
@@ -1217,7 +1225,7 @@ package body Prj.Part is
Extends_All => Extends_All,
Path_Name => Extended_Project_Path_Name,
Extended => True,
- From_Extended => From_Extended);
+ From_Extended => From_Ext);
end;
-- A project that extends an extending-all project is also
@@ -1640,11 +1648,10 @@ package body Prj.Part is
else
declare
- Final_Result : String :=
+ Final_Result : constant String :=
GNAT.OS_Lib.Normalize_Pathname (Result.all);
begin
Free (Result);
- Canonical_Case_File_Name (Final_Result);
return Final_Result;
end;
end if;
diff --git a/gcc/ada/vms_conv.adb b/gcc/ada/vms_conv.adb
index c632e732789..f0fe8a138a9 100644
--- a/gcc/ada/vms_conv.adb
+++ b/gcc/ada/vms_conv.adb
@@ -58,6 +58,10 @@ package body VMS_Conv is
-- if a COMMANDS_TRANSLATION switch has been encountered while processing
-- a MAKE Command.
+ Output_File_Expected : Boolean := False;
+ -- True for GNAT LINK after -o switch, so that the ".ali" extension is
+ -- not added to the executable file name.
+
package Buffer is new Table.Table
(Table_Component_Type => Character,
Table_Index_Type => Integer,
@@ -1111,6 +1115,7 @@ package body VMS_Conv is
end if;
The_Command := Command.Command;
+ Output_File_Expected := False;
-- Give usage information if only command given
@@ -1277,6 +1282,7 @@ package body VMS_Conv is
elsif Arg.all = "/?" then
Display_Command := True;
+ Output_File_Expected := False;
-- Copy -switch unchanged
@@ -1284,6 +1290,11 @@ package body VMS_Conv is
Place (' ');
Place (Arg.all);
+ -- Set Output_File_Expected for the next argument
+
+ Output_File_Expected :=
+ Arg.all = "-o" and then The_Command = Link;
+
-- Copy quoted switch with quotes stripped
elsif Arg (Arg'First) = '"' then
@@ -1297,6 +1308,8 @@ package body VMS_Conv is
Place (Arg (Arg'First + 1 .. Arg'Last - 1));
end if;
+ Output_File_Expected := False;
+
-- Parameter Argument
elsif Arg (Arg'First) /= '/'
@@ -1357,8 +1370,12 @@ package body VMS_Conv is
Place (' ');
Place_Lower (Normal_File.all);
+ -- Add extension if not present, except after
+ -- switch -o.
+
if Is_Extensionless (Normal_File.all)
and then Command.Defext /= " "
+ and then not Output_File_Expected
then
Place ('.');
Place (Command.Defext);
@@ -1488,9 +1505,15 @@ package body VMS_Conv is
end case;
end if;
+ -- Reset Output_File_Expected, in case it was True
+
+ Output_File_Expected := False;
+
-- Qualifier argument
else
+ Output_File_Expected := False;
+
-- This code is too heavily nested, should be
-- separated out as separate subprogram ???