summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorcharlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4>2009-11-30 10:07:32 +0000
committercharlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4>2009-11-30 10:07:32 +0000
commit9cdffbc8e4a21e2ebd91c33264a250b3d0328129 (patch)
tree7bec3cf8139da8c3fc9ab89202f6b0894c50fe0e
parent92d7a451bc1093930f14896b59bf02d61843d5b6 (diff)
downloadgcc-9cdffbc8e4a21e2ebd91c33264a250b3d0328129.tar.gz
2009-11-30 Thomas Quinot <quinot@adacore.com>
* s-crtl.ads, g-stseme.adb, s-fileio.adb (System.CRTL.strerror): Change return type to Interfaces.C.Strings.chars_ptr to eliminate need for dubious unchecked conversion at call sites. * s-errrep.adb, s-errrep.ads, Makefile.rtl (System.Error_Reporting): Remove obsolete, unused runtime unit. * gcc-interface/Make-lang.in: Update dependencies. * gcc-interface/Makefile.in: Remove VMS specialization of s-crtl, not required anymore. 2009-11-30 Vincent Celier <celier@adacore.com> * gnatlink.adb: Delete an eventual existing executable file, in case it is a symbolic link, to avoid modifying the target of the symbolic link. 2009-11-30 Bob Duff <duff@adacore.com> * socket.c: Add accessor functions for struct servent. * g-sothco.ads (Servent): Declare interfaces to C accessor functions for struct servent. * g-socket.adb (To_Service_Entry): Use accessor functions for struct servent. 2009-11-30 Robert Dewar <dewar@adacore.com> * g-arrspl.adb: Minor reformatting * g-dyntab.adb: Add missing pragma Compiler_Unit git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@154769 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--gcc/ada/ChangeLog29
-rw-r--r--gcc/ada/Makefile.rtl1
-rw-r--r--gcc/ada/g-arrspl.adb4
-rw-r--r--gcc/ada/g-dyntab.adb7
-rw-r--r--gcc/ada/g-socket.adb16
-rw-r--r--gcc/ada/g-sothco.ads26
-rw-r--r--gcc/ada/g-stseme.adb16
-rw-r--r--gcc/ada/gcc-interface/Make-lang.in360
-rw-r--r--gcc/ada/gcc-interface/Makefile.in1
-rw-r--r--gcc/ada/gnatlink.adb73
-rw-r--r--gcc/ada/s-crtl.ads9
-rw-r--r--gcc/ada/s-errrep.adb68
-rw-r--r--gcc/ada/s-errrep.ads45
-rw-r--r--gcc/ada/s-fileio.adb12
-rw-r--r--gcc/ada/socket.c62
15 files changed, 430 insertions, 299 deletions
diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog
index 69b0cb9a22b..a41847a5755 100644
--- a/gcc/ada/ChangeLog
+++ b/gcc/ada/ChangeLog
@@ -1,5 +1,34 @@
2009-11-30 Thomas Quinot <quinot@adacore.com>
+ * s-crtl.ads, g-stseme.adb, s-fileio.adb (System.CRTL.strerror): Change
+ return type to Interfaces.C.Strings.chars_ptr to eliminate need for
+ dubious unchecked conversion at call sites.
+ * s-errrep.adb, s-errrep.ads, Makefile.rtl (System.Error_Reporting):
+ Remove obsolete, unused runtime unit.
+ * gcc-interface/Make-lang.in: Update dependencies.
+ * gcc-interface/Makefile.in: Remove VMS specialization of s-crtl, not
+ required anymore.
+
+2009-11-30 Vincent Celier <celier@adacore.com>
+
+ * gnatlink.adb: Delete an eventual existing executable file, in case it
+ is a symbolic link, to avoid modifying the target of the symbolic link.
+
+2009-11-30 Bob Duff <duff@adacore.com>
+
+ * socket.c: Add accessor functions for struct servent.
+ * g-sothco.ads (Servent): Declare interfaces to C accessor functions
+ for struct servent.
+ * g-socket.adb (To_Service_Entry): Use accessor functions for struct
+ servent.
+
+2009-11-30 Robert Dewar <dewar@adacore.com>
+
+ * g-arrspl.adb: Minor reformatting
+ * g-dyntab.adb: Add missing pragma Compiler_Unit
+
+2009-11-30 Thomas Quinot <quinot@adacore.com>
+
* s-crtl.ads, s-oscons-tmplt.c: Fix support for VMS
* make.adb, g-comlin.ads, exp_ch6.adb: Minor reformatting
diff --git a/gcc/ada/Makefile.rtl b/gcc/ada/Makefile.rtl
index d03c67db4ca..ba60b2a9496 100644
--- a/gcc/ada/Makefile.rtl
+++ b/gcc/ada/Makefile.rtl
@@ -434,7 +434,6 @@ GNATRTL_NONTASKING_OBJS= \
s-crc32$(objext) \
s-direio$(objext) \
s-dsaser$(objext) \
- s-errrep$(objext) \
s-exctab$(objext) \
s-except$(objext) \
s-exnint$(objext) \
diff --git a/gcc/ada/g-arrspl.adb b/gcc/ada/g-arrspl.adb
index 9a08b8282df..a897b13f913 100644
--- a/gcc/ada/g-arrspl.adb
+++ b/gcc/ada/g-arrspl.adb
@@ -238,10 +238,10 @@ package body GNAT.Array_Split is
loop
if K > Count_Sep then
- -- No more separators, last slice ends at the end of the source
- -- string.
+ -- No more separators, last slice ends at end of source string
Stop := S.Source'Last;
+
else
Stop := S.Indexes (K) - 1;
end if;
diff --git a/gcc/ada/g-dyntab.adb b/gcc/ada/g-dyntab.adb
index 1ebebe4d95d..2c3ae4fcd56 100644
--- a/gcc/ada/g-dyntab.adb
+++ b/gcc/ada/g-dyntab.adb
@@ -31,6 +31,8 @@
-- --
------------------------------------------------------------------------------
+pragma Compiler_Unit;
+
with GNAT.Heap_Sort_G;
with System; use System;
with System.Memory; use System.Memory;
@@ -64,10 +66,7 @@ package body GNAT.Dynamic_Tables is
-- Allocate --
--------------
- procedure Allocate
- (T : in out Instance;
- Num : Integer := 1)
- is
+ procedure Allocate (T : in out Instance; Num : Integer := 1) is
begin
T.P.Last_Val := T.P.Last_Val + Num;
diff --git a/gcc/ada/g-socket.adb b/gcc/ada/g-socket.adb
index 5cf623a1602..062baf768ef 100644
--- a/gcc/ada/g-socket.adb
+++ b/gcc/ada/g-socket.adb
@@ -163,7 +163,7 @@ package body GNAT.Sockets is
function To_Host_Entry (E : Hostent) return Host_Entry_Type;
-- Conversion function
- function To_Service_Entry (E : Servent) return Service_Entry_Type;
+ function To_Service_Entry (E : Servent_Access) return Service_Entry_Type;
-- Conversion function
function To_Timeval (Val : Timeval_Duration) return Timeval;
@@ -970,7 +970,7 @@ package body GNAT.Sockets is
-- Translate from the C format to the API format
- return To_Service_Entry (Res);
+ return To_Service_Entry (Res'Unchecked_Access);
end Get_Service_By_Name;
-------------------------
@@ -996,7 +996,7 @@ package body GNAT.Sockets is
-- Translate from the C format to the API format
- return To_Service_Entry (Res);
+ return To_Service_Entry (Res'Unchecked_Access);
end Get_Service_By_Port;
---------------------
@@ -2352,17 +2352,17 @@ package body GNAT.Sockets is
-- To_Service_Entry --
----------------------
- function To_Service_Entry (E : Servent) return Service_Entry_Type is
+ function To_Service_Entry (E : Servent_Access) return Service_Entry_Type is
use type C.size_t;
- Official : constant String := C.Strings.Value (E.S_Name);
+ Official : constant String := C.Strings.Value (Servent_S_Name (E));
Aliases : constant Chars_Ptr_Array :=
- Chars_Ptr_Pointers.Value (E.S_Aliases);
+ Chars_Ptr_Pointers.Value (Servent_S_Aliases (E));
-- S_Aliases points to a list of name aliases. The list is
-- terminated by a NULL pointer.
- Protocol : constant String := C.Strings.Value (E.S_Proto);
+ Protocol : constant String := C.Strings.Value (Servent_S_Proto (E));
Result : Service_Entry_Type (Aliases_Length => Aliases'Length - 1);
-- The last element is a null pointer
@@ -2383,7 +2383,7 @@ package body GNAT.Sockets is
end loop;
Result.Port :=
- Port_Type (Network_To_Short (C.unsigned_short (E.S_Port)));
+ Port_Type (Network_To_Short (C.unsigned_short (Servent_S_Port (E))));
Result.Protocol := To_Name (Protocol);
return Result;
diff --git a/gcc/ada/g-sothco.ads b/gcc/ada/g-sothco.ads
index c5636a8f1e3..3f5c7695159 100644
--- a/gcc/ada/g-sothco.ads
+++ b/gcc/ada/g-sothco.ads
@@ -212,19 +212,24 @@ package GNAT.Sockets.Thin_Common is
C.Strings.Null_Ptr);
-- Arrays of C (char *)
- type Servent is record
- S_Name : C.Strings.chars_ptr;
- S_Aliases : Chars_Ptr_Pointers.Pointer;
- S_Port : C.int;
- S_Proto : C.Strings.chars_ptr;
- end record;
- pragma Convention (C, Servent);
- -- Service entry
+ sizeof_servent : constant C.size_t;
+ pragma Import (C, sizeof_servent, "__gnat_sizeof_servent");
+ type Servent is array (1 .. sizeof_servent) of C.char;
+ for Servent'Alignment use 8;
+ -- Service entry. This is an opaque type used only via the following
+ -- accessor functions, because 'struct servent' has different layouts on
+ -- different platforms.
type Servent_Access is access all Servent;
pragma Convention (C, Servent_Access);
-- Access to service entry
+ function Servent_S_Name (E : Servent_Access) return C.Strings.chars_ptr;
+ function Servent_S_Aliases (E : Servent_Access)
+ return Chars_Ptr_Pointers.Pointer;
+ function Servent_S_Port (E : Servent_Access) return C.int;
+ function Servent_S_Proto (E : Servent_Access) return C.Strings.chars_ptr;
+
------------------
-- Host entries --
------------------
@@ -335,4 +340,9 @@ private
pragma Import (C, Reset_Socket_Set, "__gnat_reset_socket_set");
pragma Import (C, C_Ioctl, "__gnat_socket_ioctl");
pragma Import (C, Inet_Pton, SOSC.Inet_Pton_Linkname);
+
+ pragma Import (C, Servent_S_Name, "__gnat_servent_s_name");
+ pragma Import (C, Servent_S_Aliases, "__gnat_servent_s_aliases");
+ pragma Import (C, Servent_S_Port, "__gnat_servent_s_port");
+ pragma Import (C, Servent_S_Proto, "__gnat_servent_s_proto");
end GNAT.Sockets.Thin_Common;
diff --git a/gcc/ada/g-stseme.adb b/gcc/ada/g-stseme.adb
index 4b1720fb216..c47adc8be35 100644
--- a/gcc/ada/g-stseme.adb
+++ b/gcc/ada/g-stseme.adb
@@ -34,8 +34,6 @@
-- since on that platform socket errno values are distinct from the system
-- ones: there is a specific variant of this function in g-socthi-mingw.adb.
-with Ada.Unchecked_Conversion;
-
with System.CRTL;
separate (GNAT.Sockets.Thin)
@@ -48,21 +46,9 @@ function Socket_Error_Message
(Errno : Integer) return C.Strings.chars_ptr
is
use type Interfaces.C.Strings.chars_ptr;
-
- pragma Warnings (Off);
- function To_Chars_Ptr is
- new Ada.Unchecked_Conversion
- (System.Address, Interfaces.C.Strings.chars_ptr);
- -- On VMS, the compiler warns because System.Address is 64 bits, but
- -- chars_ptr is 32 bits. It should be safe, though, because strerror
- -- will return a 32-bit pointer.
- pragma Warnings (On);
-
- C_Msg : C.Strings.chars_ptr;
+ C_Msg : constant C.Strings.chars_ptr := System.CRTL.strerror (Errno);
begin
- C_Msg := To_Chars_Ptr (System.CRTL.strerror (Errno));
-
if C_Msg = C.Strings.Null_Ptr then
return Unknown_System_Error;
else
diff --git a/gcc/ada/gcc-interface/Make-lang.in b/gcc/ada/gcc-interface/Make-lang.in
index 02887029b22..18c57bf5bd6 100644
--- a/gcc/ada/gcc-interface/Make-lang.in
+++ b/gcc/ada/gcc-interface/Make-lang.in
@@ -116,60 +116,226 @@ GNAT1_C_OBJS = ada/b_gnat1.o ada/adadecode.o ada/adaint.o ada/cstreams.o \
# Object files from Ada sources that are used by gnat1
-GNAT_ADA_OBJS = ada/s-bitops.o ada/ada.o ada/a-charac.o ada/a-chlat1.o ada/a-except.o \
- ada/a-elchha.o ada/a-ioexce.o \
- ada/s-memory.o ada/s-carun8.o ada/s-casuti.o ada/s-strcom.o ada/s-strhas.o \
- ada/s-purexc.o ada/s-htable.o ada/s-traceb.o ada/s-mastop.o ada/ali.o \
- ada/alloc.o ada/atree.o ada/butil.o ada/casing.o ada/checks.o ada/comperr.o \
- ada/csets.o ada/cstand.o ada/debug.o ada/debug_a.o ada/einfo.o ada/elists.o \
- ada/errout.o ada/erroutc.o ada/err_vars.o ada/eval_fat.o ada/exp_attr.o \
- ada/exp_ch11.o ada/exp_ch12.o ada/exp_ch13.o ada/exp_ch2.o ada/exp_ch3.o \
- ada/exp_ch4.o ada/exp_ch5.o ada/exp_ch6.o ada/exp_ch7.o ada/exp_ch8.o \
- ada/exp_ch9.o ada/exp_code.o ada/exp_dbug.o ada/exp_disp.o ada/exp_atag.o \
- ada/exp_dist.o ada/exp_fixd.o ada/exp_aggr.o ada/exp_imgv.o ada/exp_intr.o \
- ada/exp_pakd.o ada/exp_prag.o ada/exp_sel.o ada/exp_smem.o ada/exp_strm.o \
- ada/exp_tss.o ada/exp_util.o ada/exp_vfpt.o ada/expander.o ada/fname.o \
- ada/fname-uf.o ada/fmap.o ada/freeze.o ada/frontend.o ada/gnat.o \
- ada/g-byorma.o \
- ada/g-hesora.o ada/g-htable.o ada/s-os_lib.o \
- ada/g-speche.o ada/g-spchge.o ada/g-u3spch.o ada/s-string.o \
- ada/s-utf_32.o ada/s-crc32.o ada/get_targ.o \
- ada/get_scos.o \
- ada/gnatvsn.o ada/hlo.o ada/hostparm.o ada/impunit.o ada/interfac.o \
- ada/itypes.o ada/inline.o ada/krunch.o ada/lib.o ada/layout.o \
- ada/lib-load.o ada/lib-util.o ada/lib-xref.o ada/lib-writ.o ada/live.o \
- ada/namet.o ada/namet-sp.o \
- ada/nlists.o ada/nmake.o ada/opt.o ada/osint.o ada/osint-c.o \
- ada/output.o \
- ada/par_sco.o \
- ada/par.o ada/prep.o ada/prepcomp.o ada/put_scos.o \
- ada/repinfo.o ada/restrict.o \
- ada/rident.o ada/rtsfind.o \
- ada/s-addope.o ada/s-assert.o ada/s-parame.o ada/s-stache.o \
- ada/s-stalib.o ada/s-imgenu.o ada/s-imenne.o ada/s-stoele.o ada/s-soflin.o \
- ada/s-except.o ada/s-exctab.o \
- ada/s-secsta.o ada/s-strops.o ada/s-sopco3.o ada/s-sopco4.o ada/s-sopco5.o \
- ada/s-traent.o ada/s-wchcnv.o ada/s-wchcon.o ada/s-wchjis.o \
- ada/s-conca2.o ada/s-conca3.o ada/s-conca4.o ada/s-conca5.o \
- ada/s-conca6.o ada/s-conca7.o ada/s-conca8.o ada/s-conca9.o \
- ada/s-unstyp.o ada/scans.o ada/scng.o ada/scn.o ada/sdefault.o ada/sem.o \
- ada/scos.o \
- ada/sem_aggr.o ada/sem_attr.o ada/sem_aux.o \
- ada/sem_cat.o ada/sem_ch10.o ada/sem_ch11.o \
- ada/sem_ch12.o ada/sem_ch13.o ada/sem_ch2.o ada/sem_ch3.o ada/sem_ch4.o \
- ada/sem_ch5.o ada/sem_ch6.o ada/sem_ch7.o ada/sem_ch8.o ada/sem_ch9.o \
- ada/sem_case.o ada/sem_disp.o ada/sem_dist.o ada/sem_elab.o ada/sem_elim.o \
- ada/sem_eval.o ada/sem_intr.o ada/sem_mech.o ada/sem_prag.o ada/sem_res.o \
- ada/sem_scil.o ada/sem_smem.o ada/sem_type.o ada/sem_util.o ada/sem_vfpt.o \
- ada/sem_warn.o ada/sinfo-cn.o ada/sinfo.o ada/sinput.o ada/sinput-d.o \
- ada/sinput-l.o ada/snames.o ada/sprint.o ada/stand.o ada/stringt.o \
- ada/style.o ada/styleg.o ada/switch.o ada/switch-c.o \
- ada/stylesw.o ada/validsw.o ada/system.o ada/table.o ada/targparm.o \
- ada/tbuild.o ada/tree_gen.o ada/tree_in.o \
- ada/tree_io.o ada/treepr.o ada/treeprs.o \
- ada/ttypef.o ada/ttypes.o ada/types.o ada/uintp.o ada/uname.o ada/urealp.o \
- ada/usage.o ada/widechar.o ada/s-crtl.o ada/seh_init.o ada/targext.o \
- ada/s-restri.o
+GNAT_ADA_OBJS = \
+ ada/a-charac.o \
+ ada/a-chlat1.o \
+ ada/a-elchha.o \
+ ada/a-except.o \
+ ada/a-ioexce.o \
+ ada/ada.o \
+ ada/ali.o \
+ ada/alloc.o \
+ ada/atree.o \
+ ada/butil.o \
+ ada/casing.o \
+ ada/checks.o \
+ ada/comperr.o \
+ ada/csets.o \
+ ada/cstand.o \
+ ada/debug.o \
+ ada/debug_a.o \
+ ada/einfo.o \
+ ada/elists.o \
+ ada/err_vars.o \
+ ada/errout.o \
+ ada/erroutc.o \
+ ada/eval_fat.o \
+ ada/exp_aggr.o \
+ ada/exp_atag.o \
+ ada/exp_attr.o \
+ ada/exp_ch11.o \
+ ada/exp_ch12.o \
+ ada/exp_ch13.o \
+ ada/exp_ch2.o \
+ ada/exp_ch3.o \
+ ada/exp_ch4.o \
+ ada/exp_ch5.o \
+ ada/exp_ch6.o \
+ ada/exp_ch7.o \
+ ada/exp_ch8.o \
+ ada/exp_ch9.o \
+ ada/exp_code.o \
+ ada/exp_dbug.o \
+ ada/exp_disp.o \
+ ada/exp_dist.o \
+ ada/exp_fixd.o \
+ ada/exp_imgv.o \
+ ada/exp_intr.o \
+ ada/exp_pakd.o \
+ ada/exp_prag.o \
+ ada/exp_sel.o \
+ ada/exp_smem.o \
+ ada/exp_strm.o \
+ ada/exp_tss.o \
+ ada/exp_util.o \
+ ada/exp_vfpt.o \
+ ada/expander.o \
+ ada/fmap.o \
+ ada/fname-uf.o \
+ ada/fname.o \
+ ada/freeze.o \
+ ada/frontend.o \
+ ada/g-byorma.o \
+ ada/g-hesora.o \
+ ada/g-htable.o \
+ ada/g-spchge.o \
+ ada/g-speche.o \
+ ada/g-u3spch.o \
+ ada/get_scos.o \
+ ada/get_targ.o \
+ ada/gnat.o \
+ ada/gnatvsn.o \
+ ada/hlo.o \
+ ada/hostparm.o \
+ ada/i-c.o \
+ ada/i-cstrin.o \
+ ada/impunit.o \
+ ada/inline.o \
+ ada/instpar.o \
+ ada/interfac.o \
+ ada/itypes.o \
+ ada/krunch.o \
+ ada/layout.o \
+ ada/lib-load.o \
+ ada/lib-util.o \
+ ada/lib-writ.o \
+ ada/lib-xref.o \
+ ada/lib.o \
+ ada/live.o \
+ ada/namet-sp.o \
+ ada/namet.o \
+ ada/nlists.o \
+ ada/nmake.o \
+ ada/opt.o \
+ ada/osint-c.o \
+ ada/osint.o \
+ ada/output.o \
+ ada/par.o \
+ ada/par_sco.o \
+ ada/prep.o \
+ ada/prepcomp.o \
+ ada/put_scos.o \
+ ada/repinfo.o \
+ ada/restrict.o \
+ ada/rident.o \
+ ada/rtsfind.o \
+ ada/s-addope.o \
+ ada/s-assert.o \
+ ada/s-bitops.o \
+ ada/s-carun8.o \
+ ada/s-casuti.o \
+ ada/s-conca2.o \
+ ada/s-conca3.o \
+ ada/s-conca4.o \
+ ada/s-conca5.o \
+ ada/s-conca6.o \
+ ada/s-conca7.o \
+ ada/s-conca8.o \
+ ada/s-conca9.o \
+ ada/s-crc32.o \
+ ada/s-crtl.o \
+ ada/s-except.o \
+ ada/s-exctab.o \
+ ada/s-htable.o \
+ ada/s-imenne.o \
+ ada/s-imgenu.o \
+ ada/s-mastop.o \
+ ada/s-memory.o \
+ ada/s-os_lib.o \
+ ada/s-parame.o \
+ ada/s-purexc.o \
+ ada/s-restri.o \
+ ada/s-secsta.o \
+ ada/s-soflin.o \
+ ada/s-sopco3.o \
+ ada/s-sopco4.o \
+ ada/s-sopco5.o \
+ ada/s-stache.o \
+ ada/s-stalib.o \
+ ada/s-stoele.o \
+ ada/s-strcom.o \
+ ada/s-strhas.o \
+ ada/s-string.o \
+ ada/s-strops.o \
+ ada/s-traceb.o \
+ ada/s-traent.o \
+ ada/s-unstyp.o \
+ ada/s-utf_32.o \
+ ada/s-wchcnv.o \
+ ada/s-wchcon.o \
+ ada/s-wchjis.o \
+ ada/scans.o \
+ ada/scn.o \
+ ada/scng.o \
+ ada/scos.o \
+ ada/sdefault.o \
+ ada/seh_init.o \
+ ada/sem.o \
+ ada/sem_aggr.o \
+ ada/sem_attr.o \
+ ada/sem_aux.o \
+ ada/sem_case.o \
+ ada/sem_cat.o \
+ ada/sem_ch10.o \
+ ada/sem_ch11.o \
+ ada/sem_ch12.o \
+ ada/sem_ch13.o \
+ ada/sem_ch2.o \
+ ada/sem_ch3.o \
+ ada/sem_ch4.o \
+ ada/sem_ch5.o \
+ ada/sem_ch6.o \
+ ada/sem_ch7.o \
+ ada/sem_ch8.o \
+ ada/sem_ch9.o \
+ ada/sem_disp.o \
+ ada/sem_dist.o \
+ ada/sem_elab.o \
+ ada/sem_elim.o \
+ ada/sem_eval.o \
+ ada/sem_intr.o \
+ ada/sem_mech.o \
+ ada/sem_prag.o \
+ ada/sem_res.o \
+ ada/sem_scil.o \
+ ada/sem_smem.o \
+ ada/sem_type.o \
+ ada/sem_util.o \
+ ada/sem_vfpt.o \
+ ada/sem_warn.o \
+ ada/sinfo-cn.o \
+ ada/sinfo.o \
+ ada/sinput-d.o \
+ ada/sinput-l.o \
+ ada/sinput.o \
+ ada/snames.o \
+ ada/sprint.o \
+ ada/stand.o \
+ ada/stringt.o \
+ ada/style.o \
+ ada/styleg.o \
+ ada/stylesw.o \
+ ada/switch-c.o \
+ ada/switch.o \
+ ada/system.o \
+ ada/table.o \
+ ada/targext.o \
+ ada/targparm.o \
+ ada/tbuild.o \
+ ada/tree_gen.o \
+ ada/tree_in.o \
+ ada/tree_io.o \
+ ada/treepr.o \
+ ada/treeprs.o \
+ ada/ttypef.o \
+ ada/ttypes.o \
+ ada/types.o \
+ ada/uintp.o \
+ ada/uname.o \
+ ada/urealp.o \
+ ada/usage.o \
+ ada/validsw.o \
+ ada/widechar.o
# Object files for gnat executables
GNAT1_ADA_OBJS = $(GNAT_ADA_OBJS) ada/back_end.o ada/gnat1drv.o
@@ -224,6 +390,8 @@ GNATBIND_OBJS = \
ada/gnatbind.o \
ada/gnatvsn.o \
ada/hostparm.o \
+ ada/i-c.o \
+ ada/i-cstrin.o \
ada/interfac.o \
ada/lib.o \
ada/namet.o \
@@ -1204,10 +1372,11 @@ ada/back_end.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/sinput.adb ada/snames.ads ada/stand.ads ada/stringt.ads \
ada/switch.ads ada/switch-c.ads ada/system.ads ada/s-exctab.ads \
ada/s-htable.ads ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads \
- ada/s-parame.ads ada/s-stalib.ads ada/s-string.ads ada/s-traent.ads \
- ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads ada/table.adb \
- ada/tree_io.ads ada/types.ads ada/uintp.ads ada/uintp.adb ada/uname.ads \
- ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads ada/widechar.ads
+ ada/s-parame.ads ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb \
+ ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads \
+ ada/table.ads ada/table.adb ada/tree_io.ads ada/types.ads ada/uintp.ads \
+ ada/uintp.adb ada/uname.ads ada/unchconv.ads ada/unchdeal.ads \
+ ada/urealp.ads ada/widechar.ads
ada/bcheck.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/a-uncdea.ads ada/ali.ads ada/ali-util.ads ada/ali-util.adb \
@@ -1267,10 +1436,10 @@ ada/bindusg.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/a-uncdea.ads ada/alloc.ads ada/bindusg.ads ada/bindusg.adb \
ada/debug.ads ada/hostparm.ads ada/namet.ads ada/opt.ads ada/osint.ads \
ada/output.ads ada/system.ads ada/s-exctab.ads ada/s-memory.ads \
- ada/s-os_lib.ads ada/s-parame.ads ada/s-stalib.ads ada/s-string.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/s-os_lib.ads ada/s-parame.ads ada/s-stalib.ads ada/s-stoele.ads \
+ ada/s-stoele.adb ada/s-string.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/butil.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/a-uncdea.ads ada/alloc.ads ada/butil.ads ada/butil.adb \
@@ -2185,10 +2354,10 @@ ada/fmap.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/gnat.ads ada/g-htable.ads ada/hostparm.ads ada/namet.ads \
ada/opt.ads ada/osint.ads ada/output.ads ada/system.ads \
ada/s-exctab.ads ada/s-htable.ads ada/s-htable.adb ada/s-memory.ads \
- ada/s-os_lib.ads ada/s-parame.ads ada/s-stalib.ads ada/s-strhas.ads \
- ada/s-string.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/s-os_lib.ads ada/s-parame.ads ada/s-stalib.ads ada/s-stoele.ads \
+ ada/s-stoele.adb ada/s-strhas.ads ada/s-string.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/fname-uf.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/a-uncdea.ads ada/alloc.ads ada/casing.ads ada/debug.ads \
@@ -2197,10 +2366,11 @@ ada/fname-uf.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/namet.ads 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-htable.adb \
ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads ada/s-rident.ads \
- ada/s-stalib.ads ada/s-strhas.ads ada/s-string.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/uname.ads \
- ada/unchconv.ads ada/unchdeal.ads ada/widechar.ads
+ ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb ada/s-strhas.ads \
+ ada/s-string.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/uname.ads ada/unchconv.ads ada/unchdeal.ads \
+ ada/widechar.ads
ada/fname.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/a-uncdea.ads ada/alloc.ads ada/debug.ads ada/fname.ads \
@@ -2489,9 +2659,10 @@ ada/lib-util.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/lib.ads ada/lib-util.ads ada/lib-util.adb ada/namet.ads ada/opt.ads \
ada/osint.ads ada/osint-c.ads ada/output.ads ada/system.ads \
ada/s-exctab.ads ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads \
- ada/s-stalib.ads ada/s-string.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/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb ada/s-string.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/lib-writ.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/a-uncdea.ads ada/ali.ads ada/alloc.ads ada/atree.ads ada/atree.adb \
@@ -2531,10 +2702,10 @@ ada/lib-xref.o : ada/ada.ads ada/a-except.ads ada/a-unccon.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-imenne.ads \
ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads ada/s-rident.ads \
- ada/s-stalib.ads ada/s-string.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/widechar.ads
+ ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb ada/s-string.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/widechar.ads
ada/lib.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads ada/a-uncdea.ads \
ada/alloc.ads ada/atree.ads ada/atree.adb ada/casing.ads ada/debug.ads \
@@ -2704,10 +2875,11 @@ ada/par_sco.o : ada/ada.ads ada/a-except.ads ada/a-unccon.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-imenne.ads \
ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads ada/s-stalib.ads \
- ada/s-strhas.ads ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads \
- ada/s-wchcon.ads ada/table.ads ada/table.adb ada/tree_io.ads \
- ada/types.ads ada/uintp.ads ada/uintp.adb ada/uname.ads \
- ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads ada/widechar.ads
+ ada/s-stoele.ads ada/s-stoele.adb ada/s-strhas.ads ada/s-string.ads \
+ ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads \
+ ada/table.adb ada/tree_io.ads ada/types.ads ada/uintp.ads ada/uintp.adb \
+ ada/uname.ads ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads \
+ ada/widechar.ads
ada/prep.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/a-uncdea.ads ada/alloc.ads ada/casing.ads ada/csets.ads \
@@ -3899,10 +4071,10 @@ ada/sinput-d.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/hostparm.ads ada/namet.ads ada/opt.ads ada/osint.ads \
ada/osint-c.ads ada/output.ads ada/sinput.ads ada/sinput-d.ads \
ada/sinput-d.adb ada/system.ads ada/s-exctab.ads ada/s-memory.ads \
- ada/s-os_lib.ads ada/s-parame.ads ada/s-stalib.ads ada/s-string.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/s-os_lib.ads ada/s-parame.ads ada/s-stalib.ads ada/s-stoele.ads \
+ ada/s-stoele.adb ada/s-string.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/sinput-l.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/a-uncdea.ads ada/alloc.ads ada/atree.ads ada/atree.adb \
@@ -4090,10 +4262,11 @@ ada/tree_gen.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/sem_aux.ads ada/sinfo.ads ada/sinput.ads ada/snames.ads \
ada/stand.ads ada/stringt.ads ada/system.ads ada/s-exctab.ads \
ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads ada/s-stalib.ads \
- ada/s-string.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_in.ads ada/tree_io.ads ada/types.ads ada/uintp.ads \
- ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads
+ ada/s-stoele.ads ada/s-stoele.adb ada/s-string.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_in.ads ada/tree_io.ads \
+ ada/types.ads ada/uintp.ads ada/unchconv.ads ada/unchdeal.ads \
+ ada/urealp.ads
ada/tree_in.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/a-uncdea.ads ada/alloc.ads ada/atree.ads ada/casing.ads \
@@ -4192,10 +4365,11 @@ ada/usage.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/a-uncdea.ads ada/alloc.ads ada/debug.ads ada/hostparm.ads \
ada/namet.ads ada/opt.ads ada/osint.ads ada/output.ads ada/rident.ads \
ada/system.ads ada/s-exctab.ads ada/s-memory.ads ada/s-os_lib.ads \
- ada/s-parame.ads ada/s-rident.ads ada/s-stalib.ads ada/s-string.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/usage.ads ada/usage.adb
+ ada/s-parame.ads ada/s-rident.ads ada/s-stalib.ads ada/s-stoele.ads \
+ ada/s-stoele.adb ada/s-string.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/usage.ads ada/usage.adb
ada/validsw.o : ada/ada.ads ada/a-unccon.ads ada/a-uncdea.ads \
ada/hostparm.ads ada/opt.ads ada/system.ads ada/s-exctab.ads \
diff --git a/gcc/ada/gcc-interface/Makefile.in b/gcc/ada/gcc-interface/Makefile.in
index c9221fb5022..5bb99003e2f 100644
--- a/gcc/ada/gcc-interface/Makefile.in
+++ b/gcc/ada/gcc-interface/Makefile.in
@@ -1503,7 +1503,6 @@ ifeq ($(strip $(filter-out alpha64 ia64 dec hp vms% openvms% alphavms%,$(targ)))
i-cstrea.adb<i-cstrea-vms.adb \
memtrack.adb<memtrack-vms_64.adb \
s-auxdec.ads<s-auxdec-vms_64.ads \
- s-crtl.ads<s-crtl-vms_64.ads \
s-inmaop.adb<s-inmaop-vms.adb \
s-interr.adb<s-interr-vms.adb \
s-intman.adb<s-intman-vms.adb \
diff --git a/gcc/ada/gnatlink.adb b/gcc/ada/gnatlink.adb
index 0e4618f3d64..3f8c540d1d5 100644
--- a/gcc/ada/gnatlink.adb
+++ b/gcc/ada/gnatlink.adb
@@ -439,34 +439,14 @@ procedure Gnatlink is
Compile_Bind_File := False;
when 'o' =>
- if VM_Target = CLI_Target then
- Linker_Options.Increment_Last;
- Linker_Options.Table (Linker_Options.Last) :=
- new String'("/QUIET");
-
- else
- Linker_Options.Increment_Last;
- Linker_Options.Table (Linker_Options.Last) :=
- new String'(Arg);
- end if;
-
Next_Arg := Next_Arg + 1;
if Next_Arg > Argument_Count then
Exit_With_Error ("Missing argument for -o");
end if;
- if VM_Target = CLI_Target then
- Output_File_Name :=
- new String'("/OUTPUT=" & Argument (Next_Arg));
- else
- Output_File_Name :=
- new String'(Argument (Next_Arg));
- end if;
-
- Linker_Options.Increment_Last;
- Linker_Options.Table (Linker_Options.Last) :=
- Output_File_Name;
+ Output_File_Name :=
+ new String'(Executable_Name (Argument (Next_Arg)));
when 'R' =>
Opt.Run_Path_Option := False;
@@ -1728,33 +1708,44 @@ begin
Output_File_Name :=
new String'(Base_Name (Ali_File_Name.all)
& Get_Target_Debuggable_Suffix.all);
+ end if;
- if VM_Target = CLI_Target then
- Linker_Options.Increment_Last;
- Linker_Options.Table (Linker_Options.Last) := new String'("/QUIET");
+ if VM_Target = CLI_Target then
+ Linker_Options.Increment_Last;
+ Linker_Options.Table (Linker_Options.Last) := new String'("/QUIET");
- Linker_Options.Increment_Last;
- Linker_Options.Table (Linker_Options.Last) := new String'("/DEBUG");
+ Linker_Options.Increment_Last;
+ Linker_Options.Table (Linker_Options.Last) := new String'("/DEBUG");
- Linker_Options.Increment_Last;
- Linker_Options.Table (Linker_Options.Last) :=
- new String'("/OUTPUT=" & Output_File_Name.all);
+ Linker_Options.Increment_Last;
+ Linker_Options.Table (Linker_Options.Last) :=
+ new String'("/OUTPUT=" & Output_File_Name.all);
- elsif RTX_RTSS_Kernel_Module_On_Target then
- Linker_Options.Increment_Last;
- Linker_Options.Table (Linker_Options.Last) :=
- new String'("/OUT:" & Output_File_Name.all);
+ elsif RTX_RTSS_Kernel_Module_On_Target then
+ Linker_Options.Increment_Last;
+ Linker_Options.Table (Linker_Options.Last) :=
+ new String'("/OUT:" & Output_File_Name.all);
- else
- Linker_Options.Increment_Last;
- Linker_Options.Table (Linker_Options.Last) := new String'("-o");
+ else
+ Linker_Options.Increment_Last;
+ Linker_Options.Table (Linker_Options.Last) := new String'("-o");
- Linker_Options.Increment_Last;
- Linker_Options.Table (Linker_Options.Last) :=
- new String'(Output_File_Name.all);
- end if;
+ Linker_Options.Increment_Last;
+ Linker_Options.Table (Linker_Options.Last) :=
+ new String'(Output_File_Name.all);
end if;
+ -- Delete existing executable, in case it is a symbolic link, to avoid
+ -- modifying the target of the symbolic link.
+
+ declare
+ Dummy : Boolean;
+ pragma Unreferenced (Dummy);
+
+ begin
+ Delete_File (Output_File_Name.all, Dummy);
+ end;
+
-- Warn if main program is called "test", as that may be a built-in command
-- on Unix. On non-Unix systems executables have a suffix, so the warning
-- will not appear. However, do not warn in the case of a cross compiler.
diff --git a/gcc/ada/s-crtl.ads b/gcc/ada/s-crtl.ads
index 4ad2ceed3b1..bb0700a85a4 100644
--- a/gcc/ada/s-crtl.ads
+++ b/gcc/ada/s-crtl.ads
@@ -31,13 +31,18 @@
-- This package provides the low level interface to the C runtime library
+with Interfaces.C.Strings;
+
with System.Parameters;
package System.CRTL is
pragma Preelaborate;
+ subtype chars_ptr is Interfaces.C.Strings.chars_ptr;
+
subtype chars is System.Address;
-- Pointer to null-terminated array of characters
+ -- Should use Interfaces.C.Strings types instead???
subtype DIRs is System.Address;
-- Corresponds to the C type DIR*
@@ -48,7 +53,7 @@ package System.CRTL is
subtype int is Integer;
type long is range -(2 ** (System.Parameters.long_bits - 1))
- .. +(2 ** (System.Parameters.long_bits - 1)) - 1;
+ .. +(2 ** (System.Parameters.long_bits - 1)) - 1;
subtype off_t is Long_Integer;
@@ -190,7 +195,7 @@ package System.CRTL is
function write (fd : int; buffer : chars; nbytes : int) return int;
pragma Import (C, write, "write");
- function strerror (errno : int) return chars;
+ function strerror (errno : int) return chars_ptr;
pragma Import (C, strerror, "strerror");
end System.CRTL;
diff --git a/gcc/ada/s-errrep.adb b/gcc/ada/s-errrep.adb
deleted file mode 100644
index 783f845d1e4..00000000000
--- a/gcc/ada/s-errrep.adb
+++ /dev/null
@@ -1,68 +0,0 @@
-------------------------------------------------------------------------------
--- --
--- GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS --
--- --
--- S Y S T E M . E R R O R _ R E P O R T I N G --
--- --
--- B o d y --
--- --
--- Copyright (C) 1995-2006, AdaCore --
--- --
--- GNARL 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. GNARL 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 GNARL; see file COPYING. If not, write --
--- to the Free Software Foundation, 51 Franklin Street, Fifth Floor, --
--- Boston, MA 02110-1301, USA. --
--- --
--- As a special exception, if other files instantiate generics from this --
--- unit, or you link this unit with other files to produce an executable, --
--- this unit does not by itself cause the resulting executable to be --
--- covered by the GNU General Public License. This exception does not --
--- however invalidate any other reasons why the executable file might be --
--- covered by the GNU Public License. --
--- --
--- GNARL was developed by the GNARL team at Florida State University. --
--- Extensive contributions were provided by Ada Core Technologies, Inc. --
--- --
-------------------------------------------------------------------------------
-
--- This package must not depend on anything else, since it may be
--- called during elaboration of other packages.
-
-package body System.Error_Reporting is
-
- procedure Write (fildes : Integer; buf : System.Address; nbyte : Integer);
- pragma Import (C, Write, "write");
-
- procedure Prog_Exit (Status : Integer);
- pragma No_Return (Prog_Exit);
- pragma Import (C, Prog_Exit, "exit");
-
- Shutdown_Message : String := "failed run-time assertion : ";
- End_Of_Line : String := "" & ASCII.LF;
-
- --------------
- -- Shutdown --
- --------------
-
- function Shutdown (M : String) return Boolean is
- begin
- Write (2, Shutdown_Message'Address, Shutdown_Message'Length);
- Write (2, M'Address, M'Length);
- Write (2, End_Of_Line'Address, End_Of_Line'Length);
-
- -- This call should never return
-
- Prog_Exit (1);
-
- -- Return is just to keep Ada happy (return required)
-
- return False;
- end Shutdown;
-
-end System.Error_Reporting;
diff --git a/gcc/ada/s-errrep.ads b/gcc/ada/s-errrep.ads
deleted file mode 100644
index 930e0206419..00000000000
--- a/gcc/ada/s-errrep.ads
+++ /dev/null
@@ -1,45 +0,0 @@
-------------------------------------------------------------------------------
--- --
--- GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS --
--- --
--- S Y S T E M . E R R O R _ R E P O R T I N G --
--- --
--- S p e c --
--- --
--- Copyright (C) 1995-2006, AdaCore --
--- --
--- GNARL 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. GNARL 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 GNARL; see file COPYING. If not, write --
--- to the Free Software Foundation, 51 Franklin Street, Fifth Floor, --
--- Boston, MA 02110-1301, USA. --
--- --
--- As a special exception, if other files instantiate generics from this --
--- unit, or you link this unit with other files to produce an executable, --
--- this unit does not by itself cause the resulting executable to be --
--- covered by the GNU General Public License. This exception does not --
--- however invalidate any other reasons why the executable file might be --
--- covered by the GNU Public License. --
--- --
--- GNARL was developed by the GNARL team at Florida State University. --
--- Extensive contributions were provided by Ada Core Technologies, Inc. --
--- --
-------------------------------------------------------------------------------
-
--- This package must not depend on anything else, since it may be
--- called during elaboration of other packages.
-
-package System.Error_Reporting is
- pragma Preelaborate;
-
- function Shutdown (M : String) return Boolean;
- -- Perform emergency shutdown of the entire program. Msg is an error
- -- message to be printed to the console. This is to be used only for
- -- nonrecoverable errors.
-
-end System.Error_Reporting;
diff --git a/gcc/ada/s-fileio.adb b/gcc/ada/s-fileio.adb
index f93fee25e33..22a06b3cec0 100644
--- a/gcc/ada/s-fileio.adb
+++ b/gcc/ada/s-fileio.adb
@@ -31,7 +31,6 @@
with Ada.Finalization; use Ada.Finalization;
with Ada.IO_Exceptions; use Ada.IO_Exceptions;
-with Ada.Unchecked_Conversion;
with Interfaces.C;
with Interfaces.C.Strings; use Interfaces.C.Strings;
@@ -375,16 +374,7 @@ package body System.File_IO is
-------------------
function Errno_Message (Errno : Integer := OS_Lib.Errno) return String is
- pragma Warnings (Off);
- function To_Chars_Ptr is
- new Ada.Unchecked_Conversion (System.Address, chars_ptr);
- -- On VMS, the compiler warns because System.Address is 64 bits, but
- -- chars_ptr is 32 bits. It should be safe, though, because strerror
- -- will return a 32-bit pointer.
- pragma Warnings (On);
-
- Message : constant chars_ptr :=
- To_Chars_Ptr (CRTL.strerror (Errno));
+ Message : constant chars_ptr := CRTL.strerror (Errno);
begin
if Message = Null_Ptr then
diff --git a/gcc/ada/socket.c b/gcc/ada/socket.c
index df3b1206428..ecafb8acd18 100644
--- a/gcc/ada/socket.c
+++ b/gcc/ada/socket.c
@@ -59,6 +59,9 @@
#include <string.h>
/* Required for memcpy() */
+extern const size_t __gnat_sizeof_servent = sizeof(struct servent);
+/* For passing the size of servent to Ada code. */
+
extern void __gnat_disable_sigpipe (int fd);
extern void __gnat_disable_all_sigpipes (void);
extern int __gnat_create_signalling_fds (int *fds);
@@ -74,6 +77,10 @@ extern void __gnat_remove_socket_from_set (fd_set *, int);
extern void __gnat_reset_socket_set (fd_set *);
extern int __gnat_get_h_errno (void);
extern int __gnat_socket_ioctl (int, int, int *);
+extern char * __gnat_servent_s_name (struct servent *);
+extern char ** __gnat_servent_s_aliases (struct servent *);
+extern int __gnat_servent_s_port (struct servent *);
+extern char * __gnat_servent_s_proto (struct servent *);
#if defined (__vxworks) || defined (_WIN32)
extern int __gnat_inet_pton (int, const char *, void *);
#endif
@@ -488,6 +495,61 @@ __gnat_inet_pton (int af, const char *src, void *dst) {
}
#endif
+/*
+ * Accessor functions for struct servent.
+ *
+ * These are needed because servent has different representations on different
+ * platforms, and we don't want to deal with that on the Ada side. For example,
+ * on Linux, we have (see /usr/include netdb.h):
+ *
+ * struct servent
+ * {
+ * char *s_name;
+ * char **s_aliases;
+ * int s_port;
+ * char *s_proto;
+ * };
+ *
+ * and on Windows (see mingw's socket.h):
+ *
+ * struct servent {
+ * char *s_name;
+ * char **s_aliases;
+ * #ifdef _WIN64
+ * char *s_proto;
+ * short s_port;
+ * #else
+ * short s_port;
+ * char *s_proto;
+ * #endif
+ * };
+ */
+
+char *
+__gnat_servent_s_name (struct servent * s)
+{
+ return s->s_name;
+}
+
+char **
+__gnat_servent_s_aliases (struct servent * s)
+{
+ return s->s_aliases;
+}
+
+int
+__gnat_servent_s_port (struct servent * s)
+{
+ return s->s_port;
+}
+
+char *
+__gnat_servent_s_proto (struct servent * s)
+{
+ return s->s_proto;
+}
+
+
#else
# warning Sockets are not supported on this platform
#endif /* defined(HAVE_SOCKETS) */