aboutsummaryrefslogtreecommitdiff
path: root/gcc/ada
diff options
context:
space:
mode:
authorPascal Obry <obry@adacore.com>2014-08-01 08:09:43 +0000
committerArnaud Charlet <charlet@gcc.gnu.org>2014-08-01 10:09:43 +0200
commit479f90598ae5c20aa042e4700a98f273c8094496 (patch)
tree985eb45e6091440293155ce13497b176ad648ef3 /gcc/ada
parent2b9fbec94e888c688fa4d7e1d23658f54cab2b41 (diff)
downloadgcc-479f90598ae5c20aa042e4700a98f273c8094496.zip
gcc-479f90598ae5c20aa042e4700a98f273c8094496.tar.gz
gcc-479f90598ae5c20aa042e4700a98f273c8094496.tar.bz2
adaint.h, adaint.c (__gnat_open): Added.
2014-08-01 Pascal Obry <obry@adacore.com> * adaint.h, adaint.c (__gnat_open): Added. * s-crtl.ads (open): Import __gnat_open for large file support. From-SVN: r213411
Diffstat (limited to 'gcc/ada')
-rw-r--r--gcc/ada/ChangeLog5
-rw-r--r--gcc/ada/adaint.c21
-rw-r--r--gcc/ada/adaint.h1
-rw-r--r--gcc/ada/s-crtl.ads2
4 files changed, 28 insertions, 1 deletions
diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog
index 0c348fa..51f9202 100644
--- a/gcc/ada/ChangeLog
+++ b/gcc/ada/ChangeLog
@@ -1,3 +1,8 @@
+2014-08-01 Pascal Obry <obry@adacore.com>
+
+ * adaint.h, adaint.c (__gnat_open): Added.
+ * s-crtl.ads (open): Import __gnat_open for large file support.
+
2014-08-01 Robert Dewar <dewar@adacore.com>
* sem_case.adb (Dup_Choice): Improve message for integer constants.
diff --git a/gcc/ada/adaint.c b/gcc/ada/adaint.c
index e031393..42a8077 100644
--- a/gcc/ada/adaint.c
+++ b/gcc/ada/adaint.c
@@ -1219,6 +1219,27 @@ __gnat_open_new_temp (char *path, int fmode)
return fd < 0 ? -1 : fd;
}
+int
+__gnat_open (char *path, int fmode)
+{
+ int fd;
+
+#if defined (VMS)
+ fd = open (path, fmode, PERM, "mbc=16", "deq=64", "fop=tef");
+#elif defined (__MINGW32__)
+ {
+ TCHAR wpath[GNAT_MAX_PATH_LEN];
+
+ S2WSC (wpath, path, GNAT_MAX_PATH_LEN);
+ fd = _topen (wpath, fmode, PERM);
+ }
+#else
+ fd = GNAT_OPEN (path, fmode, PERM);
+#endif
+
+ return fd < 0 ? -1 : fd;
+}
+
/****************************************************************
** Perform a call to GNAT_STAT or GNAT_FSTAT, and extract as much information
** as possible from it, storing the result in a cache for later reuse
diff --git a/gcc/ada/adaint.h b/gcc/ada/adaint.h
index fd3ebb2..a870910 100644
--- a/gcc/ada/adaint.h
+++ b/gcc/ada/adaint.h
@@ -143,6 +143,7 @@ extern FILE *__gnat_fopen (char *, char *, int,
char *);
extern FILE *__gnat_freopen (char *, char *, FILE *,
int, char *);
+extern int __gnat_open (char *, int);
extern int __gnat_open_read (char *, int);
extern int __gnat_open_rw (char *, int);
extern int __gnat_open_create (char *, int);
diff --git a/gcc/ada/s-crtl.ads b/gcc/ada/s-crtl.ads
index ba7332d..15c7c92 100644
--- a/gcc/ada/s-crtl.ads
+++ b/gcc/ada/s-crtl.ads
@@ -224,7 +224,7 @@ package System.CRTL is
pragma Import (C, unlink, "__gnat_unlink");
function open (filename : chars; oflag : int) return int;
- pragma Import (C, open, "open");
+ pragma Import (C, open, "__gnat_open");
function close (fd : int) return int;
pragma Import (C, close, "close");