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,