From: Samuel Thibault <samuel.thibault@eu.citrix.com>
To: Geoffrey Lefebvre <geoffrey@cs.ubc.ca>
Cc: Andrew Warfield <andy@cs.ubc.ca>, Patrick Colp <pjcolp@cs.ubc.ca>,
"xen-devel@lists.xensource.com" <xen-devel@lists.xensource.com>
Subject: [PATCH] caml-stubdom: turn off_t 64bit on x86 [Was: Problems building caml-stubdom]
Date: Thu, 7 Aug 2008 18:25:03 +0100 [thread overview]
Message-ID: <20080807172503.GT6604@implementation.uk.xensource.com> (raw)
In-Reply-To: <c3c918090808062356v3b610f37je526e16043e277b7@mail.gmail.com>
stubdom: turn off_t 64bit on x86
We can decide to make off_t 64bit instead of implementing the LFS
tricks. Name corresponding functions foo64 to permit simple caml
programs linking.
Signed-off-by: Samuel Thibault <samuel.thibault@eu.citrix.com>
diff -r c43e01d53d1d extras/mini-os/include/fcntl.h
--- a/extras/mini-os/include/fcntl.h Wed Aug 06 11:54:09 2008 +0100
+++ b/extras/mini-os/include/fcntl.h Thu Aug 07 18:21:37 2008 +0100
@@ -91,8 +91,9 @@ struct flock64 {
#define F_LINUX_SPECIFIC_BASE 1024
*/
-int open(const char *path, int flags, ...);
-int fcntl(int fd, int cmd, ...);
#endif
+int open(const char *path, int flags, ...) asm("open64");
+int fcntl(int fd, int cmd, ...);
+
#endif
diff -r c43e01d53d1d extras/mini-os/include/posix/sys/mman.h
--- a/extras/mini-os/include/posix/sys/mman.h Wed Aug 06 11:54:09 2008 +0100
+++ b/extras/mini-os/include/posix/sys/mman.h Thu Aug 07 18:21:37 2008 +0100
@@ -14,7 +14,7 @@
#define MAP_FAILED ((void*)0)
-void *mmap(void *start, size_t length, int prot, int flags, int fd, off_t offset);
+void *mmap(void *start, size_t length, int prot, int flags, int fd, off_t offset) asm("mmap64");
int munmap(void *start, size_t length);
#define munlock(addr, len) ((void)addr, (void)len, 0)
#define mlock(addr, len) ((void)addr, (void)len, 0)
diff -r c43e01d53d1d extras/mini-os/include/posix/sys/stat.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/extras/mini-os/include/posix/sys/stat.h Thu Aug 07 18:21:37 2008 +0100
@@ -0,0 +1,7 @@
+#ifndef _POSIX_SYS_STAT_H
+#define _POSIX_SYS_STAT_H
+
+#include_next <sys/stat.h>
+int fstat(int fd, struct stat *buf) asm("fstat64");
+
+#endif /* _POSIX_SYS_STAT_H */
diff -r c43e01d53d1d extras/mini-os/lib/sys.c
--- a/extras/mini-os/lib/sys.c Wed Aug 06 11:54:09 2008 +0100
+++ b/extras/mini-os/lib/sys.c Thu Aug 07 18:21:37 2008 +0100
@@ -204,9 +204,6 @@ int open(const char *pathname, int flags
files[fd].file.offset = 0;
return fd;
}
-#if defined(__x86_64__) || defined(__ia64__)
-__typeof__(open) open64 __attribute__((__alias__("open")));
-#endif
int isatty(int fd)
{
@@ -347,9 +344,6 @@ off_t lseek(int fd, off_t offset, int wh
}
return files[fd].file.offset;
}
-#if defined(__x86_64__) || defined(__ia64__)
-__typeof__(lseek) lseek64 __attribute__((__alias__("lseek")));
-#endif
int fsync(int fd) {
switch (files[fd].type) {
@@ -1184,9 +1178,6 @@ void *mmap(void *start, size_t length, i
return map_frames_ex(&zero, n, 0, 0, 1, DOMID_SELF, 0, 0);
} else ASSERT(0);
}
-#if defined(__x86_64__) || defined(__ia64__)
-__typeof__(mmap) mmap64 __attribute__((__alias__("mmap")));
-#endif
int munmap(void *start, size_t length)
{
diff -r c43e01d53d1d stubdom/newlib.patch
--- a/stubdom/newlib.patch Wed Aug 06 11:54:09 2008 +0100
+++ b/stubdom/newlib.patch Thu Aug 07 18:21:37 2008 +0100
@@ -627,3 +627,123 @@ diff -u -p -r1.1 memcpy.S
#ifdef _I386MACH_NEED_SOTYPE_FUNCTION
#define SOTYPE_FUNCTION(sym) .type SYM(sym),@function
+
+
+We want to have a 64bit offsets libc even on 32bit platforms.
+
+--- ./newlib/configure.host.orig 2008-08-07 16:01:17.801946000 +0100
++++ ./newlib/configure.host 2008-08-07 16:01:34.181064000 +0100
+@@ -317,6 +317,8 @@
+ oext=lo
+ lpfx=
+ aext=la ;;
++ i[34567]86-xen-elf)
++ stdio64_dir=stdio64 ;;
+ *) ;; #shared library not supported for ${host}
+ esac
+
+--- newlib/libc/include/sys/_types.h.orig 2008-08-07 15:22:44.925008000 +0100
++++ newlib/libc/include/sys/_types.h 2008-08-07 15:22:50.824044000 +0100
+@@ -13,8 +13,12 @@
+ #include <sys/lock.h>
+
+ #ifndef __off_t_defined
++#ifdef __MINIOS__
++typedef long long _off_t;
++#else
+ typedef long _off_t;
+ #endif
++#endif
+
+ #if defined(__rtems__)
+ /* device numbers are 32-bit major and and 32-bit minor */
+--- ./newlib/libc/include/sys/config.h.orig 2008-08-07 14:43:25.915866000 +0100
++++ ./newlib/libc/include/sys/config.h 2008-08-07 14:44:13.508154000 +0100
+@@ -69,6 +69,10 @@
+ /* we use some glibc header files so turn on glibc large file feature */
+ #define _LARGEFILE64_SOURCE 1
+ #endif
++#ifdef __MINIOS__
++#define __LARGE64_FILES 1
++#define _LARGEFILE64_SOURCE 1
++#endif
+ #endif
+
+ #ifndef __DYNAMIC_REENT__
+--- ./newlib/libc/include/sys/_default_fcntl.h.orig 2008-08-07 15:08:22.377836000 +0100
++++ ./newlib/libc/include/sys/_default_fcntl.h 2008-08-07 15:08:31.651890000 +0100
+@@ -170,7 +170,11 @@
+ /* Provide _<systemcall> prototypes for functions provided by some versions
+ of newlib. */
+ #ifdef _COMPILING_NEWLIB
+-extern int _open _PARAMS ((const char *, int, ...));
++extern int _open _PARAMS ((const char *, int, ...))
++#ifdef __MINIOS__
++ asm("open64")
++#endif
++ ;
+ extern int _fcntl _PARAMS ((int, int, ...));
+ #ifdef __LARGE64_FILES
+ extern int _open64 _PARAMS ((const char *, int, ...));
+--- ./newlib/libc/include/sys/unistd.h.orig 2008-08-07 15:09:36.449280000 +0100
++++ ./newlib/libc/include/sys/unistd.h 2008-08-07 15:09:51.210370000 +0100
+@@ -101,7 +101,11 @@
+ int _EXFUN(link, (const char *__path1, const char *__path2 ));
+ int _EXFUN(nice, (int __nice_value ));
+ #if !defined(__INSIDE_CYGWIN__)
+-off_t _EXFUN(lseek, (int __fildes, off_t __offset, int __whence ));
++off_t _EXFUN(lseek, (int __fildes, off_t __offset, int __whence ))
++#ifdef __MINIOS__
++ asm("lseek64")
++#endif
++ ;
+ #endif
+ #if defined(__SPU__)
+ #define F_ULOCK 0
+--- ./newlib/libc/include/sys/stat.h.orig 2008-08-07 16:08:50.495116000 +0100
++++ ./newlib/libc/include/sys/stat.h 2008-08-07 16:10:21.799753000 +0100
+@@ -49,6 +49,9 @@
+ long st_spare4[2];
+ #endif
+ };
++#ifdef __MINIOS__
++#define stat64 stat
++#endif
+ #endif
+
+ #define _IFMT 0170000 /* type of file */
+@@ -132,7 +135,11 @@
+ /* Provide prototypes for most of the _<systemcall> names that are
+ provided in newlib for some compilers. */
+ #ifdef _COMPILING_NEWLIB
+-int _EXFUN(_fstat,( int __fd, struct stat *__sbuf ));
++int _EXFUN(_fstat,( int __fd, struct stat *__sbuf ))
++#ifdef __MINIOS__
++ asm("fstat64")
++#endif
++ ;
+ int _EXFUN(_stat,( const char *__path, struct stat *__sbuf ));
+ #ifdef __LARGE64_FILES
+ struct stat64;
+--- ./newlib/libc/include/_syslist.h.orig 2008-08-07 16:24:19.122605000 +0100
++++ ./newlib/libc/include/_syslist.h 2008-08-07 16:24:21.548628000 +0100
+@@ -14,6 +14,7 @@
+ #define _kill kill
+ #define _link link
+ #define _lseek lseek
++#define _lseek64 lseek64
+ #define _open open
+ #define _read read
+ #define _sbrk sbrk
+--- newlib/libc/include/reent.h.orig 2008-08-07 16:28:49.846502000 +0100
++++ newlib/libc/include/reent.h 2008-08-07 16:29:02.096586000 +0100
+@@ -87,6 +87,9 @@
+ #if defined(__CYGWIN__) && defined(_COMPILING_NEWLIB)
+ #define stat64 __stat64
+ #endif
++#if defined(__MINIOS__)
++#define stat64 stat
++#endif
+
+ struct stat64;
+
next prev parent reply other threads:[~2008-08-07 17:25 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-08-06 22:33 Problems building caml-stubdom Geoffrey Lefebvre
2008-08-07 0:55 ` Samuel Thibault
2008-08-07 6:56 ` Geoffrey Lefebvre
2008-08-07 10:58 ` Samuel Thibault
2008-08-07 17:25 ` Samuel Thibault [this message]
2008-08-07 23:42 ` [PATCH] caml-stubdom: turn off_t 64bit on x86 [Was: Problems building caml-stubdom] Geoffrey Lefebvre
2008-08-07 23:46 ` Samuel Thibault
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20080807172503.GT6604@implementation.uk.xensource.com \
--to=samuel.thibault@eu.citrix.com \
--cc=andy@cs.ubc.ca \
--cc=geoffrey@cs.ubc.ca \
--cc=pjcolp@cs.ubc.ca \
--cc=xen-devel@lists.xensource.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.