diff options
author | Arnaud Charlet <charlet@gcc.gnu.org> | 2007-08-14 10:50:51 +0200 |
---|---|---|
committer | Arnaud Charlet <charlet@gcc.gnu.org> | 2007-08-14 10:50:51 +0200 |
commit | 33c423c8b24c3f68cb92f95b6d2e1b9dde16ab5d (patch) | |
tree | bc637fac407ff7e642e0541a6da74fc5d842ee43 /gcc/ada/s-os_lib.adb | |
parent | 6d64bc378c6d5f95f5f76ea3e42e8c009f4b9b4d (diff) | |
download | gcc-33c423c8b24c3f68cb92f95b6d2e1b9dde16ab5d.zip gcc-33c423c8b24c3f68cb92f95b6d2e1b9dde16ab5d.tar.gz gcc-33c423c8b24c3f68cb92f95b6d2e1b9dde16ab5d.tar.bz2 |
[multiple changes]
2007-08-14 Geert Bosch <bosch@adacore.com>
* i-forbla.ads, i-forbla.adb, a-ngcoar.adb, a-ngcoar.ads, i-forlap.ads,
s-gearop.adb, s-gecobl.adb, s-gecobl.ads, s-gerela.adb, s-gerela.ads:
Add required linker pragmas for automatically linking with the gnalasup
linear algebra support library, and the systems math library.
Rename cdot to cdotu and zdot to zdotu.
Update header comment to describe purpose of package.
2007-08-14 Thomas Quinot <quinot@adacore.com>
* exp_ch7.adb (Find_Final_List): For an anonymous access type that has
an explicitly specified Associated_Final_Chain, use that list.
(Expand_N_Package_Body): Build dispatch tables of library level tagged
types.
(Expand_N_Package_Declaration): Build dispatch tables of library level
tagged types. Minor code cleanup.
2007-08-14 Vincent Celier <celier@adacore.com>
* gnatchop.adb (Terminate_Program): Remove exception and use
Types.Terminate_Program instead.
* osint.ads, osint.adb (Current_Exit_Status): New global variable
(Find_Program_Name): Added protection against empty name.
(OS_Exit_Through_Exception): New procedure
* s-os_lib.ads, s-os_lib.adb (OS_Exit): New procedure body
(OS_Exit_Default): New procedure that contains the previous
implementation of procedure OS_Exit.
(Final_Value): Remove obsolete Interix stuff.
2007-08-14 Thomas Quinot <quinot@adacore.com>
* g-socket.ads: Reorganize example code so that it also works on
Windows XP.
2007-08-14 Tristan Gingold <gingold@adacore.com>
* g-trasym.ads: AIX now supports symbolic backtraces.
2007-08-14 Ed Schonberg <schonberg@adacore.com>
* lib-load.adb (From_Limited_With_Chain): Always scan the stack of
units being loaded to detect circularities. A circularity may be
present even if the current chain of pending units to load starts from
a limited_with_clause.
* lib-load.ads: Change profile of Load_Unit to use a with_clause
rather than a boolean flag, in order to detect circularities in
with_clauses.
* par-load.adb: Use current with_clause in calls to Load_Unit, rather
than propagating the From_Limited_With flag, in order to handle
properly circularities involving with_clauses.
2007-08-14 Nicolas Setton <setton@adacore.com>
* link.c (FreeBSD): Add "const" keyword where needed, to eliminate
warnings.
2007-08-14 Arnaud Charlet <charlet@adacore.com>
* Makefile.in: GNATRTL_LINEARALGEBRA_OBJS: New variable holding objects
to build for libgnala.
libgnat: Add rules to build libgnala.a
(LIBGNAT_TARGET_PAIRS for VxWorks): Remove s-osinte-vxworks.adb from
target pairs of the VxWorks 6 kernel runtime, use it only for VxWorks 5.
Add s-osinte-vxworks-kernel.adb to the target pairs of the
kernel run-time lib for VxWorks 6, which would provide a different
implementation for Task_Cont and Task_Stop than the VxWorks 5 version.
x86-solaris section (EH_MECHANISM): Set to -gcc, as this port is now
running ZCX by default.
Add g-sttsne-locking to LynxOS version.
Remove g-sttsne-vxworks.ads; use g-sttsne-locking.ads instead.
On x86/darwin, use a-numaux-x86.ad? and system-darwin-x86.ads.
* system-darwin-x86.ads: New file.
* Make-lang.in: Delete files before copying onto them, so if they are
read-only, the copy won't fail.
Update dependencies
2007-08-14 Pascal Obry <obry@adacore.com>
* mdll-fil.adb, * mdll.adb: Implement a more consistent libraries
naming scheme.
2007-08-14 Vincent Celier <celier@adacore.com>
* mlib-utl.adb (Gcc_Name): Change from constant String to String_Access
(Gcc): Initialize Gcc_Name at the first call
2007-08-14 Ed Schonberg <schonberg@adacore.com>
* sem_ch7.adb (Analyze_Package_Specification): Do not install private
with_clauses of the enclosing unit when analyzing the package
specification of a nested instance.
2007-08-14 Hristian Kirtchev <kirtchev@adacore.com>
* sinfo.ads, sinfo.adb (Is_Coextension, Set_Is_Coextension): Removed.
(Is_Dynamic_Coextension, Set_Is_Dynamic_Coextension): New routines.
Remove flag Is_Coextension. Add flag Is_Dynamic_Coextension. Update the
layout of N_Allocator.
2007-08-14 Thomas Quinot <quinot@adacore.com>
* rtsfind.adb (Check_RPC): Add PCS version check.
* gnatvsn.ads, gnatvsn.adb: Add PCS version.
(Gnat_Free_Software): New function.
* sem_dist.ads, sem_dist.adb (Get_PCS_Version): New subprogram. Returns
the PCS_Version value from s-parint, used to check that it is consistent
with what exp_dist expects.
* s-parint.ads (PCS_Version): New entity for checking consistency
between exp_dist and PCS.
* gen-soccon.c: (SO_REUSEPORT): New constant.
2007-08-14 Hristian Kirtchev <kirtchev@adacore.com>
* a-calfor.adb (Image (Duration; Boolean)): Change type of local
variable Sub_Second to Duration in order to accomodate a larger range
of arithmetic operations.
2007-08-14 Bob Duff <duff@adacore.com>
* g-sttsne-locking.ads: Move comments from spec to body.
* g-sttsne-locking.adb: Move comments from spec to body.
* g-sttsne-vxworks.ads: Removed.
* g-sttsne-vxworks.adb: Removed.
From-SVN: r127467
Diffstat (limited to 'gcc/ada/s-os_lib.adb')
-rwxr-xr-x | gcc/ada/s-os_lib.adb | 115 |
1 files changed, 44 insertions, 71 deletions
diff --git a/gcc/ada/s-os_lib.adb b/gcc/ada/s-os_lib.adb index 9649e1f..c37ab61 100755 --- a/gcc/ada/s-os_lib.adb +++ b/gcc/ada/s-os_lib.adb @@ -1698,18 +1698,13 @@ package body System.OS_Lib is Canonical_File_Addr : System.Address; Canonical_File_Len : Integer; - Need_To_Check_Drive_Letter : Boolean := False; - -- Set to true if Name is an absolute path that starts with "//" - function Strlen (S : System.Address) return Integer; pragma Import (C, Strlen, "strlen"); function Final_Value (S : String) return String; - -- Make final adjustment to the returned string. - -- To compensate for non standard path name in Interix, - -- if S is "/x" or starts with "/x", where x is a capital - -- letter 'A' to 'Z', add an additional '/' at the beginning - -- so that the returned value starts with "//x". + -- Make final adjustment to the returned string. This function strips + -- trailing directory separators, and folds returned string to lower + -- case if required. function Get_Directory (Dir : String) return String; -- If Dir is not empty, return it, adding a directory separator @@ -1727,71 +1722,33 @@ package body System.OS_Lib is Last : Natural; begin - -- Interix has the non standard notion of disk drive - -- indicated by two '/' followed by a capital letter - -- 'A' .. 'Z'. One of the two '/' may have been removed - -- by Normalize_Pathname. It has to be added again. - -- For other OSes, this should not make no difference. - - if Need_To_Check_Drive_Letter - and then S'Length >= 2 - and then S (S'First) = '/' - and then S (S'First + 1) in 'A' .. 'Z' - and then (S'Length = 2 or else S (S'First + 2) = '/') - then - declare - Result : String (1 .. S'Length + 1); - - begin - Result (1) := '/'; - Result (2 .. Result'Last) := S; - Last := Result'Last; - - if Fold_To_Lower_Case then - System.Case_Util.To_Lower (Result); - end if; - - -- Remove trailing directory separator, if any - - if Last > 1 and then - (Result (Last) = '/' or else - Result (Last) = Directory_Separator) - then - Last := Last - 1; - end if; + if Fold_To_Lower_Case then + System.Case_Util.To_Lower (S1); + end if; - return Result (1 .. Last); - end; + -- Remove trailing directory separator, if any - else - if Fold_To_Lower_Case then - System.Case_Util.To_Lower (S1); - end if; + Last := S1'Last; - -- Remove trailing directory separator, if any - - Last := S1'Last; + if Last > 1 + and then (S1 (Last) = '/' + or else + S1 (Last) = Directory_Separator) + then + -- Special case for Windows: C:\ - if Last > 1 - and then (S1 (Last) = '/' - or else - S1 (Last) = Directory_Separator) + if Last = 3 + and then S1 (1) /= Directory_Separator + and then S1 (2) = ':' then - -- Special case for Windows: C:\ - - if Last = 3 - and then S1 (1) /= Directory_Separator - and then S1 (2) = ':' - then - null; + null; - else - Last := Last - 1; - end if; + else + Last := Last - 1; end if; - - return S1 (1 .. Last); end if; + + return S1 (1 .. Last); end Final_Value; ------------------- @@ -1956,12 +1913,6 @@ package body System.OS_Lib is Last := Reference_Dir'Length; end if; - -- If name starts with "//", we may have a drive letter on Interix - - if Last = 1 and then End_Path >= 3 then - Need_To_Check_Drive_Letter := (Path_Buffer (1 .. 2)) = "//"; - end if; - Start := Last + 1; Finish := Last; @@ -2167,6 +2118,28 @@ package body System.OS_Lib is return Open_Read_Write (C_Name (C_Name'First)'Address, Fmode); end Open_Read_Write; + ------------- + -- OS_Exit -- + ------------- + + procedure OS_Exit (Status : Integer) is + begin + OS_Exit_Ptr (Status); + raise Program_Error; + end OS_Exit; + + --------------------- + -- OS_Exit_Default -- + --------------------- + + procedure OS_Exit_Default (Status : Integer) is + procedure GNAT_OS_Exit (Status : Integer); + pragma Import (C, GNAT_OS_Exit, "__gnat_os_exit"); + pragma No_Return (GNAT_OS_Exit); + begin + GNAT_OS_Exit (Status); + end OS_Exit_Default; + -------------------- -- Pid_To_Integer -- -------------------- |