All of lore.kernel.org
 help / color / mirror / Atom feed
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;
+ 

  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.