From: Daniel Berger Date: 2003-10-31T23:25:36+09:00 Subject: Re: 64-bit Ruby on Solaris? Yukihiro Matsumoto wrote: > > Hi, > > In message "64-bit Ruby on Solaris?" > on 03/10/31, Daniel Berger writes: > > |Solaris 9 > |gcc 3.3.1 > |Ruby 1.8.1 p2 > |Sunblade 100, UltraSparc IIe > | > |As usual, I'm playing with things I don't truly understand. Anyway, I > |thought I'd try building 1.8.1 p2 as 64 bit since I've upgraded my > |compiler since last time. > | > |After running configure, I manually added "-m64 -mcpu=ultrasparc" into > |the CC line of the Makefile. I seemed to get further this time, and > |died with a different error: > > Seems like configure failed to detect platform stdio information. I > hope you (or others) can help me to support newer Solaris. > > matz. Ok - below is the stdio.h file. Please let me know what else you need. If I could, I would give you an account on a Solaris box here at work, but that's not possible unfortunately. There is, however, a Sparc/Solaris box on SourceForge's compile farm if you're interested. Regards, Dan /* stdio.h from Solaris 9 */ /* Copyright (c) 1988 AT&T */ /* All Rights Reserved */ /* THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE OF AT&T */ /* The copyright notice above does not evidence any */ /* actual or intended publication of such source code. */ /* * Copyright (c) 1993-2001, by Sun Microsystems, Inc. * All rights reserved. */ /* * User-visible pieces of the ANSI C standard I/O package. */ #ifndef _STDIO_H #define _STDIO_H #pragma ident "@(#)stdio.h 1.79 01/04/16 SMI" /* SVr4.0 2.34.1.2 */ #include /* * If feature test macros are set that enable interfaces that use types * defined in , get those types by doing the include. * * Note that in asking for the interfaces associated with this feature test * macro one also asks for definitions of the POSIX types. */ /* * Allow global visibility for symbols defined in * C++ "std" namespace in . */ #if __cplusplus >= 199711L using std::FILE; using std::size_t; using std::fpos_t; using std::remove; using std::rename; using std::tmpfile; using std::tmpnam; using std::fclose; using std::fflush; using std::fopen; using std::freopen; using std::setbuf; using std::setvbuf; using std::fprintf; using std::fscanf; using std::printf; using std::scanf; using std::sprintf; using std::sscanf; using std::vfprintf; using std::vprintf; using std::vsprintf; using std::fgetc; using std::fgets; using std::fputc; using std::fputs; using std::getc; using std::getchar; using std::gets; using std::putc; using std::putchar; using std::puts; using std::ungetc; using std::fread; using std::fwrite; using std::fgetpos; using std::fseek; using std::fsetpos; using std::ftell; using std::rewind; using std::clearerr; using std::feof; using std::ferror; using std::perror; #endif #ifdef __cplusplus extern "C" { #endif #if defined(_LARGEFILE_SOURCE) || defined(_XPG5) #ifndef _OFF_T #define _OFF_T #if defined(_LP64) || _FILE_OFFSET_BITS == 32 typedef long off_t; #else typedef __longlong_t off_t; #endif #ifdef _LARGEFILE64_SOURCE #ifdef _LP64 typedef off_t off64_t; #else typedef __longlong_t off64_t; #endif #endif /* _LARGEFILE64_SOURCE */ #endif /* _OFF_T */ #endif /* _LARGEFILE_SOURCE */ #ifdef _LARGEFILE64_SOURCE #ifdef _LP64 typedef fpos_t fpos64_t; #else typedef __longlong_t fpos64_t; #endif #endif /* _LARGEFILE64_SOURCE */ /* * XPG4 requires that va_list be defined in "as described in * ". ANSI-C and POSIX require that the namespace of * not be polluted with this name. */ #if defined(_XOPEN_SOURCE) && (_XOPEN_VERSION - 0 >= 4) && !defined(_VA_LIST) #define _VA_LIST typedef __va_list va_list; #endif /* defined(_XOPEN_SOURCE) && (_XOPEN_VERSION - 0 >= 4) && ... */ #if defined(__EXTENSIONS__) || __STDC__ - 0 == 0 || \ defined(_POSIX_C_SOURCE) || defined(_XOPEN_SOURCE) #define L_ctermid 9 #define L_cuserid 9 #endif #if defined(__EXTENSIONS__) || ((__STDC__ - 0 == 0 && \ !defined(_POSIX_C_SOURCE))) || defined(_XOPEN_SOURCE) #define P_tmpdir "/var/tmp/" #endif /* defined(__EXTENSIONS__) || ((__STDC__ - 0 == 0 && ... */ #ifndef _STDIO_ALLOCATE extern unsigned char _sibuf[], _sobuf[]; #endif /* large file compilation environment setup */ #if !defined(_LP64) && _FILE_OFFSET_BITS == 64 #ifdef __PRAGMA_REDEFINE_EXTNAME #pragma redefine_extname fopen fopen64 #pragma redefine_extname freopen freopen64 #pragma redefine_extname tmpfile tmpfile64 #pragma redefine_extname fgetpos fgetpos64 #pragma redefine_extname fsetpos fsetpos64 #ifdef _LARGEFILE_SOURCE #pragma redefine_extname fseeko fseeko64 #pragma redefine_extname ftello ftello64 #endif #else /* __PRAGMA_REDEFINE_EXTNAME */ #if defined(__STDC__) extern FILE *fopen64(const char *, const char *); extern FILE *freopen64(const char *, const char *, FILE *); extern FILE *tmpfile64(void); extern int fgetpos64(FILE *, fpos_t *); extern int fsetpos64(FILE *, const fpos_t *); #else /* defined(__STDC__) */ extern FILE *fopen64(); extern FILE *freopen64(); extern FILE *tmpfile64(); extern int fgetpos64(); extern int fsetpos64(); #endif /* defined(__STDC__) */ #define fopen fopen64 #define freopen freopen64 #define tmpfile tmpfile64 #define fgetpos fgetpos64 #define fsetpos fsetpos64 #ifdef _LARGEFILE_SOURCE #define fseeko fseeko64 #define ftello ftello64 #endif #endif /* __PRAGMA_REDEFINE_EXTNAME */ #endif /* !_LP64 && _FILE_OFFSET_BITS == 64 */ #ifndef _LP64 extern unsigned char *_bufendtab[]; extern FILE *_lastbuf; #endif /* In the LP64 compilation environment, all APIs are already large file */ #if defined(_LP64) && defined(_LARGEFILE64_SOURCE) #ifdef __PRAGMA_REDEFINE_EXTNAME #pragma redefine_extname fopen64 fopen #pragma redefine_extname freopen64 freopen #pragma redefine_extname tmpfile64 tmpfile #pragma redefine_extname fgetpos64 fgetpos #pragma redefine_extname fsetpos64 fsetpos #ifdef _LARGEFILE_SOURCE #pragma redefine_extname fseeko64 fseeko #pragma redefine_extname ftello64 ftello #endif #else /* __PRAGMA_REDEFINE_EXTNAME */ #define fopen64 fopen #define freopen64 freopen #define tmpfile64 tmpfile #define fgetpos64 fgetpos #define fsetpos64 fsetpos #ifdef _LARGEFILE_SOURCE #define fseeko64 fseeko #define ftello64 ftello #endif #endif /* __PRAGMA_REDEFINE_EXTNAME */ #endif /* _LP64 && _LARGEFILE64_SOURCE */ #if defined(__STDC__) #if defined(__EXTENSIONS__) || defined(_REENTRANT) extern char *tmpnam_r(char *); #endif /* defined(__EXTENSIONS__) || defined(_REENTRANT) */ #if defined(__EXTENSIONS__) || (__STDC__ == 0 && \ !defined(_XOPEN_SOURCE) && !defined(_POSIX_C_SOURCE)) extern void setbuffer(FILE *, char *, size_t); extern int setlinebuf(FILE *); /* * These v*scanf functions are part of the C99 standard. At such * time that the standard is fully implemented, these functions * will be moved to iso/stdio_iso.h. */ extern int vfscanf(FILE *, const char *, __va_list); extern int vscanf(const char *, __va_list); extern int vsscanf(const char *, const char *, __va_list); #endif #if defined(__EXTENSIONS__) || (__STDC__ == 0 && \ !defined(_XOPEN_SOURCE) && !defined(_POSIX_C_SOURCE)) || \ defined(_XPG5) /* PRINTFLIKE3 */ extern int snprintf(char *, size_t, const char *, ...); #endif #if defined(__EXTENSIONS__) || (__STDC__ == 0 && \ !defined(_XOPEN_SOURCE) && !defined(_POSIX_C_SOURCE)) || \ defined(_XPG5) extern int vsnprintf(char *, size_t, const char *, __va_list); #endif /* defined(__EXTENSIONS__) || __STDC__ == 0 ... */ /* * The following are known to POSIX and XOPEN, but not to ANSI-C. */ #if defined(__EXTENSIONS__) || __STDC__ == 0 || \ defined(_POSIX_C_SOURCE) || defined(_XOPEN_SOURCE) extern FILE *fdopen(int, const char *); extern char *ctermid(char *); extern int fileno(FILE *); #endif /* defined(__EXTENSIONS__) || __STDC__ == 0 ... */ /* * The following are known to POSIX.1c, but not to ANSI-C or XOPEN. */ #if defined(__EXTENSIONS__) || defined(_REENTRANT) || \ (_POSIX_C_SOURCE - 0 >= 199506L) extern void flockfile(FILE *); extern int ftrylockfile(FILE *); extern void funlockfile(FILE *); extern int getc_unlocked(FILE *); extern int getchar_unlocked(void); extern int putc_unlocked(int, FILE *); extern int putchar_unlocked(int); #endif /* defined(__EXTENSIONS__) || defined(_REENTRANT).. */ /* * The following are known to XOPEN, but not to ANSI-C or POSIX. */ #if defined(__EXTENSIONS__) || __STDC__ == 0 || defined(_XOPEN_SOURCE) extern FILE *popen(const char *, const char *); extern char *cuserid(char *); extern char *tempnam(const char *, const char *); extern int getopt(int, char *const *, const char *); #if !defined(_XOPEN_SOURCE) extern int getsubopt(char **, char *const *, char **); #endif /* !defined(_XOPEN_SOURCE) */ extern char *optarg; extern int optind, opterr, optopt; extern int getw(FILE *); extern int putw(int, FILE *); extern int pclose(FILE *); #endif /* defined(__EXTENSIONS__) || __STDC__ == 0 ... */ /* * The following are defined as part of the Large File Summit interfaces. */ #if defined(_LARGEFILE_SOURCE) || defined(_XPG5) extern int fseeko(FILE *, off_t, int); extern off_t ftello(FILE *); #endif /* * The following are defined as part of the transitional Large File Summit * interfaces. */ #if defined(_LARGEFILE64_SOURCE) && !((_FILE_OFFSET_BITS == 64) && \ !defined(__PRAGMA_REDEFINE_EXTNAME)) extern FILE *fopen64(const char *, const char *); extern FILE *freopen64(const char *, const char *, FILE *); extern FILE *tmpfile64(void); extern int fgetpos64(FILE *, fpos64_t *); extern int fsetpos64(FILE *, const fpos64_t *); extern int fseeko64(FILE *, off64_t, int); extern off64_t ftello64(FILE *); #endif #else /* !defined __STDC__ */ #ifndef _LP64 #define _bufend(p) ((fileno(p) < _NFILE) ? _bufendtab[fileno(p)] : \ (unsigned char *)_realbufend(p)) #define _bufsiz(p) (_bufend(p) - (p)->_base) #endif /* _LP64 */ #if defined(__EXTENSIONS__) || defined(_REENTRANT) extern char *tmpnam_r(); #endif /* defined(__EXTENSIONS__) || defined(_REENTRANT) */ #if defined(__EXTENSIONS__) || \ (!defined(_XOPEN_SOURCE) && !defined(_POSIX_C_SOURCE)) extern void setbuffer(); extern int setlinebuf(); extern int vfscanf(); extern int vscanf(); extern int vsscanf(); #endif #if defined(__EXTENSIONS__) || \ defined(_POSIX_C_SOURCE) || defined(_XOPEN_SOURCE) extern FILE *fdopen(); extern char *ctermid(); extern int fileno(); #endif /* defined(__EXTENSIONS__) || defined(_POSIX_C_SOURCE... */ #if defined(__EXTENSIONS__) || defined(_REENTRANT) || \ (_POSIX_C_SOURCE - 0 >= 199506L) extern void flockfile(); extern int ftrylockfile(); extern void funlockfile(); extern int getc_unlocked(); extern int getchar_unlocked(); extern int putc_unlocked(); extern int putchar_unlocked(); #endif /* defined(__EXTENSIONS__) || defined(_REENTRANT).. */ #if defined(__EXTENSIONS__) || defined(_XOPEN_SOURCE) extern FILE *popen(); extern char *cuserid(); extern char *tempnam(); extern int getopt(); #if !defined(_XOPEN_SOURCE) extern int getsubopt(); #endif /* !defined(_XOPEN_SOURCE) */ extern char *optarg; extern int optind, opterr, optopt; extern int getw(); extern int putw(); extern int pclose(); #endif /* defined(__EXTENSIONS__) || defined(_XOPEN_SOURCE) */ #if defined(_LARGEFILE_SOURCE) || defined(_XPG5) extern int fseeko(); extern off_t ftello(); #endif #if defined(_LARGEFILE64_SOURCE) && !((_FILE_OFFSET_BITS == 64) && \ !defined(__PRAGMA_REDEFINE_EXTNAME)) extern FILE *fopen64(); extern FILE *freopen64(); extern FILE *tmpfile64(); extern int fgetpos64(); extern int fsetpos64(); extern int fseeko64(); extern off64_t ftello64(); #endif #endif /* __STDC__ */ #if !defined(__lint) #if defined(__EXTENSIONS__) || defined(_REENTRANT) || \ (_POSIX_C_SOURCE - 0 >= 199506L) #ifndef _LP64 #ifdef __STDC__ #define getc_unlocked(p) (--(p)->_cnt < 0 \ ? __filbuf(p) \ : (int)*(p)->_ptr++) #define putc_unlocked(x, p) (--(p)->_cnt < 0 \ ? __flsbuf((x), (p)) \ : (int)(*(p)->_ptr++ = \ (unsigned char) (x))) #else #define getc_unlocked(p) (--(p)->_cnt < 0 \ ? _filbuf(p) \ : (int)*(p)->_ptr++) #define putc_unlocked(x, p) (--(p)->_cnt < 0 \ ? _flsbuf((x), (p)) \ : (int)(*(p)->_ptr++ = \ (unsigned char) (x))) #endif /* __STDC__ */ #endif /* _LP64 */ #define getchar_unlocked() getc_unlocked(stdin) #define putchar_unlocked(x) putc_unlocked((x), stdout) #endif /* defined(__EXTENSIONS__) || defined(_REENTRANT).. */ #endif /* !defined(__lint) */ #ifdef __cplusplus } #endif #endif /* _STDIO_H */