From 7f2d57e827a12571b28c9c465ee5dcfc20e3d62e Mon Sep 17 00:00:00 2001 From: Matthew Flatt Date: Fri, 28 May 2010 07:13:28 -0600 Subject: [PATCH] build changes aimed at making Sun tools work Merge to v5.0 --- collects/compiler/private/xform.rkt | 4 ++-- src/foreign/README | 2 ++ src/foreign/foreign.c | 2 +- src/foreign/foreign.rktc | 2 +- src/foreign/gcc/libffi/src/x86/ffitarget.h | 4 ++-- 5 files changed, 8 insertions(+), 6 deletions(-) diff --git a/collects/compiler/private/xform.rkt b/collects/compiler/private/xform.rkt index 5c09b5a126..3d40192cd2 100644 --- a/collects/compiler/private/xform.rkt +++ b/collects/compiler/private/xform.rkt @@ -476,8 +476,8 @@ (define recorded-cpp-in (and precompiled-header (open-input-file (change-suffix precompiled-header #".e")))) - (define re:boring #rx#"^(?:(?:[ \t]*)|(?:# .*)|(?:#line .*)|(?:#pragma implementation.*)|(?:#pragma interface.*)|(?:#pragma once)|(?:#pragma warning.*))$") - (define re:uninteresting #rx#"^(?:(?:[ \t]*)|(?:# .*)|(?:#line .*)|(?:#pragma implementation.*)|(?:#pragma interface.*)|(?:#pragma once)|(?:#pragma GCC diagnostic.*)|(?:#pragma warning.*))$") + (define re:boring #rx#"^(?:(?:[ \t]*)|(?:# .*)|(?:#line .*)|(?:#pragma implementation.*)|(?:#pragma interface.*)|(?:#pragma once)|(?:#pragma warning.*)|(?:#ident.*))$") + (define re:uninteresting #rx#"^(?:(?:[ \t]*)|(?:# .*)|(?:#line .*)|(?:#pragma implementation.*)|(?:#pragma interface.*)|(?:#pragma once)|(?:#pragma GCC diagnostic.*)|(?:#pragma warning.*)|(?:#ident.*))$") (define (skip-to-interesting-line p) (let ([l (read-bytes-line p 'any)]) (cond diff --git a/src/foreign/README b/src/foreign/README index d47657ab5b..7346e5c9b9 100644 --- a/src/foreign/README +++ b/src/foreign/README @@ -38,6 +38,8 @@ Local changes: * Observing ftruncate result in closures.c to remove warning. (commit b5ee4ac21b1c4d759659 and c64704742c0963310b49) + * Check for __i368 in addition to __i386__ in ffitarget.h + Note: recreating "configure" with autoconf 2.61 does not work as is, since the scripts require 2.59. To allow this, the two requirements in "libffi/configure.ac" and "config/override.m4" were temporarily diff --git a/src/foreign/foreign.c b/src/foreign/foreign.c index 8eb303f54b..78c43fc712 100644 --- a/src/foreign/foreign.c +++ b/src/foreign/foreign.c @@ -1796,7 +1796,7 @@ static Scheme_Object *foreign_compiler_sizeof(int argc, Scheme_Object *argv[]) else scheme_signal_error(MYNAME": cannot qualify 'char"); break; case 3: /* void */ - if (intsize==0 && stars>0) RETSIZE(void); + if (intsize==0 && stars>0) RETSIZE(int); /* avoid sizeof(void) */ else if (stars==0) scheme_signal_error(MYNAME": cannot use 'void without a '*"); else scheme_signal_error(MYNAME": cannot qualify 'void"); diff --git a/src/foreign/foreign.rktc b/src/foreign/foreign.rktc index ee702a357a..12b772ee3e 100755 --- a/src/foreign/foreign.rktc +++ b/src/foreign/foreign.rktc @@ -1240,7 +1240,7 @@ static void* SCHEME2C(Scheme_Object *type, void *dst, long delta, else scheme_signal_error(MYNAME": cannot qualify 'char"); break; case 3: /* void */ - if (intsize==0 && stars>0) RETSIZE(void); + if (intsize==0 && stars>0) RETSIZE(int); /* avoid sizeof(void) */ else if (stars==0) scheme_signal_error(MYNAME": cannot use 'void without a '*"); else scheme_signal_error(MYNAME": cannot qualify 'void"); diff --git a/src/foreign/gcc/libffi/src/x86/ffitarget.h b/src/foreign/gcc/libffi/src/x86/ffitarget.h index 3a1427c3c9..342d8cfd6b 100644 --- a/src/foreign/gcc/libffi/src/x86/ffitarget.h +++ b/src/foreign/gcc/libffi/src/x86/ffitarget.h @@ -53,10 +53,10 @@ typedef enum ffi_abi { #endif /* ---- Intel x86 and AMD x86-64 - */ -#if !defined(X86_WIN32) && (defined(__i386__) || defined(__x86_64__)) +#if !defined(X86_WIN32) && (defined(__i386__) || defined(__i386) || defined(__x86_64__)) FFI_SYSV, FFI_UNIX64, /* Unix variants all use the same ABI for x86-64 */ -#ifdef __i386__ +#if defined(__i386__) || defined(__i386) FFI_DEFAULT_ABI = FFI_SYSV, #else FFI_DEFAULT_ABI = FFI_UNIX64,