diff options
author | charlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4> | 2009-11-30 10:07:32 +0000 |
---|---|---|
committer | charlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4> | 2009-11-30 10:07:32 +0000 |
commit | 9cdffbc8e4a21e2ebd91c33264a250b3d0328129 (patch) | |
tree | 7bec3cf8139da8c3fc9ab89202f6b0894c50fe0e | |
parent | 92d7a451bc1093930f14896b59bf02d61843d5b6 (diff) | |
download | gcc-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/ChangeLog | 29 | ||||
-rw-r--r-- | gcc/ada/Makefile.rtl | 1 | ||||
-rw-r--r-- | gcc/ada/g-arrspl.adb | 4 | ||||
-rw-r--r-- | gcc/ada/g-dyntab.adb | 7 | ||||
-rw-r--r-- | gcc/ada/g-socket.adb | 16 | ||||
-rw-r--r-- | gcc/ada/g-sothco.ads | 26 | ||||
-rw-r--r-- | gcc/ada/g-stseme.adb | 16 | ||||
-rw-r--r-- | gcc/ada/gcc-interface/Make-lang.in | 360 | ||||
-rw-r--r-- | gcc/ada/gcc-interface/Makefile.in | 1 | ||||
-rw-r--r-- | gcc/ada/gnatlink.adb | 73 | ||||
-rw-r--r-- | gcc/ada/s-crtl.ads | 9 | ||||
-rw-r--r-- | gcc/ada/s-errrep.adb | 68 | ||||
-rw-r--r-- | gcc/ada/s-errrep.ads | 45 | ||||
-rw-r--r-- | gcc/ada/s-fileio.adb | 12 | ||||
-rw-r--r-- | gcc/ada/socket.c | 62 |
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) */ |