Undo iOS ARM64 changes.
authorAnthony Green <green@moxielogic.com>
Thu, 5 Dec 2013 21:23:25 +0000 (16:23 -0500)
committerAnthony Green <green@moxielogic.com>
Thu, 5 Dec 2013 21:23:25 +0000 (16:23 -0500)
19 files changed:
.gitignore
ChangeLog
Makefile.am
Makefile.in
README
build-ios.sh [new file with mode: 0755]
generate-ios-source-and-headers.py
generate-osx-source-and-headers.py
include/ffi_common.h
libffi.xcodeproj/project.pbxproj
src/aarch64/ffi.c
src/aarch64/sysv.S
src/arm/ffi.c
src/arm/sysv.S
src/closures.c
src/dlmalloc.c
src/prep_cif.c
src/x86/ffi.c
src/x86/ffi64.c

index 95566c9..6af76ac 100644 (file)
@@ -19,5 +19,3 @@ autom4te.cache
 libffi.xcodeproj/xcuserdata
 libffi.xcodeproj/project.xcworkspace
 ios/
-osx/
-build_*/
index 06d42f7..277deed 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,31 +1,3 @@
-2013-11-30  Anthony Green  <green@moxielogic.com>
-
-       * Makefile.am (EXTRA_DIST): Remove build-ios.sh.
-       * Makefile:in: Rebuilt.
-
-2012-11-30  Zachary Waldowski  <zwaldowski@gmail.com>
-
-       * src/arm/ffi.c, src/dlmalloc.c, src/x86/ffi.c: Silence Clang
-       warnings.
-       * src/arm/sysv.S: Simplify RETLDM arguments for LLVM 3.1.  More
-       Clang clean-ups.
-       * .gitignore: Exclude OS X generated source and build_.
-       * generate-osx-source-and-headers.py: Clean up, modernize scripts.
-       * generate-ios-source-and-headers.py: Ditto, and add __arm64__
-       support.
-       * include/ffi_common.h: Test for HAVE_STRING_H.
-       * src/closures.c (open_temp_exec_file_dir): Use size_t.
-       * src/prep_cif (ffi_prep_cif_core): Cast ALIGN result.
-       * src/x86/ffi64.c: More Clang warning clean-ups.
-       * src/aarch64/sysv.S: Use CNAME for global symbols.  Only use
-       .size for ELF targets.
-       * src/aarch64/ffi.c: Clean up for double == long double.  Clean up
-       for Xcode warnings.  Use Clang cache invalidation builtin.  Use
-       size_t in place of unsigned in many places.
-       * libffi.xcodeproj/project.pbxproj: Include x86_64+aarch64 pieces
-       in library.  Export headers properly.
-       * build-ios.sh: Remove.
-
 2013-11-21  Anthony Green  <green@moxielogic.com>
 
        * configure, Makefile.in, include/Makefile.in, include/ffi.h.in,
index d25aebd..4b5d1c7 100644 (file)
@@ -8,7 +8,7 @@ SUBDIRS = include testsuite man
 
 EXTRA_DIST = LICENSE ChangeLog.v1 ChangeLog.libgcj configure.host      \
         src/aarch64/ffi.c src/aarch64/ffitarget.h src/aarch64/sysv.S   \
-        src/alpha/ffi.c src/alpha/osf.S                        \
+        build-ios.sh src/alpha/ffi.c src/alpha/osf.S                   \
         src/alpha/ffitarget.h src/arc/ffi.c src/arc/arcompact.S        \
         src/arc/ffitarget.h src/arm/ffi.c src/arm/sysv.S               \
         src/arm/ffitarget.h src/avr32/ffi.c src/avr32/sysv.S           \
index 220e6fd..bf77c44 100644 (file)
@@ -593,7 +593,7 @@ ACLOCAL_AMFLAGS = -I m4
 SUBDIRS = include testsuite man
 EXTRA_DIST = LICENSE ChangeLog.v1 ChangeLog.libgcj configure.host      \
         src/aarch64/ffi.c src/aarch64/ffitarget.h src/aarch64/sysv.S   \
-        src/alpha/ffi.c src/alpha/osf.S                        \
+        build-ios.sh src/alpha/ffi.c src/alpha/osf.S                   \
         src/alpha/ffitarget.h src/arc/ffi.c src/arc/arcompact.S        \
         src/arc/ffitarget.h src/arm/ffi.c src/arm/sysv.S               \
         src/arm/ffitarget.h src/avr32/ffi.c src/avr32/sysv.S           \
diff --git a/README b/README
index 449b02a..938ae63 100644 (file)
--- a/README
+++ b/README
@@ -51,7 +51,6 @@ tested:
 |-----------------+------------------+-------------------------|
 | Architecture    | Operating System | Compiler                |
 |-----------------+------------------+-------------------------|
-| AArch64 (ARM64) | iOS              | Clang                   |
 | AArch64         | Linux            | GCC                     |
 | Alpha           | Linux            | GCC                     |
 | Alpha           | Tru64            | GCC                     |
@@ -170,10 +169,8 @@ History
 See the ChangeLog files for details.
 
 3.0.14 TBD
-        Add Aarch (ARM64) iOS support.
-        Add m88k and DEC VAX support.
         Add Nios II support.
-       Add Power ELFv2 Linux support.
+        Add m88k and DEC VAX support.
        Fix MIPS N32 ABI bug.
        Various FreeBSD and UltraSPARC IIi fixes.
 
diff --git a/build-ios.sh b/build-ios.sh
new file mode 100755 (executable)
index 0000000..3dea242
--- /dev/null
@@ -0,0 +1,67 @@
+#!/bin/sh
+
+PLATFORM_IOS=/Developer/Platforms/iPhoneOS.platform/
+PLATFORM_IOS_SIM=/Developer/Platforms/iPhoneSimulator.platform/
+SDK_IOS_VERSION="4.2"
+MIN_IOS_VERSION="3.0"
+OUTPUT_DIR="universal-ios"
+
+build_target () {
+    local platform=$1
+    local sdk=$2
+    local arch=$3
+    local triple=$4
+    local builddir=$5
+
+    mkdir -p "${builddir}"
+    pushd "${builddir}"
+    export CC="${platform}"/Developer/usr/bin/gcc-4.2
+    export CFLAGS="-arch ${arch} -isysroot ${sdk} -miphoneos-version-min=${MIN_IOS_VERSION}"
+    ../configure --host=${triple} && make
+    popd
+}
+
+# Build all targets
+build_target "${PLATFORM_IOS}" "${PLATFORM_IOS}/Developer/SDKs/iPhoneOS${SDK_IOS_VERSION}.sdk/" armv6 arm-apple-darwin10 armv6-ios
+build_target "${PLATFORM_IOS}" "${PLATFORM_IOS}/Developer/SDKs/iPhoneOS${SDK_IOS_VERSION}.sdk/" armv7 arm-apple-darwin10 armv7-ios
+build_target "${PLATFORM_IOS_SIM}" "${PLATFORM_IOS_SIM}/Developer/SDKs/iPhoneSimulator${SDK_IOS_VERSION}.sdk/" i386 i386-apple-darwin10 i386-ios-sim
+
+# Create universal output directories
+mkdir -p "${OUTPUT_DIR}"
+mkdir -p "${OUTPUT_DIR}/include"
+mkdir -p "${OUTPUT_DIR}/include/armv6"
+mkdir -p "${OUTPUT_DIR}/include/armv7"
+mkdir -p "${OUTPUT_DIR}/include/i386"
+
+# Create the universal binary
+lipo -create armv6-ios/.libs/libffi.a armv7-ios/.libs/libffi.a i386-ios-sim/.libs/libffi.a -output "${OUTPUT_DIR}/libffi.a"
+
+# Copy in the headers
+copy_headers () {
+    local src=$1
+    local dest=$2
+
+    # Fix non-relative header reference
+    sed 's/<ffitarget.h>/"ffitarget.h"/' < "${src}/include/ffi.h" > "${dest}/ffi.h"
+    cp "${src}/include/ffitarget.h" "${dest}"
+}
+
+copy_headers armv6-ios "${OUTPUT_DIR}/include/armv6"
+copy_headers armv7-ios "${OUTPUT_DIR}/include/armv7"
+copy_headers i386-ios-sim "${OUTPUT_DIR}/include/i386"
+
+# Create top-level header
+(
+cat << EOF
+#ifdef __arm__
+  #include <arm/arch.h>
+  #ifdef _ARM_ARCH_6
+    #include "include/armv6/ffi.h"
+  #elif _ARM_ARCH_7
+    #include "include/armv7/ffi.h"
+  #endif
+#elif defined(__i386__)
+  #include "include/i386/ffi.h"
+#endif
+EOF
+) > "${OUTPUT_DIR}/ffi.h"
index 4d4d0ae..c2bca73 100644 (file)
@@ -1,40 +1,29 @@
 #!/usr/bin/env python
+
 import subprocess
 import re
 import os
 import errno
 import collections
+import sys
 
 class Platform(object):
     pass
 
 sdk_re = re.compile(r'.*-sdk ([a-zA-Z0-9.]*)')
 
-
 def sdkinfo(sdkname):
     ret = {}
     for line in subprocess.Popen(['xcodebuild', '-sdk', sdkname, '-version'], stdout=subprocess.PIPE).stdout:
         kv = line.strip().split(': ', 1)
         if len(kv) == 2:
-            k, v = kv
+            k,v = kv
             ret[k] = v
     return ret
 
-
-def mkdir_p(path):
-    try:
-        os.makedirs(path)
-    except OSError as exc:  # Python >2.5
-        if exc.errno == errno.EEXIST:
-            pass
-        else:
-            raise
-
-
 sim_sdk_info = sdkinfo('iphonesimulator')
 device_sdk_info = sdkinfo('iphoneos')
 
-
 def latest_sdks():
     latest_sim = None
     latest_device = None
@@ -50,62 +39,36 @@ def latest_sdks():
 
 sim_sdk, device_sdk = latest_sdks()
 
-
 class simulator_platform(Platform):
-    sdk = 'iphonesimulator'
+    sdk='iphonesimulator'
     arch = 'i386'
-    short_arch = arch
-    triple = 'i386-apple-darwin11'
+    name = 'simulator'
+    triple = 'i386-apple-darwin10'
     sdkroot = sim_sdk_info['Path']
-    version_min = '5.1.1'
 
-    prefix = "#ifdef __i386__\n\n"
+    prefix = "#if !defined(__arm__) && defined(__i386__)\n\n"
     suffix = "\n\n#endif"
 
-
-class simulator64_platform(Platform):
-    sdk = 'iphonesimulator'
-    arch = 'x86_64'
-    short_arch = arch
-    triple = 'x86_64-apple-darwin13'
-    sdkroot = sim_sdk_info['Path']
-    version_min = '7.0'
-
-    prefix = "#ifdef __x86_64__\n\n"
-    suffix = "\n\n#endif"
-
-
 class device_platform(Platform):
-    sdk = 'iphoneos'
+    sdk='iphoneos'
+    name = 'ios'
     arch = 'armv7'
-    short_arch = 'arm'
-    triple = 'arm-apple-darwin11'
+    triple = 'arm-apple-darwin10'
     sdkroot = device_sdk_info['Path']
-    version_min = '5.1.1'
 
     prefix = "#ifdef __arm__\n\n"
     suffix = "\n\n#endif"
 
 
-class device64_platform(Platform):
-    sdk = 'iphoneos'
-    arch = 'arm64'
-    short_arch = 'arm64'
-    triple = 'aarch64-apple-darwin13'
-    sdkroot = device_sdk_info['Path']
-    version_min = '7.0'
-
-    prefix = "#ifdef __arm64__\n\n"
-    suffix = "\n\n#endif"
-
-
 def move_file(src_dir, dst_dir, filename, file_suffix=None, prefix='', suffix=''):
-    mkdir_p(dst_dir)
+    if not os.path.exists(dst_dir):
+        os.makedirs(dst_dir)
+
     out_filename = filename
 
     if file_suffix:
         split_name = os.path.splitext(filename)
-        out_filename = "%s_%s%s" % (split_name[0], file_suffix, split_name[1])
+        out_filename =  "%s_%s%s" % (split_name[0], file_suffix, split_name[1])
 
     with open(os.path.join(src_dir, filename)) as in_file:
         with open(os.path.join(dst_dir, out_filename), 'w') as out_file:
@@ -119,15 +82,16 @@ def move_file(src_dir, dst_dir, filename, file_suffix=None, prefix='', suffix=''
 
 headers_seen = collections.defaultdict(set)
 
-
 def move_source_tree(src_dir, dest_dir, dest_include_dir, arch=None, prefix=None, suffix=None):
     for root, dirs, files in os.walk(src_dir, followlinks=True):
-        relroot = os.path.relpath(root, src_dir)
+        relroot = os.path.relpath(root,src_dir)
 
         def move_dir(arch, prefix='', suffix='', files=[]):
             for file in files:
+                file_suffix = None
                 if file.endswith('.h'):
                     if dest_include_dir:
+                        file_suffix = arch
                         if arch:
                             headers_seen[file].add(arch)
                         move_file(root, dest_include_dir, file, arch, prefix=prefix, suffix=suffix)
@@ -145,66 +109,46 @@ def move_source_tree(src_dir, dest_dir, dest_include_dir, arch=None, prefix=None
             move_dir(arch='arm',
                      prefix="#ifdef __arm__\n\n",
                      suffix="\n\n#endif",
-                     files=['sysv.S', 'trampoline.S', 'ffi.c'])
-        elif relroot == 'aarch64':
-            move_dir(arch='arm64',
-                     prefix="#ifdef __arm64__\n\n",
-                     suffix="\n\n#endif",
-                     files=['sysv.S', 'ffi.c'])
+                     files=files)
         elif relroot == 'x86':
             move_dir(arch='i386',
-                     prefix="#ifdef __i386__\n\n",
+                     prefix="#if !defined(__arm__) && defined(__i386__)\n\n",
                      suffix="\n\n#endif",
-                     files=['darwin.S', 'ffi.c'])
-            move_dir(arch='x86_64',
-                     prefix="#ifdef __x86_64__\n\n",
-                     suffix="\n\n#endif",
-                     files=['darwin64.S', 'ffi64.c'])
-
+                     files=files)
 
 def build_target(platform):
     def xcrun_cmd(cmd):
         return subprocess.check_output(['xcrun', '-sdk', platform.sdkroot, '-find', cmd]).strip()
 
-    build_dir = 'build_' + platform.short_arch
-    mkdir_p(build_dir)
-    env = dict(CC=xcrun_cmd('clang'),
-               LD=xcrun_cmd('ld'),
-               CFLAGS='-arch %s -isysroot %s -miphoneos-version-min=%s' % (platform.arch, platform.sdkroot, platform.version_min))
-    working_dir = os.getcwd()
-    try:
-        os.chdir(build_dir)
-        subprocess.check_call(['../configure', '-host', platform.triple], env=env)
-        move_source_tree('.', None, '../ios/include',
-                         arch=platform.short_arch,
-                         prefix=platform.prefix,
-                         suffix=platform.suffix)
-        move_source_tree('./include', None, '../ios/include',
-                         arch=platform.short_arch,
-                         prefix=platform.prefix,
-                         suffix=platform.suffix)
-    finally:
-        os.chdir(working_dir)
-
-    for header_name, archs in headers_seen.iteritems():
-        basename, suffix = os.path.splitext(header_name)
-
-
-def make_tramp():
-    with open('src/arm/trampoline.S', 'w') as tramp_out:
-        p = subprocess.Popen(['bash', 'src/arm/gentramp.sh'], stdout=tramp_out)
-        p.wait()
-
+    build_dir = 'build_' + platform.name
+    if not os.path.exists(build_dir):
+        os.makedirs(build_dir)
+        env = dict(CC=xcrun_cmd('clang'),
+                   LD=xcrun_cmd('ld'),
+                   CFLAGS='-arch %s -isysroot %s -miphoneos-version-min=4.0' % (platform.arch, platform.sdkroot))
+        working_dir=os.getcwd()
+        try:
+            os.chdir(build_dir)
+            subprocess.check_call(['../configure', '-host', platform.triple], env=env)
+            move_source_tree('.', None, '../ios/include',
+                             arch=platform.arch,
+                             prefix=platform.prefix,
+                             suffix=platform.suffix)
+            move_source_tree('./include', None, '../ios/include',
+                            arch=platform.arch,
+                            prefix=platform.prefix,
+                            suffix=platform.suffix)
+        finally:
+            os.chdir(working_dir)
+
+        for header_name, archs in headers_seen.iteritems():
+            basename, suffix = os.path.splitext(header_name)
 
 def main():
-    make_tramp()
-
     move_source_tree('src', 'ios/src', 'ios/include')
     move_source_tree('include', None, 'ios/include')
     build_target(simulator_platform)
-    build_target(simulator64_platform)
     build_target(device_platform)
-    build_target(device64_platform)
 
     for header_name, archs in headers_seen.iteritems():
         basename, suffix = os.path.splitext(header_name)
index 97a732d..64313c1 100644 (file)
@@ -4,36 +4,24 @@ import re
 import os
 import errno
 import collections
-
+import sys
 
 class Platform(object):
     pass
 
 sdk_re = re.compile(r'.*-sdk ([a-zA-Z0-9.]*)')
 
-
 def sdkinfo(sdkname):
     ret = {}
     for line in subprocess.Popen(['xcodebuild', '-sdk', sdkname, '-version'], stdout=subprocess.PIPE).stdout:
         kv = line.strip().split(': ', 1)
         if len(kv) == 2:
-            k, v = kv
+            k,v = kv
             ret[k] = v
     return ret
 
-
-def mkdir_p(path):
-    try:
-        os.makedirs(path)
-    except OSError as exc:  # Python >2.5
-        if exc.errno == errno.EEXIST:
-            pass
-        else:
-            raise
-
 desktop_sdk_info = sdkinfo('macosx')
 
-
 def latest_sdks():
     latest_desktop = None
     for line in subprocess.Popen(['xcodebuild', '-showsdks'], stdout=subprocess.PIPE).stdout:
@@ -46,38 +34,35 @@ def latest_sdks():
 
 desktop_sdk = latest_sdks()
 
-
-class desktop32_platform(Platform):
-    sdk = 'macosx'
+class desktop_platform_32(Platform):
+    sdk='macosx'
     arch = 'i386'
     name = 'mac32'
-    triple = 'i386-apple-darwin11'
+    triple = 'i386-apple-darwin10'
     sdkroot = desktop_sdk_info['Path']
-    version_min = '10.7'
 
-    prefix = "#ifdef __i386__\n\n"
+    prefix = "#if defined(__i386__) && !defined(__x86_64__)\n\n"
     suffix = "\n\n#endif"
 
-
-class desktop64_platform(Platform):
-    sdk = 'macosx'
+class desktop_platform_64(Platform):
+    sdk='macosx'
     arch = 'x86_64'
     name = 'mac'
-    triple = 'x86_64-apple-darwin11'
+    triple = 'x86_64-apple-darwin10'
     sdkroot = desktop_sdk_info['Path']
-    version_min = '10.7'
 
-    prefix = "#ifdef __x86_64__\n\n"
+    prefix = "#if !defined(__i386__) && defined(__x86_64__)\n\n"
     suffix = "\n\n#endif"
 
-
 def move_file(src_dir, dst_dir, filename, file_suffix=None, prefix='', suffix=''):
-    mkdir_p(dst_dir)
+    if not os.path.exists(dst_dir):
+        os.makedirs(dst_dir)
+
     out_filename = filename
 
     if file_suffix:
         split_name = os.path.splitext(filename)
-        out_filename = "%s_%s%s" % (split_name[0], file_suffix, split_name[1])
+        out_filename =  "%s_%s%s" % (split_name[0], file_suffix, split_name[1])
 
     with open(os.path.join(src_dir, filename)) as in_file:
         with open(os.path.join(dst_dir, out_filename), 'w') as out_file:
@@ -91,15 +76,16 @@ def move_file(src_dir, dst_dir, filename, file_suffix=None, prefix='', suffix=''
 
 headers_seen = collections.defaultdict(set)
 
-
 def move_source_tree(src_dir, dest_dir, dest_include_dir, arch=None, prefix=None, suffix=None):
     for root, dirs, files in os.walk(src_dir, followlinks=True):
-        relroot = os.path.relpath(root, src_dir)
+        relroot = os.path.relpath(root,src_dir)
 
         def move_dir(arch, prefix='', suffix='', files=[]):
             for file in files:
+                file_suffix = None
                 if file.endswith('.h'):
                     if dest_include_dir:
+                        file_suffix = arch
                         if arch:
                             headers_seen[file].add(arch)
                         move_file(root, dest_include_dir, file, arch, prefix=prefix, suffix=suffix)
@@ -115,14 +101,13 @@ def move_source_tree(src_dir, dest_dir, dest_include_dir, arch=None, prefix=None
                      suffix=suffix)
         elif relroot == 'x86':
             move_dir(arch='i386',
-                     prefix="#ifdef __i386__\n\n",
+                     prefix="#if defined(__i386__) && !defined(__x86_64__)\n\n",
                      suffix="\n\n#endif",
-                     files=['darwin.S', 'ffi.c'])
+                     files=files)
             move_dir(arch='x86_64',
-                     prefix="#ifdef __x86_64__\n\n",
+                     prefix="#if !defined(__i386__) && defined(__x86_64__)\n\n",
                      suffix="\n\n#endif",
-                     files=['darwin64.S', 'ffi64.c'])
-
+                     files=files)
 
 def build_target(platform):
     def xcrun_cmd(cmd):
@@ -133,8 +118,8 @@ def build_target(platform):
         os.makedirs(build_dir)
         env = dict(CC=xcrun_cmd('clang'),
                    LD=xcrun_cmd('ld'),
-                   CFLAGS='-arch %s -isysroot %s -mmacosx-version-min=%s' % (platform.arch, platform.sdkroot, platform.version_min))
-        working_dir = os.getcwd()
+                   CFLAGS='-arch %s -isysroot %s -mmacosx-version-min=10.6' % (platform.arch, platform.sdkroot))
+        working_dir=os.getcwd()
         try:
             os.chdir(build_dir)
             subprocess.check_call(['../configure', '-host', platform.triple], env=env)
@@ -152,12 +137,11 @@ def build_target(platform):
         for header_name, archs in headers_seen.iteritems():
             basename, suffix = os.path.splitext(header_name)
 
-
 def main():
     move_source_tree('src', 'osx/src', 'osx/include')
     move_source_tree('include', None, 'osx/include')
-    build_target(desktop32_platform)
-    build_target(desktop64_platform)
+    build_target(desktop_platform_32)
+    build_target(desktop_platform_64)
 
     for header_name, archs in headers_seen.iteritems():
         basename, suffix = os.path.splitext(header_name)
index be10922..37f5a9e 100644 (file)
@@ -48,7 +48,7 @@ char *alloca ();
 #endif
 
 /* Check for the existence of memcpy. */
-#if STDC_HEADERS || HAVE_STRING_H
+#if STDC_HEADERS
 # include <string.h>
 #else
 # ifndef HAVE_MEMCPY
index f763d0f..14c39a2 100644 (file)
        objects = {
 
 /* Begin PBXBuildFile section */
-               DB13B16A1849DF1E0010F42D /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DB13B1691849DF1E0010F42D /* Foundation.framework */; };
-               DB13B1931849DF510010F42D /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DB13B1921849DF510010F42D /* Cocoa.framework */; };
-               DB13B33D1849E0CE0010F42D /* ffi.c in Sources */ = {isa = PBXBuildFile; fileRef = DB13B3301849E0CE0010F42D /* ffi.c */; };
-               DB13B33E1849E0CE0010F42D /* sysv.S in Sources */ = {isa = PBXBuildFile; fileRef = DB13B3311849E0CE0010F42D /* sysv.S */; };
-               DB13B33F1849E0CE0010F42D /* trampoline.S in Sources */ = {isa = PBXBuildFile; fileRef = DB13B3321849E0CE0010F42D /* trampoline.S */; };
-               DB13B3401849E0CE0010F42D /* closures.c in Sources */ = {isa = PBXBuildFile; fileRef = DB13B3331849E0CE0010F42D /* closures.c */; };
-               DB13B3441849E0CE0010F42D /* prep_cif.c in Sources */ = {isa = PBXBuildFile; fileRef = DB13B3371849E0CE0010F42D /* prep_cif.c */; };
-               DB13B3451849E0CE0010F42D /* raw_api.c in Sources */ = {isa = PBXBuildFile; fileRef = DB13B3381849E0CE0010F42D /* raw_api.c */; };
-               DB13B3461849E0CE0010F42D /* types.c in Sources */ = {isa = PBXBuildFile; fileRef = DB13B3391849E0CE0010F42D /* types.c */; };
-               DB13B3471849E0CE0010F42D /* darwin.S in Sources */ = {isa = PBXBuildFile; fileRef = DB13B33B1849E0CE0010F42D /* darwin.S */; };
-               DB13B3481849E0CE0010F42D /* ffi.c in Sources */ = {isa = PBXBuildFile; fileRef = DB13B33C1849E0CE0010F42D /* ffi.c */; };
-               DB13B3631849E0FF0010F42D /* ffi.h in Headers */ = {isa = PBXBuildFile; fileRef = DB13B34C1849E0FF0010F42D /* ffi.h */; settings = {ATTRIBUTES = (Public, ); }; };
-               DB13B3641849E0FF0010F42D /* ffi_common.h in Headers */ = {isa = PBXBuildFile; fileRef = DB13B34D1849E0FF0010F42D /* ffi_common.h */; settings = {ATTRIBUTES = (Public, ); }; };
-               DB13B3651849E0FF0010F42D /* ffi_i386.h in Headers */ = {isa = PBXBuildFile; fileRef = DB13B34E1849E0FF0010F42D /* ffi_i386.h */; settings = {ATTRIBUTES = (Public, ); }; };
-               DB13B3661849E0FF0010F42D /* ffi_x86_64.h in Headers */ = {isa = PBXBuildFile; fileRef = DB13B34F1849E0FF0010F42D /* ffi_x86_64.h */; settings = {ATTRIBUTES = (Public, ); }; };
-               DB13B3671849E0FF0010F42D /* fficonfig.h in Headers */ = {isa = PBXBuildFile; fileRef = DB13B3501849E0FF0010F42D /* fficonfig.h */; settings = {ATTRIBUTES = (Public, ); }; };
-               DB13B3681849E0FF0010F42D /* fficonfig_i386.h in Headers */ = {isa = PBXBuildFile; fileRef = DB13B3511849E0FF0010F42D /* fficonfig_i386.h */; settings = {ATTRIBUTES = (Public, ); }; };
-               DB13B3691849E0FF0010F42D /* fficonfig_x86_64.h in Headers */ = {isa = PBXBuildFile; fileRef = DB13B3521849E0FF0010F42D /* fficonfig_x86_64.h */; settings = {ATTRIBUTES = (Public, ); }; };
-               DB13B36A1849E0FF0010F42D /* ffitarget.h in Headers */ = {isa = PBXBuildFile; fileRef = DB13B3531849E0FF0010F42D /* ffitarget.h */; settings = {ATTRIBUTES = (Public, ); }; };
-               DB13B36B1849E0FF0010F42D /* ffitarget_i386.h in Headers */ = {isa = PBXBuildFile; fileRef = DB13B3541849E0FF0010F42D /* ffitarget_i386.h */; settings = {ATTRIBUTES = (Public, ); }; };
-               DB13B36C1849E0FF0010F42D /* ffitarget_x86_64.h in Headers */ = {isa = PBXBuildFile; fileRef = DB13B3551849E0FF0010F42D /* ffitarget_x86_64.h */; settings = {ATTRIBUTES = (Public, ); }; };
-               DB13B36D1849E0FF0010F42D /* closures.c in Sources */ = {isa = PBXBuildFile; fileRef = DB13B3571849E0FF0010F42D /* closures.c */; };
-               DB13B3711849E0FF0010F42D /* prep_cif.c in Sources */ = {isa = PBXBuildFile; fileRef = DB13B35B1849E0FF0010F42D /* prep_cif.c */; };
-               DB13B3721849E0FF0010F42D /* raw_api.c in Sources */ = {isa = PBXBuildFile; fileRef = DB13B35C1849E0FF0010F42D /* raw_api.c */; };
-               DB13B3731849E0FF0010F42D /* types.c in Sources */ = {isa = PBXBuildFile; fileRef = DB13B35D1849E0FF0010F42D /* types.c */; };
-               DB13B3741849E0FF0010F42D /* darwin.S in Sources */ = {isa = PBXBuildFile; fileRef = DB13B35F1849E0FF0010F42D /* darwin.S */; };
-               DB13B3751849E0FF0010F42D /* darwin64.S in Sources */ = {isa = PBXBuildFile; fileRef = DB13B3601849E0FF0010F42D /* darwin64.S */; };
-               DB13B3761849E0FF0010F42D /* ffi.c in Sources */ = {isa = PBXBuildFile; fileRef = DB13B3611849E0FF0010F42D /* ffi.c */; };
-               DB13B3771849E0FF0010F42D /* ffi64.c in Sources */ = {isa = PBXBuildFile; fileRef = DB13B3621849E0FF0010F42D /* ffi64.c */; };
-               DB13B381184A50CC0010F42D /* ffi.c in Sources */ = {isa = PBXBuildFile; fileRef = DB13B37F184A50CC0010F42D /* ffi.c */; };
-               DB13B382184A50CC0010F42D /* sysv.S in Sources */ = {isa = PBXBuildFile; fileRef = DB13B380184A50CC0010F42D /* sysv.S */; };
-               DB13B385184A50D60010F42D /* darwin64.S in Sources */ = {isa = PBXBuildFile; fileRef = DB13B383184A50D60010F42D /* darwin64.S */; };
-               DB13B386184A50D60010F42D /* ffi64.c in Sources */ = {isa = PBXBuildFile; fileRef = DB13B384184A50D60010F42D /* ffi64.c */; };
-               DB13B387184A64FA0010F42D /* ffi.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = DB13B3241849E0CE0010F42D /* ffi.h */; };
-               DB13B388184A64FA0010F42D /* ffi_arm.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = DB13B3251849E0CE0010F42D /* ffi_arm.h */; };
-               DB13B389184A64FA0010F42D /* ffi_arm64.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = DB13B378184A50BF0010F42D /* ffi_arm64.h */; };
-               DB13B38A184A64FA0010F42D /* ffi_common.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = DB13B3261849E0CE0010F42D /* ffi_common.h */; };
-               DB13B38B184A64FA0010F42D /* ffi_i386.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = DB13B3271849E0CE0010F42D /* ffi_i386.h */; };
-               DB13B38C184A64FA0010F42D /* ffi_x86_64.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = DB13B379184A50BF0010F42D /* ffi_x86_64.h */; };
-               DB13B38D184A64FA0010F42D /* fficonfig.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = DB13B3281849E0CE0010F42D /* fficonfig.h */; };
-               DB13B38E184A64FA0010F42D /* fficonfig_arm.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = DB13B3291849E0CE0010F42D /* fficonfig_arm.h */; };
-               DB13B38F184A64FA0010F42D /* fficonfig_arm64.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = DB13B37A184A50BF0010F42D /* fficonfig_arm64.h */; };
-               DB13B390184A64FA0010F42D /* fficonfig_i386.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = DB13B32A1849E0CE0010F42D /* fficonfig_i386.h */; };
-               DB13B391184A64FA0010F42D /* fficonfig_x86_64.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = DB13B37B184A50BF0010F42D /* fficonfig_x86_64.h */; };
-               DB13B392184A64FA0010F42D /* ffitarget.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = DB13B32B1849E0CE0010F42D /* ffitarget.h */; };
-               DB13B393184A64FA0010F42D /* ffitarget_arm.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = DB13B32C1849E0CE0010F42D /* ffitarget_arm.h */; };
-               DB13B394184A64FA0010F42D /* ffitarget_arm64.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = DB13B37C184A50BF0010F42D /* ffitarget_arm64.h */; };
-               DB13B395184A64FA0010F42D /* ffitarget_i386.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = DB13B32D1849E0CE0010F42D /* ffitarget_i386.h */; };
-               DB13B396184A64FA0010F42D /* ffitarget_x86_64.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = DB13B37D184A50BF0010F42D /* ffitarget_x86_64.h */; };
+               6C43CBDC1534F76F00162364 /* ffi.c in Sources */ = {isa = PBXBuildFile; fileRef = 6C43CBBD1534F76F00162364 /* ffi.c */; };
+               6C43CBDD1534F76F00162364 /* sysv.S in Sources */ = {isa = PBXBuildFile; fileRef = 6C43CBBF1534F76F00162364 /* sysv.S */; };
+               6C43CBDE1534F76F00162364 /* trampoline.S in Sources */ = {isa = PBXBuildFile; fileRef = 6C43CBC01534F76F00162364 /* trampoline.S */; };
+               6C43CBE61534F76F00162364 /* darwin.S in Sources */ = {isa = PBXBuildFile; fileRef = 6C43CBC91534F76F00162364 /* darwin.S */; };
+               6C43CBE81534F76F00162364 /* ffi.c in Sources */ = {isa = PBXBuildFile; fileRef = 6C43CBCB1534F76F00162364 /* ffi.c */; };
+               6C43CC1F1534F77800162364 /* darwin.S in Sources */ = {isa = PBXBuildFile; fileRef = 6C43CC051534F77800162364 /* darwin.S */; };
+               6C43CC201534F77800162364 /* darwin64.S in Sources */ = {isa = PBXBuildFile; fileRef = 6C43CC061534F77800162364 /* darwin64.S */; };
+               6C43CC211534F77800162364 /* ffi.c in Sources */ = {isa = PBXBuildFile; fileRef = 6C43CC071534F77800162364 /* ffi.c */; };
+               6C43CC221534F77800162364 /* ffi64.c in Sources */ = {isa = PBXBuildFile; fileRef = 6C43CC081534F77800162364 /* ffi64.c */; };
+               6C43CC2F1534F7BE00162364 /* closures.c in Sources */ = {isa = PBXBuildFile; fileRef = 6C43CC281534F7BE00162364 /* closures.c */; };
+               6C43CC301534F7BE00162364 /* closures.c in Sources */ = {isa = PBXBuildFile; fileRef = 6C43CC281534F7BE00162364 /* closures.c */; };
+               6C43CC351534F7BE00162364 /* java_raw_api.c in Sources */ = {isa = PBXBuildFile; fileRef = 6C43CC2B1534F7BE00162364 /* java_raw_api.c */; };
+               6C43CC361534F7BE00162364 /* java_raw_api.c in Sources */ = {isa = PBXBuildFile; fileRef = 6C43CC2B1534F7BE00162364 /* java_raw_api.c */; };
+               6C43CC371534F7BE00162364 /* prep_cif.c in Sources */ = {isa = PBXBuildFile; fileRef = 6C43CC2C1534F7BE00162364 /* prep_cif.c */; };
+               6C43CC381534F7BE00162364 /* prep_cif.c in Sources */ = {isa = PBXBuildFile; fileRef = 6C43CC2C1534F7BE00162364 /* prep_cif.c */; };
+               6C43CC391534F7BE00162364 /* raw_api.c in Sources */ = {isa = PBXBuildFile; fileRef = 6C43CC2D1534F7BE00162364 /* raw_api.c */; };
+               6C43CC3A1534F7BE00162364 /* raw_api.c in Sources */ = {isa = PBXBuildFile; fileRef = 6C43CC2D1534F7BE00162364 /* raw_api.c */; };
+               6C43CC3B1534F7BE00162364 /* types.c in Sources */ = {isa = PBXBuildFile; fileRef = 6C43CC2E1534F7BE00162364 /* types.c */; };
+               6C43CC3C1534F7BE00162364 /* types.c in Sources */ = {isa = PBXBuildFile; fileRef = 6C43CC2E1534F7BE00162364 /* types.c */; };
+               6C43CC971535032600162364 /* ffi.h in Headers */ = {isa = PBXBuildFile; fileRef = 6C43CC8D1535032600162364 /* ffi.h */; settings = {ATTRIBUTES = (Public, ); }; };
+               6C43CC981535032600162364 /* ffi_common.h in Headers */ = {isa = PBXBuildFile; fileRef = 6C43CC8E1535032600162364 /* ffi_common.h */; settings = {ATTRIBUTES = (Public, ); }; };
+               6C43CC991535032600162364 /* ffi_i386.h in Headers */ = {isa = PBXBuildFile; fileRef = 6C43CC8F1535032600162364 /* ffi_i386.h */; settings = {ATTRIBUTES = (Public, ); }; };
+               6C43CC9A1535032600162364 /* ffi_x86_64.h in Headers */ = {isa = PBXBuildFile; fileRef = 6C43CC901535032600162364 /* ffi_x86_64.h */; settings = {ATTRIBUTES = (Public, ); }; };
+               6C43CC9B1535032600162364 /* fficonfig.h in Headers */ = {isa = PBXBuildFile; fileRef = 6C43CC911535032600162364 /* fficonfig.h */; };
+               6C43CC9C1535032600162364 /* fficonfig_i386.h in Headers */ = {isa = PBXBuildFile; fileRef = 6C43CC921535032600162364 /* fficonfig_i386.h */; };
+               6C43CC9D1535032600162364 /* fficonfig_x86_64.h in Headers */ = {isa = PBXBuildFile; fileRef = 6C43CC931535032600162364 /* fficonfig_x86_64.h */; };
+               6C43CC9E1535032600162364 /* ffitarget.h in Headers */ = {isa = PBXBuildFile; fileRef = 6C43CC941535032600162364 /* ffitarget.h */; settings = {ATTRIBUTES = (Public, ); }; };
+               6C43CC9F1535032600162364 /* ffitarget_i386.h in Headers */ = {isa = PBXBuildFile; fileRef = 6C43CC951535032600162364 /* ffitarget_i386.h */; settings = {ATTRIBUTES = (Public, ); }; };
+               6C43CCA01535032600162364 /* ffitarget_x86_64.h in Headers */ = {isa = PBXBuildFile; fileRef = 6C43CC961535032600162364 /* ffitarget_x86_64.h */; settings = {ATTRIBUTES = (Public, ); }; };
+               6C43CCAD1535039600162364 /* ffi.h in Headers */ = {isa = PBXBuildFile; fileRef = 6C43CCA21535039600162364 /* ffi.h */; settings = {ATTRIBUTES = (Public, ); }; };
+               6C43CCAE1535039600162364 /* ffi_armv7.h in Headers */ = {isa = PBXBuildFile; fileRef = 6C43CCA31535039600162364 /* ffi_armv7.h */; settings = {ATTRIBUTES = (Public, ); }; };
+               6C43CCAF1535039600162364 /* ffi_common.h in Headers */ = {isa = PBXBuildFile; fileRef = 6C43CCA41535039600162364 /* ffi_common.h */; settings = {ATTRIBUTES = (Public, ); }; };
+               6C43CCB01535039600162364 /* ffi_i386.h in Headers */ = {isa = PBXBuildFile; fileRef = 6C43CCA51535039600162364 /* ffi_i386.h */; settings = {ATTRIBUTES = (Public, ); }; };
+               6C43CCB11535039600162364 /* fficonfig.h in Headers */ = {isa = PBXBuildFile; fileRef = 6C43CCA61535039600162364 /* fficonfig.h */; };
+               6C43CCB21535039600162364 /* fficonfig_armv7.h in Headers */ = {isa = PBXBuildFile; fileRef = 6C43CCA71535039600162364 /* fficonfig_armv7.h */; };
+               6C43CCB31535039600162364 /* fficonfig_i386.h in Headers */ = {isa = PBXBuildFile; fileRef = 6C43CCA81535039600162364 /* fficonfig_i386.h */; };
+               6C43CCB41535039600162364 /* ffitarget.h in Headers */ = {isa = PBXBuildFile; fileRef = 6C43CCA91535039600162364 /* ffitarget.h */; settings = {ATTRIBUTES = (Public, ); }; };
+               6C43CCB51535039600162364 /* ffitarget_arm.h in Headers */ = {isa = PBXBuildFile; fileRef = 6C43CCAA1535039600162364 /* ffitarget_arm.h */; settings = {ATTRIBUTES = (Public, ); }; };
+               6C43CCB61535039600162364 /* ffitarget_armv7.h in Headers */ = {isa = PBXBuildFile; fileRef = 6C43CCAB1535039600162364 /* ffitarget_armv7.h */; settings = {ATTRIBUTES = (Public, ); }; };
+               6C43CCB71535039600162364 /* ffitarget_i386.h in Headers */ = {isa = PBXBuildFile; fileRef = 6C43CCAC1535039600162364 /* ffitarget_i386.h */; settings = {ATTRIBUTES = (Public, ); }; };
 /* End PBXBuildFile section */
 
-/* Begin PBXCopyFilesBuildPhase section */
-               DB13B1641849DF1E0010F42D /* CopyFiles */ = {
-                       isa = PBXCopyFilesBuildPhase;
-                       buildActionMask = 8;
-                       dstPath = "include/$(PRODUCT_NAME)";
-                       dstSubfolderSpec = 16;
-                       files = (
-                               DB13B387184A64FA0010F42D /* ffi.h in CopyFiles */,
-                               DB13B388184A64FA0010F42D /* ffi_arm.h in CopyFiles */,
-                               DB13B389184A64FA0010F42D /* ffi_arm64.h in CopyFiles */,
-                               DB13B38A184A64FA0010F42D /* ffi_common.h in CopyFiles */,
-                               DB13B38B184A64FA0010F42D /* ffi_i386.h in CopyFiles */,
-                               DB13B38C184A64FA0010F42D /* ffi_x86_64.h in CopyFiles */,
-                               DB13B38D184A64FA0010F42D /* fficonfig.h in CopyFiles */,
-                               DB13B38E184A64FA0010F42D /* fficonfig_arm.h in CopyFiles */,
-                               DB13B38F184A64FA0010F42D /* fficonfig_arm64.h in CopyFiles */,
-                               DB13B390184A64FA0010F42D /* fficonfig_i386.h in CopyFiles */,
-                               DB13B391184A64FA0010F42D /* fficonfig_x86_64.h in CopyFiles */,
-                               DB13B392184A64FA0010F42D /* ffitarget.h in CopyFiles */,
-                               DB13B393184A64FA0010F42D /* ffitarget_arm.h in CopyFiles */,
-                               DB13B394184A64FA0010F42D /* ffitarget_arm64.h in CopyFiles */,
-                               DB13B395184A64FA0010F42D /* ffitarget_i386.h in CopyFiles */,
-                               DB13B396184A64FA0010F42D /* ffitarget_x86_64.h in CopyFiles */,
-                       );
-                       runOnlyForDeploymentPostprocessing = 1;
-               };
-/* End PBXCopyFilesBuildPhase section */
-
 /* Begin PBXFileReference section */
-               DB13B1661849DF1E0010F42D /* libffi.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libffi.a; sourceTree = BUILT_PRODUCTS_DIR; };
-               DB13B1691849DF1E0010F42D /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; };
-               DB13B1911849DF510010F42D /* ffi.dylib */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.dylib"; includeInIndex = 0; path = ffi.dylib; sourceTree = BUILT_PRODUCTS_DIR; };
-               DB13B1921849DF510010F42D /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = System/Library/Frameworks/Cocoa.framework; sourceTree = SDKROOT; };
-               DB13B3241849E0CE0010F42D /* ffi.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ffi.h; sourceTree = "<group>"; };
-               DB13B3251849E0CE0010F42D /* ffi_arm.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ffi_arm.h; sourceTree = "<group>"; };
-               DB13B3261849E0CE0010F42D /* ffi_common.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ffi_common.h; sourceTree = "<group>"; };
-               DB13B3271849E0CE0010F42D /* ffi_i386.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ffi_i386.h; sourceTree = "<group>"; };
-               DB13B3281849E0CE0010F42D /* fficonfig.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = fficonfig.h; sourceTree = "<group>"; };
-               DB13B3291849E0CE0010F42D /* fficonfig_arm.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = fficonfig_arm.h; sourceTree = "<group>"; };
-               DB13B32A1849E0CE0010F42D /* fficonfig_i386.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = fficonfig_i386.h; sourceTree = "<group>"; };
-               DB13B32B1849E0CE0010F42D /* ffitarget.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ffitarget.h; sourceTree = "<group>"; };
-               DB13B32C1849E0CE0010F42D /* ffitarget_arm.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ffitarget_arm.h; sourceTree = "<group>"; };
-               DB13B32D1849E0CE0010F42D /* ffitarget_i386.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ffitarget_i386.h; sourceTree = "<group>"; };
-               DB13B3301849E0CE0010F42D /* ffi.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ffi.c; sourceTree = "<group>"; };
-               DB13B3311849E0CE0010F42D /* sysv.S */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; path = sysv.S; sourceTree = "<group>"; };
-               DB13B3321849E0CE0010F42D /* trampoline.S */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; path = trampoline.S; sourceTree = "<group>"; };
-               DB13B3331849E0CE0010F42D /* closures.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = closures.c; sourceTree = "<group>"; };
-               DB13B3351849E0CE0010F42D /* dlmalloc.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = dlmalloc.c; sourceTree = "<group>"; };
-               DB13B3371849E0CE0010F42D /* prep_cif.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = prep_cif.c; sourceTree = "<group>"; };
-               DB13B3381849E0CE0010F42D /* raw_api.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = raw_api.c; sourceTree = "<group>"; };
-               DB13B3391849E0CE0010F42D /* types.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = types.c; sourceTree = "<group>"; };
-               DB13B33B1849E0CE0010F42D /* darwin.S */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; path = darwin.S; sourceTree = "<group>"; };
-               DB13B33C1849E0CE0010F42D /* ffi.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ffi.c; sourceTree = "<group>"; };
-               DB13B34C1849E0FF0010F42D /* ffi.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ffi.h; sourceTree = "<group>"; };
-               DB13B34D1849E0FF0010F42D /* ffi_common.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ffi_common.h; sourceTree = "<group>"; };
-               DB13B34E1849E0FF0010F42D /* ffi_i386.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ffi_i386.h; sourceTree = "<group>"; };
-               DB13B34F1849E0FF0010F42D /* ffi_x86_64.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ffi_x86_64.h; sourceTree = "<group>"; };
-               DB13B3501849E0FF0010F42D /* fficonfig.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = fficonfig.h; sourceTree = "<group>"; };
-               DB13B3511849E0FF0010F42D /* fficonfig_i386.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = fficonfig_i386.h; sourceTree = "<group>"; };
-               DB13B3521849E0FF0010F42D /* fficonfig_x86_64.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = fficonfig_x86_64.h; sourceTree = "<group>"; };
-               DB13B3531849E0FF0010F42D /* ffitarget.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ffitarget.h; sourceTree = "<group>"; };
-               DB13B3541849E0FF0010F42D /* ffitarget_i386.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ffitarget_i386.h; sourceTree = "<group>"; };
-               DB13B3551849E0FF0010F42D /* ffitarget_x86_64.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ffitarget_x86_64.h; sourceTree = "<group>"; };
-               DB13B3571849E0FF0010F42D /* closures.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = closures.c; sourceTree = "<group>"; };
-               DB13B3591849E0FF0010F42D /* dlmalloc.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = dlmalloc.c; sourceTree = "<group>"; };
-               DB13B35B1849E0FF0010F42D /* prep_cif.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = prep_cif.c; sourceTree = "<group>"; };
-               DB13B35C1849E0FF0010F42D /* raw_api.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = raw_api.c; sourceTree = "<group>"; };
-               DB13B35D1849E0FF0010F42D /* types.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = types.c; sourceTree = "<group>"; };
-               DB13B35F1849E0FF0010F42D /* darwin.S */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; path = darwin.S; sourceTree = "<group>"; };
-               DB13B3601849E0FF0010F42D /* darwin64.S */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; path = darwin64.S; sourceTree = "<group>"; };
-               DB13B3611849E0FF0010F42D /* ffi.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ffi.c; sourceTree = "<group>"; };
-               DB13B3621849E0FF0010F42D /* ffi64.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ffi64.c; sourceTree = "<group>"; };
-               DB13B378184A50BF0010F42D /* ffi_arm64.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ffi_arm64.h; sourceTree = "<group>"; };
-               DB13B379184A50BF0010F42D /* ffi_x86_64.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ffi_x86_64.h; sourceTree = "<group>"; };
-               DB13B37A184A50BF0010F42D /* fficonfig_arm64.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = fficonfig_arm64.h; sourceTree = "<group>"; };
-               DB13B37B184A50BF0010F42D /* fficonfig_x86_64.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = fficonfig_x86_64.h; sourceTree = "<group>"; };
-               DB13B37C184A50BF0010F42D /* ffitarget_arm64.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ffitarget_arm64.h; sourceTree = "<group>"; };
-               DB13B37D184A50BF0010F42D /* ffitarget_x86_64.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ffitarget_x86_64.h; sourceTree = "<group>"; };
-               DB13B37F184A50CC0010F42D /* ffi.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ffi.c; sourceTree = "<group>"; };
-               DB13B380184A50CC0010F42D /* sysv.S */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; path = sysv.S; sourceTree = "<group>"; };
-               DB13B383184A50D60010F42D /* darwin64.S */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; path = darwin64.S; sourceTree = "<group>"; };
-               DB13B384184A50D60010F42D /* ffi64.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ffi64.c; sourceTree = "<group>"; };
+               6C43CB3D1534E9D100162364 /* libffi.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libffi.a; sourceTree = BUILT_PRODUCTS_DIR; };
+               6C43CBBD1534F76F00162364 /* ffi.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ffi.c; sourceTree = "<group>"; };
+               6C43CBBF1534F76F00162364 /* sysv.S */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; path = sysv.S; sourceTree = "<group>"; };
+               6C43CBC01534F76F00162364 /* trampoline.S */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; path = trampoline.S; sourceTree = "<group>"; };
+               6C43CBC91534F76F00162364 /* darwin.S */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; path = darwin.S; sourceTree = "<group>"; };
+               6C43CBCB1534F76F00162364 /* ffi.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ffi.c; sourceTree = "<group>"; };
+               6C43CC051534F77800162364 /* darwin.S */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; path = darwin.S; sourceTree = "<group>"; };
+               6C43CC061534F77800162364 /* darwin64.S */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; path = darwin64.S; sourceTree = "<group>"; };
+               6C43CC071534F77800162364 /* ffi.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ffi.c; sourceTree = "<group>"; };
+               6C43CC081534F77800162364 /* ffi64.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ffi64.c; sourceTree = "<group>"; };
+               6C43CC281534F7BE00162364 /* closures.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = closures.c; path = src/closures.c; sourceTree = SOURCE_ROOT; };
+               6C43CC2B1534F7BE00162364 /* java_raw_api.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = java_raw_api.c; path = src/java_raw_api.c; sourceTree = SOURCE_ROOT; };
+               6C43CC2C1534F7BE00162364 /* prep_cif.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = prep_cif.c; path = src/prep_cif.c; sourceTree = SOURCE_ROOT; };
+               6C43CC2D1534F7BE00162364 /* raw_api.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = raw_api.c; path = src/raw_api.c; sourceTree = SOURCE_ROOT; };
+               6C43CC2E1534F7BE00162364 /* types.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = types.c; path = src/types.c; sourceTree = SOURCE_ROOT; };
+               6C43CC8D1535032600162364 /* ffi.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ffi.h; sourceTree = "<group>"; };
+               6C43CC8E1535032600162364 /* ffi_common.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ffi_common.h; sourceTree = "<group>"; };
+               6C43CC8F1535032600162364 /* ffi_i386.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ffi_i386.h; sourceTree = "<group>"; };
+               6C43CC901535032600162364 /* ffi_x86_64.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ffi_x86_64.h; sourceTree = "<group>"; };
+               6C43CC911535032600162364 /* fficonfig.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = fficonfig.h; sourceTree = "<group>"; };
+               6C43CC921535032600162364 /* fficonfig_i386.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = fficonfig_i386.h; sourceTree = "<group>"; };
+               6C43CC931535032600162364 /* fficonfig_x86_64.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = fficonfig_x86_64.h; sourceTree = "<group>"; };
+               6C43CC941535032600162364 /* ffitarget.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ffitarget.h; sourceTree = "<group>"; };
+               6C43CC951535032600162364 /* ffitarget_i386.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ffitarget_i386.h; sourceTree = "<group>"; };
+               6C43CC961535032600162364 /* ffitarget_x86_64.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ffitarget_x86_64.h; sourceTree = "<group>"; };
+               6C43CCA21535039600162364 /* ffi.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ffi.h; sourceTree = "<group>"; };
+               6C43CCA31535039600162364 /* ffi_armv7.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ffi_armv7.h; sourceTree = "<group>"; };
+               6C43CCA41535039600162364 /* ffi_common.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ffi_common.h; sourceTree = "<group>"; };
+               6C43CCA51535039600162364 /* ffi_i386.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ffi_i386.h; sourceTree = "<group>"; };
+               6C43CCA61535039600162364 /* fficonfig.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = fficonfig.h; sourceTree = "<group>"; };
+               6C43CCA71535039600162364 /* fficonfig_armv7.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = fficonfig_armv7.h; sourceTree = "<group>"; };
+               6C43CCA81535039600162364 /* fficonfig_i386.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = fficonfig_i386.h; sourceTree = "<group>"; };
+               6C43CCA91535039600162364 /* ffitarget.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ffitarget.h; sourceTree = "<group>"; };
+               6C43CCAA1535039600162364 /* ffitarget_arm.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ffitarget_arm.h; sourceTree = "<group>"; };
+               6C43CCAB1535039600162364 /* ffitarget_armv7.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ffitarget_armv7.h; sourceTree = "<group>"; };
+               6C43CCAC1535039600162364 /* ffitarget_i386.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ffitarget_i386.h; sourceTree = "<group>"; };
+               F6F980BA147386130008F121 /* libffi.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libffi.a; sourceTree = BUILT_PRODUCTS_DIR; };
 /* End PBXFileReference section */
 
 /* Begin PBXFrameworksBuildPhase section */
-               DB13B1631849DF1E0010F42D /* Frameworks */ = {
+               6C43CB3A1534E9D100162364 /* Frameworks */ = {
                        isa = PBXFrameworksBuildPhase;
                        buildActionMask = 2147483647;
                        files = (
-                               DB13B16A1849DF1E0010F42D /* Foundation.framework in Frameworks */,
                        );
                        runOnlyForDeploymentPostprocessing = 0;
                };
-               DB13B18E1849DF510010F42D /* Frameworks */ = {
+               F6F980B7147386130008F121 /* Frameworks */ = {
                        isa = PBXFrameworksBuildPhase;
                        buildActionMask = 2147483647;
                        files = (
-                               DB13B1931849DF510010F42D /* Cocoa.framework in Frameworks */,
                        );
                        runOnlyForDeploymentPostprocessing = 0;
                };
 /* End PBXFrameworksBuildPhase section */
 
 /* Begin PBXGroup section */
-               DB13B15B1849DEB70010F42D = {
+               6C43CBAF1534F76F00162364 /* iOS */ = {
                        isa = PBXGroup;
                        children = (
-                               DB13B3221849E0CE0010F42D /* ios */,
-                               DB13B34A1849E0FF0010F42D /* osx */,
-                               DB13B1681849DF1E0010F42D /* Frameworks */,
-                               DB13B1671849DF1E0010F42D /* Products */,
+                               6C43CCA11535039600162364 /* include */,
+                               6C43CBBB1534F76F00162364 /* src */,
                        );
+                       name = iOS;
+                       path = ios;
                        sourceTree = "<group>";
                };
-               DB13B1671849DF1E0010F42D /* Products */ = {
+               6C43CBBB1534F76F00162364 /* src */ = {
                        isa = PBXGroup;
                        children = (
-                               DB13B1661849DF1E0010F42D /* libffi.a */,
-                               DB13B1911849DF510010F42D /* ffi.dylib */,
+                               6C43CBC81534F76F00162364 /* x86 */,
+                               6C43CBBC1534F76F00162364 /* arm */,
                        );
-                       name = Products;
+                       path = src;
                        sourceTree = "<group>";
                };
-               DB13B1681849DF1E0010F42D /* Frameworks */ = {
+               6C43CBBC1534F76F00162364 /* arm */ = {
                        isa = PBXGroup;
                        children = (
-                               DB13B1691849DF1E0010F42D /* Foundation.framework */,
-                               DB13B1921849DF510010F42D /* Cocoa.framework */,
+                               6C43CBBD1534F76F00162364 /* ffi.c */,
+                               6C43CBBF1534F76F00162364 /* sysv.S */,
+                               6C43CBC01534F76F00162364 /* trampoline.S */,
                        );
-                       name = Frameworks;
+                       path = arm;
                        sourceTree = "<group>";
                };
-               DB13B3221849E0CE0010F42D /* ios */ = {
+               6C43CBC81534F76F00162364 /* x86 */ = {
                        isa = PBXGroup;
                        children = (
-                               DB13B3231849E0CE0010F42D /* include */,
-                               DB13B32E1849E0CE0010F42D /* src */,
+                               6C43CBC91534F76F00162364 /* darwin.S */,
+                               6C43CBCB1534F76F00162364 /* ffi.c */,
                        );
-                       path = ios;
+                       path = x86;
                        sourceTree = "<group>";
                };
-               DB13B3231849E0CE0010F42D /* include */ = {
+               6C43CBF01534F77800162364 /* OS X */ = {
                        isa = PBXGroup;
                        children = (
-                               DB13B3241849E0CE0010F42D /* ffi.h */,
-                               DB13B3251849E0CE0010F42D /* ffi_arm.h */,
-                               DB13B378184A50BF0010F42D /* ffi_arm64.h */,
-                               DB13B3261849E0CE0010F42D /* ffi_common.h */,
-                               DB13B3271849E0CE0010F42D /* ffi_i386.h */,
-                               DB13B379184A50BF0010F42D /* ffi_x86_64.h */,
-                               DB13B3281849E0CE0010F42D /* fficonfig.h */,
-                               DB13B3291849E0CE0010F42D /* fficonfig_arm.h */,
-                               DB13B37A184A50BF0010F42D /* fficonfig_arm64.h */,
-                               DB13B32A1849E0CE0010F42D /* fficonfig_i386.h */,
-                               DB13B37B184A50BF0010F42D /* fficonfig_x86_64.h */,
-                               DB13B32B1849E0CE0010F42D /* ffitarget.h */,
-                               DB13B32C1849E0CE0010F42D /* ffitarget_arm.h */,
-                               DB13B37C184A50BF0010F42D /* ffitarget_arm64.h */,
-                               DB13B32D1849E0CE0010F42D /* ffitarget_i386.h */,
-                               DB13B37D184A50BF0010F42D /* ffitarget_x86_64.h */,
+                               6C43CC8C1535032600162364 /* include */,
+                               6C43CBFC1534F77800162364 /* src */,
                        );
-                       path = include;
+                       name = "OS X";
+                       path = osx;
                        sourceTree = "<group>";
                };
-               DB13B32E1849E0CE0010F42D /* src */ = {
+               6C43CBFC1534F77800162364 /* src */ = {
                        isa = PBXGroup;
                        children = (
-                               DB13B37E184A50CC0010F42D /* aarch64 */,
-                               DB13B32F1849E0CE0010F42D /* arm */,
-                               DB13B3331849E0CE0010F42D /* closures.c */,
-                               DB13B3351849E0CE0010F42D /* dlmalloc.c */,
-                               DB13B3371849E0CE0010F42D /* prep_cif.c */,
-                               DB13B3381849E0CE0010F42D /* raw_api.c */,
-                               DB13B3391849E0CE0010F42D /* types.c */,
-                               DB13B33A1849E0CE0010F42D /* x86 */,
+                               6C43CC041534F77800162364 /* x86 */,
                        );
                        path = src;
                        sourceTree = "<group>";
                };
-               DB13B32F1849E0CE0010F42D /* arm */ = {
+               6C43CC041534F77800162364 /* x86 */ = {
                        isa = PBXGroup;
                        children = (
-                               DB13B3301849E0CE0010F42D /* ffi.c */,
-                               DB13B3311849E0CE0010F42D /* sysv.S */,
-                               DB13B3321849E0CE0010F42D /* trampoline.S */,
-                       );
-                       path = arm;
-                       sourceTree = "<group>";
-               };
-               DB13B33A1849E0CE0010F42D /* x86 */ = {
-                       isa = PBXGroup;
-                       children = (
-                               DB13B33B1849E0CE0010F42D /* darwin.S */,
-                               DB13B383184A50D60010F42D /* darwin64.S */,
-                               DB13B33C1849E0CE0010F42D /* ffi.c */,
-                               DB13B384184A50D60010F42D /* ffi64.c */,
+                               6C43CC051534F77800162364 /* darwin.S */,
+                               6C43CC061534F77800162364 /* darwin64.S */,
+                               6C43CC071534F77800162364 /* ffi.c */,
+                               6C43CC081534F77800162364 /* ffi64.c */,
                        );
                        path = x86;
                        sourceTree = "<group>";
                };
-               DB13B34A1849E0FF0010F42D /* osx */ = {
+               6C43CC3D1534F7C400162364 /* src */ = {
                        isa = PBXGroup;
                        children = (
-                               DB13B34B1849E0FF0010F42D /* include */,
-                               DB13B3561849E0FF0010F42D /* src */,
+                               6C43CC281534F7BE00162364 /* closures.c */,
+                               6C43CC2B1534F7BE00162364 /* java_raw_api.c */,
+                               6C43CC2C1534F7BE00162364 /* prep_cif.c */,
+                               6C43CC2D1534F7BE00162364 /* raw_api.c */,
+                               6C43CC2E1534F7BE00162364 /* types.c */,
                        );
-                       path = osx;
+                       name = src;
+                       path = ios;
                        sourceTree = "<group>";
                };
-               DB13B34B1849E0FF0010F42D /* include */ = {
+               6C43CC8C1535032600162364 /* include */ = {
                        isa = PBXGroup;
                        children = (
-                               DB13B34C1849E0FF0010F42D /* ffi.h */,
-                               DB13B34D1849E0FF0010F42D /* ffi_common.h */,
-                               DB13B34E1849E0FF0010F42D /* ffi_i386.h */,
-                               DB13B34F1849E0FF0010F42D /* ffi_x86_64.h */,
-                               DB13B3501849E0FF0010F42D /* fficonfig.h */,
-                               DB13B3511849E0FF0010F42D /* fficonfig_i386.h */,
-                               DB13B3521849E0FF0010F42D /* fficonfig_x86_64.h */,
-                               DB13B3531849E0FF0010F42D /* ffitarget.h */,
-                               DB13B3541849E0FF0010F42D /* ffitarget_i386.h */,
-                               DB13B3551849E0FF0010F42D /* ffitarget_x86_64.h */,
+                               6C43CC8D1535032600162364 /* ffi.h */,
+                               6C43CC8E1535032600162364 /* ffi_common.h */,
+                               6C43CC8F1535032600162364 /* ffi_i386.h */,
+                               6C43CC901535032600162364 /* ffi_x86_64.h */,
+                               6C43CC911535032600162364 /* fficonfig.h */,
+                               6C43CC921535032600162364 /* fficonfig_i386.h */,
+                               6C43CC931535032600162364 /* fficonfig_x86_64.h */,
+                               6C43CC941535032600162364 /* ffitarget.h */,
+                               6C43CC951535032600162364 /* ffitarget_i386.h */,
+                               6C43CC961535032600162364 /* ffitarget_x86_64.h */,
                        );
                        path = include;
                        sourceTree = "<group>";
                };
-               DB13B3561849E0FF0010F42D /* src */ = {
+               6C43CCA11535039600162364 /* include */ = {
                        isa = PBXGroup;
                        children = (
-                               DB13B3571849E0FF0010F42D /* closures.c */,
-                               DB13B3591849E0FF0010F42D /* dlmalloc.c */,
-                               DB13B35B1849E0FF0010F42D /* prep_cif.c */,
-                               DB13B35C1849E0FF0010F42D /* raw_api.c */,
-                               DB13B35D1849E0FF0010F42D /* types.c */,
-                               DB13B35E1849E0FF0010F42D /* x86 */,
+                               6C43CCA21535039600162364 /* ffi.h */,
+                               6C43CCA31535039600162364 /* ffi_armv7.h */,
+                               6C43CCA41535039600162364 /* ffi_common.h */,
+                               6C43CCA51535039600162364 /* ffi_i386.h */,
+                               6C43CCA61535039600162364 /* fficonfig.h */,
+                               6C43CCA71535039600162364 /* fficonfig_armv7.h */,
+                               6C43CCA81535039600162364 /* fficonfig_i386.h */,
+                               6C43CCA91535039600162364 /* ffitarget.h */,
+                               6C43CCAA1535039600162364 /* ffitarget_arm.h */,
+                               6C43CCAB1535039600162364 /* ffitarget_armv7.h */,
+                               6C43CCAC1535039600162364 /* ffitarget_i386.h */,
                        );
-                       path = src;
+                       path = include;
                        sourceTree = "<group>";
                };
-               DB13B35E1849E0FF0010F42D /* x86 */ = {
+               F6B0839514721EE50031D8A1 = {
                        isa = PBXGroup;
                        children = (
-                               DB13B35F1849E0FF0010F42D /* darwin.S */,
-                               DB13B3601849E0FF0010F42D /* darwin64.S */,
-                               DB13B3611849E0FF0010F42D /* ffi.c */,
-                               DB13B3621849E0FF0010F42D /* ffi64.c */,
+                               6C43CC3D1534F7C400162364 /* src */,
+                               6C43CBAF1534F76F00162364 /* iOS */,
+                               6C43CBF01534F77800162364 /* OS X */,
+                               F6F980C6147386260008F121 /* Products */,
                        );
-                       path = x86;
                        sourceTree = "<group>";
                };
-               DB13B37E184A50CC0010F42D /* aarch64 */ = {
+               F6F980C6147386260008F121 /* Products */ = {
                        isa = PBXGroup;
                        children = (
-                               DB13B37F184A50CC0010F42D /* ffi.c */,
-                               DB13B380184A50CC0010F42D /* sysv.S */,
+                               F6F980BA147386130008F121 /* libffi.a */,
+                               6C43CB3D1534E9D100162364 /* libffi.a */,
                        );
-                       path = aarch64;
-                       sourceTree = "<group>";
+                       name = Products;
+                       path = ../..;
+                       sourceTree = BUILT_PRODUCTS_DIR;
                };
 /* End PBXGroup section */
 
 /* Begin PBXHeadersBuildPhase section */
-               DB13B18F1849DF510010F42D /* Headers */ = {
+               6C43CB3B1534E9D100162364 /* Headers */ = {
+                       isa = PBXHeadersBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               6C43CC971535032600162364 /* ffi.h in Headers */,
+                               6C43CC981535032600162364 /* ffi_common.h in Headers */,
+                               6C43CC991535032600162364 /* ffi_i386.h in Headers */,
+                               6C43CC9A1535032600162364 /* ffi_x86_64.h in Headers */,
+                               6C43CC9E1535032600162364 /* ffitarget.h in Headers */,
+                               6C43CC9F1535032600162364 /* ffitarget_i386.h in Headers */,
+                               6C43CCA01535032600162364 /* ffitarget_x86_64.h in Headers */,
+                               6C43CC9B1535032600162364 /* fficonfig.h in Headers */,
+                               6C43CC9C1535032600162364 /* fficonfig_i386.h in Headers */,
+                               6C43CC9D1535032600162364 /* fficonfig_x86_64.h in Headers */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               F6F980B8147386130008F121 /* Headers */ = {
                        isa = PBXHeadersBuildPhase;
                        buildActionMask = 2147483647;
                        files = (
-                               DB13B3681849E0FF0010F42D /* fficonfig_i386.h in Headers */,
-                               DB13B3651849E0FF0010F42D /* ffi_i386.h in Headers */,
-                               DB13B36B1849E0FF0010F42D /* ffitarget_i386.h in Headers */,
-                               DB13B3691849E0FF0010F42D /* fficonfig_x86_64.h in Headers */,
-                               DB13B3661849E0FF0010F42D /* ffi_x86_64.h in Headers */,
-                               DB13B3631849E0FF0010F42D /* ffi.h in Headers */,
-                               DB13B36A1849E0FF0010F42D /* ffitarget.h in Headers */,
-                               DB13B3641849E0FF0010F42D /* ffi_common.h in Headers */,
-                               DB13B36C1849E0FF0010F42D /* ffitarget_x86_64.h in Headers */,
-                               DB13B3671849E0FF0010F42D /* fficonfig.h in Headers */,
+                               6C43CCAD1535039600162364 /* ffi.h in Headers */,
+                               6C43CCAE1535039600162364 /* ffi_armv7.h in Headers */,
+                               6C43CCAF1535039600162364 /* ffi_common.h in Headers */,
+                               6C43CCB01535039600162364 /* ffi_i386.h in Headers */,
+                               6C43CCB41535039600162364 /* ffitarget.h in Headers */,
+                               6C43CCB51535039600162364 /* ffitarget_arm.h in Headers */,
+                               6C43CCB61535039600162364 /* ffitarget_armv7.h in Headers */,
+                               6C43CCB71535039600162364 /* ffitarget_i386.h in Headers */,
+                               6C43CCB11535039600162364 /* fficonfig.h in Headers */,
+                               6C43CCB21535039600162364 /* fficonfig_armv7.h in Headers */,
+                               6C43CCB31535039600162364 /* fficonfig_i386.h in Headers */,
                        );
                        runOnlyForDeploymentPostprocessing = 0;
                };
 /* End PBXHeadersBuildPhase section */
 
 /* Begin PBXNativeTarget section */
-               DB13B1651849DF1E0010F42D /* libffi-iOS */ = {
+               6C43CB3C1534E9D100162364 /* libffi OS X */ = {
                        isa = PBXNativeTarget;
-                       buildConfigurationList = DB13B18B1849DF1E0010F42D /* Build configuration list for PBXNativeTarget "libffi-iOS" */;
+                       buildConfigurationList = 6C43CB4A1534E9D100162364 /* Build configuration list for PBXNativeTarget "libffi OS X" */;
                        buildPhases = (
-                               DB13B3051849E01C0010F42D /* ShellScript */,
-                               DB13B1621849DF1E0010F42D /* Sources */,
-                               DB13B1631849DF1E0010F42D /* Frameworks */,
-                               DB13B1641849DF1E0010F42D /* CopyFiles */,
+                               6C43CC401534FF3B00162364 /* Generate Source and Headers */,
+                               6C43CB391534E9D100162364 /* Sources */,
+                               6C43CB3A1534E9D100162364 /* Frameworks */,
+                               6C43CB3B1534E9D100162364 /* Headers */,
                        );
                        buildRules = (
                        );
                        dependencies = (
                        );
-                       name = "libffi-iOS";
-                       productName = ffi;
-                       productReference = DB13B1661849DF1E0010F42D /* libffi.a */;
+                       name = "libffi OS X";
+                       productName = "ffi OS X";
+                       productReference = 6C43CB3D1534E9D100162364 /* libffi.a */;
                        productType = "com.apple.product-type.library.static";
                };
-               DB13B1901849DF510010F42D /* libffi-Mac */ = {
+               F6F980B9147386130008F121 /* libffi iOS */ = {
                        isa = PBXNativeTarget;
-                       buildConfigurationList = DB13B1B01849DF520010F42D /* Build configuration list for PBXNativeTarget "libffi-Mac" */;
+                       buildConfigurationList = F6F980C4147386130008F121 /* Build configuration list for PBXNativeTarget "libffi iOS" */;
                        buildPhases = (
-                               DB13B3061849E0490010F42D /* ShellScript */,
-                               DB13B18D1849DF510010F42D /* Sources */,
-                               DB13B18E1849DF510010F42D /* Frameworks */,
-                               DB13B18F1849DF510010F42D /* Headers */,
+                               6C43CC3E1534F8E200162364 /* Generate Trampoline */,
+                               6C43CC3F1534FF1B00162364 /* Generate Source and Headers */,
+                               F6F980B6147386130008F121 /* Sources */,
+                               F6F980B7147386130008F121 /* Frameworks */,
+                               F6F980B8147386130008F121 /* Headers */,
                        );
                        buildRules = (
                        );
                        dependencies = (
                        );
-                       name = "libffi-Mac";
+                       name = "libffi iOS";
                        productName = ffi;
-                       productReference = DB13B1911849DF510010F42D /* ffi.dylib */;
-                       productType = "com.apple.product-type.library.dynamic";
+                       productReference = F6F980BA147386130008F121 /* libffi.a */;
+                       productType = "com.apple.product-type.library.static";
                };
 /* End PBXNativeTarget section */
 
 /* Begin PBXProject section */
-               DB13B15C1849DEB70010F42D /* Project object */ = {
+               F6B0839714721EE50031D8A1 /* Project object */ = {
                        isa = PBXProject;
                        attributes = {
-                               LastUpgradeCheck = 0510;
+                               LastUpgradeCheck = 0430;
                        };
-                       buildConfigurationList = DB13B15F1849DEB70010F42D /* Build configuration list for PBXProject "libffi" */;
+                       buildConfigurationList = F6B0839A14721EE50031D8A1 /* Build configuration list for PBXProject "libffi" */;
                        compatibilityVersion = "Xcode 3.2";
                        developmentRegion = English;
                        hasScannedForEncodings = 0;
                        knownRegions = (
                                en,
                        );
-                       mainGroup = DB13B15B1849DEB70010F42D;
-                       productRefGroup = DB13B1671849DF1E0010F42D /* Products */;
+                       mainGroup = F6B0839514721EE50031D8A1;
+                       productRefGroup = F6B0839514721EE50031D8A1;
                        projectDirPath = "";
                        projectRoot = "";
                        targets = (
-                               DB13B1651849DF1E0010F42D /* libffi-iOS */,
-                               DB13B1901849DF510010F42D /* libffi-Mac */,
+                               F6F980B9147386130008F121 /* libffi iOS */,
+                               6C43CB3C1534E9D100162364 /* libffi OS X */,
                        );
                };
 /* End PBXProject section */
 
 /* Begin PBXShellScriptBuildPhase section */
-               DB13B3051849E01C0010F42D /* ShellScript */ = {
+               6C43CC3E1534F8E200162364 /* Generate Trampoline */ = {
+                       isa = PBXShellScriptBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                       );
+                       inputPaths = (
+                       );
+                       name = "Generate Trampoline";
+                       outputPaths = (
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+                       shellPath = /usr/bin/python;
+                       shellScript = "import subprocess\nimport re\nimport os\nimport errno\nimport sys\n\ndef main():\n    with open('src/arm/trampoline.S', 'w') as tramp_out:\n        p = subprocess.Popen(['bash', 'src/arm/gentramp.sh'], stdout=tramp_out)\n        p.wait()\n\nif __name__ == '__main__':\n    main()";
+               };
+               6C43CC3F1534FF1B00162364 /* Generate Source and Headers */ = {
                        isa = PBXShellScriptBuildPhase;
                        buildActionMask = 2147483647;
                        files = (
                        );
                        inputPaths = (
                        );
+                       name = "Generate Source and Headers";
                        outputPaths = (
                        );
                        runOnlyForDeploymentPostprocessing = 0;
                        shellPath = /bin/sh;
                        shellScript = "/usr/bin/python generate-ios-source-and-headers.py";
                };
-               DB13B3061849E0490010F42D /* ShellScript */ = {
+               6C43CC401534FF3B00162364 /* Generate Source and Headers */ = {
                        isa = PBXShellScriptBuildPhase;
                        buildActionMask = 2147483647;
                        files = (
                        );
                        inputPaths = (
                        );
+                       name = "Generate Source and Headers";
                        outputPaths = (
                        );
                        runOnlyForDeploymentPostprocessing = 0;
 /* End PBXShellScriptBuildPhase section */
 
 /* Begin PBXSourcesBuildPhase section */
-               DB13B1621849DF1E0010F42D /* Sources */ = {
+               6C43CB391534E9D100162364 /* Sources */ = {
                        isa = PBXSourcesBuildPhase;
                        buildActionMask = 2147483647;
                        files = (
-                               DB13B3461849E0CE0010F42D /* types.c in Sources */,
-                               DB13B33E1849E0CE0010F42D /* sysv.S in Sources */,
-                               DB13B3451849E0CE0010F42D /* raw_api.c in Sources */,
-                               DB13B382184A50CC0010F42D /* sysv.S in Sources */,
-                               DB13B3401849E0CE0010F42D /* closures.c in Sources */,
-                               DB13B33F1849E0CE0010F42D /* trampoline.S in Sources */,
-                               DB13B386184A50D60010F42D /* ffi64.c in Sources */,
-                               DB13B385184A50D60010F42D /* darwin64.S in Sources */,
-                               DB13B33D1849E0CE0010F42D /* ffi.c in Sources */,
-                               DB13B3481849E0CE0010F42D /* ffi.c in Sources */,
-                               DB13B381184A50CC0010F42D /* ffi.c in Sources */,
-                               DB13B3471849E0CE0010F42D /* darwin.S in Sources */,
-                               DB13B3441849E0CE0010F42D /* prep_cif.c in Sources */,
+                               6C43CC1F1534F77800162364 /* darwin.S in Sources */,
+                               6C43CC201534F77800162364 /* darwin64.S in Sources */,
+                               6C43CC211534F77800162364 /* ffi.c in Sources */,
+                               6C43CC221534F77800162364 /* ffi64.c in Sources */,
+                               6C43CC301534F7BE00162364 /* closures.c in Sources */,
+                               6C43CC361534F7BE00162364 /* java_raw_api.c in Sources */,
+                               6C43CC381534F7BE00162364 /* prep_cif.c in Sources */,
+                               6C43CC3A1534F7BE00162364 /* raw_api.c in Sources */,
+                               6C43CC3C1534F7BE00162364 /* types.c in Sources */,
                        );
                        runOnlyForDeploymentPostprocessing = 0;
                };
-               DB13B18D1849DF510010F42D /* Sources */ = {
+               F6F980B6147386130008F121 /* Sources */ = {
                        isa = PBXSourcesBuildPhase;
                        buildActionMask = 2147483647;
                        files = (
-                               DB13B3761849E0FF0010F42D /* ffi.c in Sources */,
-                               DB13B3731849E0FF0010F42D /* types.c in Sources */,
-                               DB13B3721849E0FF0010F42D /* raw_api.c in Sources */,
-                               DB13B3711849E0FF0010F42D /* prep_cif.c in Sources */,
-                               DB13B36D1849E0FF0010F42D /* closures.c in Sources */,
-                               DB13B3741849E0FF0010F42D /* darwin.S in Sources */,
-                               DB13B3771849E0FF0010F42D /* ffi64.c in Sources */,
-                               DB13B3751849E0FF0010F42D /* darwin64.S in Sources */,
+                               6C43CBDC1534F76F00162364 /* ffi.c in Sources */,
+                               6C43CBDD1534F76F00162364 /* sysv.S in Sources */,
+                               6C43CBDE1534F76F00162364 /* trampoline.S in Sources */,
+                               6C43CBE61534F76F00162364 /* darwin.S in Sources */,
+                               6C43CBE81534F76F00162364 /* ffi.c in Sources */,
+                               6C43CC2F1534F7BE00162364 /* closures.c in Sources */,
+                               6C43CC351534F7BE00162364 /* java_raw_api.c in Sources */,
+                               6C43CC371534F7BE00162364 /* prep_cif.c in Sources */,
+                               6C43CC391534F7BE00162364 /* raw_api.c in Sources */,
+                               6C43CC3B1534F7BE00162364 /* types.c in Sources */,
                        );
                        runOnlyForDeploymentPostprocessing = 0;
                };
 /* End PBXSourcesBuildPhase section */
 
 /* Begin XCBuildConfiguration section */
-               DB13B1601849DEB70010F42D /* Debug */ = {
+               6C43CB4B1534E9D100162364 /* Debug */ = {
                        isa = XCBuildConfiguration;
                        buildSettings = {
+                               ARCHS = "$(ARCHS_STANDARD_32_64_BIT)";
+                               DSTROOT = /tmp/ffi.dst;
+                               FRAMEWORK_SEARCH_PATHS = (
+                                       "$(inherited)",
+                                       "\"$(SYSTEM_APPS_DIR)/Xcode.app/Contents/Developer/Library/Frameworks\"",
+                               );
+                               GCC_ENABLE_OBJC_EXCEPTIONS = YES;
+                               GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
+                               GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+                               GCC_WARN_UNINITIALIZED_AUTOS = YES;
+                               MACOSX_DEPLOYMENT_TARGET = 10.6;
+                               ONLY_ACTIVE_ARCH = YES;
+                               PRODUCT_NAME = ffi;
+                               SDKROOT = macosx;
                        };
                        name = Debug;
                };
-               DB13B1611849DEB70010F42D /* Release */ = {
+               6C43CB4C1534E9D100162364 /* Release */ = {
                        isa = XCBuildConfiguration;
                        buildSettings = {
+                               ARCHS = "$(ARCHS_STANDARD_32_64_BIT)";
+                               DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
+                               DSTROOT = /tmp/ffi.dst;
+                               FRAMEWORK_SEARCH_PATHS = (
+                                       "$(inherited)",
+                                       "\"$(SYSTEM_APPS_DIR)/Xcode.app/Contents/Developer/Library/Frameworks\"",
+                               );
+                               GCC_ENABLE_OBJC_EXCEPTIONS = YES;
+                               GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
+                               GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+                               GCC_WARN_UNINITIALIZED_AUTOS = YES;
+                               MACOSX_DEPLOYMENT_TARGET = 10.6;
+                               PRODUCT_NAME = ffi;
+                               SDKROOT = macosx;
                        };
                        name = Release;
                };
-               DB13B1871849DF1E0010F42D /* Debug */ = {
+               F6B083AB14721EE50031D8A1 /* Debug */ = {
                        isa = XCBuildConfiguration;
                        buildSettings = {
                                ALWAYS_SEARCH_USER_PATHS = NO;
-                               ARCHS = "$(ARCHS_STANDARD_INCLUDING_64_BIT)";
-                               CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
-                               CLANG_CXX_LIBRARY = "libc++";
-                               CLANG_ENABLE_MODULES = YES;
-                               CLANG_ENABLE_OBJC_ARC = YES;
-                               CLANG_WARN_BOOL_CONVERSION = YES;
-                               CLANG_WARN_CONSTANT_CONVERSION = YES;
-                               CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
-                               CLANG_WARN_EMPTY_BODY = YES;
-                               CLANG_WARN_ENUM_CONVERSION = YES;
-                               CLANG_WARN_INT_CONVERSION = YES;
-                               CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
-                               CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+                               ARCHS = "$(ARCHS_STANDARD_32_BIT)";
                                COPY_PHASE_STRIP = NO;
-                               DSTROOT = /tmp/ffi.dst;
                                GCC_C_LANGUAGE_STANDARD = gnu99;
                                GCC_DYNAMIC_NO_PIC = NO;
                                GCC_OPTIMIZATION_LEVEL = 0;
                                        "$(inherited)",
                                );
                                GCC_SYMBOLS_PRIVATE_EXTERN = NO;
-                               GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
-                               GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
-                               GCC_WARN_UNDECLARED_SELECTOR = YES;
-                               GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
-                               GCC_WARN_UNUSED_FUNCTION = YES;
+                               GCC_WARN_ABOUT_MISSING_PROTOTYPES = NO;
+                               GCC_WARN_ABOUT_RETURN_TYPE = YES;
+                               GCC_WARN_UNUSED_VALUE = NO;
                                GCC_WARN_UNUSED_VARIABLE = YES;
-                               HEADER_SEARCH_PATHS = (
-                                       "$(inherited)",
-                                       ios/include,
-                               );
-                               IPHONEOS_DEPLOYMENT_TARGET = 6.0;
-                               ONLY_ACTIVE_ARCH = YES;
-                               OTHER_LDFLAGS = "-ObjC";
-                               PRODUCT_NAME = ffi;
+                               HEADER_SEARCH_PATHS = ios/include;
                                SDKROOT = iphoneos;
-                               SKIP_INSTALL = YES;
                        };
                        name = Debug;
                };
-               DB13B1881849DF1E0010F42D /* Release */ = {
+               F6B083AC14721EE50031D8A1 /* Release */ = {
                        isa = XCBuildConfiguration;
                        buildSettings = {
                                ALWAYS_SEARCH_USER_PATHS = NO;
-                               ARCHS = "$(ARCHS_STANDARD_INCLUDING_64_BIT)";
-                               CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
-                               CLANG_CXX_LIBRARY = "libc++";
-                               CLANG_ENABLE_MODULES = YES;
-                               CLANG_ENABLE_OBJC_ARC = YES;
-                               CLANG_WARN_BOOL_CONVERSION = YES;
-                               CLANG_WARN_CONSTANT_CONVERSION = YES;
-                               CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
-                               CLANG_WARN_EMPTY_BODY = YES;
-                               CLANG_WARN_ENUM_CONVERSION = YES;
-                               CLANG_WARN_INT_CONVERSION = YES;
-                               CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
-                               CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+                               ARCHS = "$(ARCHS_STANDARD_32_BIT)";
                                COPY_PHASE_STRIP = YES;
-                               DSTROOT = /tmp/ffi.dst;
-                               ENABLE_NS_ASSERTIONS = NO;
                                GCC_C_LANGUAGE_STANDARD = gnu99;
-                               GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
-                               GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
-                               GCC_WARN_UNDECLARED_SELECTOR = YES;
-                               GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
-                               GCC_WARN_UNUSED_FUNCTION = YES;
+                               GCC_PREPROCESSOR_DEFINITIONS = "";
+                               GCC_WARN_ABOUT_MISSING_PROTOTYPES = NO;
+                               GCC_WARN_ABOUT_RETURN_TYPE = YES;
+                               GCC_WARN_UNUSED_VALUE = NO;
                                GCC_WARN_UNUSED_VARIABLE = YES;
-                               HEADER_SEARCH_PATHS = (
-                                       "$(inherited)",
-                                       ios/include,
-                               );
-                               IPHONEOS_DEPLOYMENT_TARGET = 6.0;
-                               OTHER_LDFLAGS = "-ObjC";
-                               PRODUCT_NAME = ffi;
+                               HEADER_SEARCH_PATHS = ios/include;
                                SDKROOT = iphoneos;
-                               SKIP_INSTALL = YES;
                                VALIDATE_PRODUCT = YES;
                        };
                        name = Release;
                };
-               DB13B1B11849DF520010F42D /* Debug */ = {
+               F6F980C2147386130008F121 /* Debug */ = {
                        isa = XCBuildConfiguration;
                        buildSettings = {
-                               ALWAYS_SEARCH_USER_PATHS = NO;
-                               ARCHS = "$(ARCHS_STANDARD_32_64_BIT)";
-                               CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
-                               CLANG_CXX_LIBRARY = "libc++";
-                               CLANG_ENABLE_OBJC_ARC = YES;
-                               CLANG_WARN_BOOL_CONVERSION = YES;
-                               CLANG_WARN_CONSTANT_CONVERSION = YES;
-                               CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
-                               CLANG_WARN_EMPTY_BODY = YES;
-                               CLANG_WARN_ENUM_CONVERSION = YES;
-                               CLANG_WARN_INT_CONVERSION = YES;
-                               CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
-                               CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
-                               COPY_PHASE_STRIP = NO;
-                               DYLIB_COMPATIBILITY_VERSION = 1;
-                               DYLIB_CURRENT_VERSION = 1;
-                               GCC_C_LANGUAGE_STANDARD = gnu99;
-                               GCC_DYNAMIC_NO_PIC = NO;
-                               GCC_ENABLE_OBJC_EXCEPTIONS = YES;
-                               GCC_OPTIMIZATION_LEVEL = 0;
-                               GCC_PREPROCESSOR_DEFINITIONS = (
-                                       "DEBUG=1",
-                                       "$(inherited)",
+                               ARCHS = (
+                                       armv6,
+                                       armv7,
                                );
-                               GCC_SYMBOLS_PRIVATE_EXTERN = NO;
-                               GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
-                               GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
-                               GCC_WARN_UNDECLARED_SELECTOR = YES;
-                               GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
-                               GCC_WARN_UNUSED_FUNCTION = YES;
-                               GCC_WARN_UNUSED_VARIABLE = YES;
-                               HEADER_SEARCH_PATHS = (
-                                       "$(inherited)",
-                                       osx/include,
-                               );
-                               MACOSX_DEPLOYMENT_TARGET = 10.7;
-                               ONLY_ACTIVE_ARCH = YES;
-                               OTHER_LDFLAGS = "-Wl,-no_compact_unwind";
+                               DSTROOT = /tmp/ffi.dst;
+                               GCC_PRECOMPILE_PREFIX_HEADER = YES;
+                               GCC_THUMB_SUPPORT = NO;
+                               IPHONEOS_DEPLOYMENT_TARGET = 4.0;
+                               OTHER_LDFLAGS = "-ObjC";
                                PRODUCT_NAME = ffi;
-                               SDKROOT = macosx;
+                               SKIP_INSTALL = YES;
                        };
                        name = Debug;
                };
-               DB13B1B21849DF520010F42D /* Release */ = {
+               F6F980C3147386130008F121 /* Release */ = {
                        isa = XCBuildConfiguration;
                        buildSettings = {
-                               ALWAYS_SEARCH_USER_PATHS = NO;
-                               ARCHS = "$(ARCHS_STANDARD_32_64_BIT)";
-                               CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
-                               CLANG_CXX_LIBRARY = "libc++";
-                               CLANG_ENABLE_OBJC_ARC = YES;
-                               CLANG_WARN_BOOL_CONVERSION = YES;
-                               CLANG_WARN_CONSTANT_CONVERSION = YES;
-                               CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
-                               CLANG_WARN_EMPTY_BODY = YES;
-                               CLANG_WARN_ENUM_CONVERSION = YES;
-                               CLANG_WARN_INT_CONVERSION = YES;
-                               CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
-                               CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
-                               COPY_PHASE_STRIP = YES;
-                               DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
-                               DYLIB_COMPATIBILITY_VERSION = 1;
-                               DYLIB_CURRENT_VERSION = 1;
-                               ENABLE_NS_ASSERTIONS = NO;
-                               GCC_C_LANGUAGE_STANDARD = gnu99;
-                               GCC_ENABLE_OBJC_EXCEPTIONS = YES;
-                               GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
-                               GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
-                               GCC_WARN_UNDECLARED_SELECTOR = YES;
-                               GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
-                               GCC_WARN_UNUSED_FUNCTION = YES;
-                               GCC_WARN_UNUSED_VARIABLE = YES;
-                               HEADER_SEARCH_PATHS = (
-                                       "$(inherited)",
-                                       osx/include,
+                               ARCHS = (
+                                       armv6,
+                                       armv7,
                                );
-                               MACOSX_DEPLOYMENT_TARGET = 10.7;
-                               OTHER_LDFLAGS = "-Wl,-no_compact_unwind";
+                               DSTROOT = /tmp/ffi.dst;
+                               GCC_PRECOMPILE_PREFIX_HEADER = YES;
+                               GCC_THUMB_SUPPORT = NO;
+                               IPHONEOS_DEPLOYMENT_TARGET = 4.0;
+                               OTHER_LDFLAGS = "-ObjC";
                                PRODUCT_NAME = ffi;
-                               SDKROOT = macosx;
+                               SKIP_INSTALL = YES;
                        };
                        name = Release;
                };
 /* End XCBuildConfiguration section */
 
 /* Begin XCConfigurationList section */
-               DB13B15F1849DEB70010F42D /* Build configuration list for PBXProject "libffi" */ = {
+               6C43CB4A1534E9D100162364 /* Build configuration list for PBXNativeTarget "libffi OS X" */ = {
                        isa = XCConfigurationList;
                        buildConfigurations = (
-                               DB13B1601849DEB70010F42D /* Debug */,
-                               DB13B1611849DEB70010F42D /* Release */,
+                               6C43CB4B1534E9D100162364 /* Debug */,
+                               6C43CB4C1534E9D100162364 /* Release */,
                        );
                        defaultConfigurationIsVisible = 0;
                        defaultConfigurationName = Release;
                };
-               DB13B18B1849DF1E0010F42D /* Build configuration list for PBXNativeTarget "libffi-iOS" */ = {
+               F6B0839A14721EE50031D8A1 /* Build configuration list for PBXProject "libffi" */ = {
                        isa = XCConfigurationList;
                        buildConfigurations = (
-                               DB13B1871849DF1E0010F42D /* Debug */,
-                               DB13B1881849DF1E0010F42D /* Release */,
+                               F6B083AB14721EE50031D8A1 /* Debug */,
+                               F6B083AC14721EE50031D8A1 /* Release */,
                        );
                        defaultConfigurationIsVisible = 0;
                        defaultConfigurationName = Release;
                };
-               DB13B1B01849DF520010F42D /* Build configuration list for PBXNativeTarget "libffi-Mac" */ = {
+               F6F980C4147386130008F121 /* Build configuration list for PBXNativeTarget "libffi iOS" */ = {
                        isa = XCConfigurationList;
                        buildConfigurations = (
-                               DB13B1B11849DF520010F42D /* Debug */,
-                               DB13B1B21849DF520010F42D /* Release */,
+                               F6F980C2147386130008F121 /* Debug */,
+                               F6F980C3147386130008F121 /* Release */,
                        );
                        defaultConfigurationIsVisible = 0;
                        defaultConfigurationName = Release;
                };
 /* End XCConfigurationList section */
        };
-       rootObject = DB13B15C1849DEB70010F42D /* Project object */;
+       rootObject = F6B0839714721EE50031D8A1 /* Project object */;
 }
index ec773d6..f1a063d 100644 (file)
@@ -49,29 +49,14 @@ struct call_context
   } v [AARCH64_N_VREG];
 };
 
-#if defined(__clang__) && defined(__APPLE__)
-void sys_icache_invalidate(void *start, size_t len);
-#endif
-
-static inline void ffi_clear_cache(void *start, void *end)
-{
-#if defined(__clang__) && defined(__APPLE__)
-       sys_icache_invalidate(start, (char *)end-(char *)start);
-#elif defined(__GNUC__)
-       __builtin___clear_cache(start, end);
-#else
-#error "Missing builtin to flush instruction cache"
-#endif
-}
-
 static void *
-get_x_addr (struct call_context *context, size_t n)
+get_x_addr (struct call_context *context, unsigned n)
 {
   return &context->x[n];
 }
 
 static void *
-get_s_addr (struct call_context *context, size_t n)
+get_s_addr (struct call_context *context, unsigned n)
 {
 #if defined __AARCH64EB__
   return &context->v[n].d[1].s[1];
@@ -81,7 +66,7 @@ get_s_addr (struct call_context *context, size_t n)
 }
 
 static void *
-get_d_addr (struct call_context *context, size_t n)
+get_d_addr (struct call_context *context, unsigned n)
 {
 #if defined __AARCH64EB__
   return &context->v[n].d[1];
@@ -91,7 +76,7 @@ get_d_addr (struct call_context *context, size_t n)
 }
 
 static void *
-get_v_addr (struct call_context *context, size_t n)
+get_v_addr (struct call_context *context, unsigned n)
 {
   return &context->v[n];
 }
@@ -109,10 +94,8 @@ get_basic_type_addr (unsigned short type, struct call_context *context,
       return get_s_addr (context, n);
     case FFI_TYPE_DOUBLE:
       return get_d_addr (context, n);
-#if FFI_TYPE_DOUBLE != FFI_TYPE_LONGDOUBLE
     case FFI_TYPE_LONGDOUBLE:
       return get_v_addr (context, n);
-#endif
     case FFI_TYPE_UINT8:
     case FFI_TYPE_SINT8:
     case FFI_TYPE_UINT16:
@@ -140,10 +123,8 @@ get_basic_type_alignment (unsigned short type)
     case FFI_TYPE_FLOAT:
     case FFI_TYPE_DOUBLE:
       return sizeof (UINT64);
-#if FFI_TYPE_DOUBLE != FFI_TYPE_LONGDOUBLE
     case FFI_TYPE_LONGDOUBLE:
       return sizeof (long double);
-#endif
     case FFI_TYPE_UINT8:
     case FFI_TYPE_SINT8:
     case FFI_TYPE_UINT16:
@@ -173,10 +154,8 @@ get_basic_type_size (unsigned short type)
       return sizeof (UINT32);
     case FFI_TYPE_DOUBLE:
       return sizeof (UINT64);
-#if FFI_TYPE_DOUBLE != FFI_TYPE_LONGDOUBLE
     case FFI_TYPE_LONGDOUBLE:
       return sizeof (long double);
-#endif
     case FFI_TYPE_UINT8:
       return sizeof (UINT8);
     case FFI_TYPE_SINT8:
@@ -207,7 +186,7 @@ ffi_call_SYSV (unsigned (*)(struct call_context *context, unsigned char *,
                            extended_cif *),
                struct call_context *context,
                extended_cif *,
-               size_t,
+               unsigned,
                void (*fn)(void));
 
 extern void
@@ -326,9 +305,7 @@ is_register_candidate (ffi_type *ty)
     case FFI_TYPE_VOID:
     case FFI_TYPE_FLOAT:
     case FFI_TYPE_DOUBLE:
-#if FFI_TYPE_DOUBLE != FFI_TYPE_LONGDOUBLE
     case FFI_TYPE_LONGDOUBLE:
-#endif
     case FFI_TYPE_UINT8:
     case FFI_TYPE_UINT16:
     case FFI_TYPE_UINT32:
@@ -388,14 +365,14 @@ is_v_register_candidate (ffi_type *ty)
 
 struct arg_state
 {
-  size_t ngrn;                /* Next general-purpose register number. */
-  size_t nsrn;                /* Next vector register number. */
-  size_t nsaa;                /* Next stack offset. */
+  unsigned ngrn;                /* Next general-purpose register number. */
+  unsigned nsrn;                /* Next vector register number. */
+  unsigned nsaa;                /* Next stack offset. */
 };
 
 /* Initialize a procedure call argument marshalling state.  */
 static void
-arg_init (struct arg_state *state, size_t call_frame_size)
+arg_init (struct arg_state *state, unsigned call_frame_size)
 {
   state->ngrn = 0;
   state->nsrn = 0;
@@ -405,7 +382,7 @@ arg_init (struct arg_state *state, size_t call_frame_size)
 /* Return the number of available consecutive core argument
    registers.  */
 
-static size_t
+static unsigned
 available_x (struct arg_state *state)
 {
   return N_X_ARG_REG - state->ngrn;
@@ -414,7 +391,7 @@ available_x (struct arg_state *state)
 /* Return the number of available consecutive vector argument
    registers.  */
 
-static size_t
+static unsigned
 available_v (struct arg_state *state)
 {
   return N_V_ARG_REG - state->nsrn;
@@ -450,8 +427,8 @@ allocate_to_v (struct call_context *context, struct arg_state *state)
 
 /* Allocate an aligned slot on the stack and return a pointer to it.  */
 static void *
-allocate_to_stack (struct arg_state *state, void *stack, size_t alignment,
-                  size_t size)
+allocate_to_stack (struct arg_state *state, void *stack, unsigned alignment,
+                  unsigned size)
 {
   void *allocation;
 
@@ -480,11 +457,9 @@ copy_basic_type (void *dest, void *source, unsigned short type)
     case FFI_TYPE_DOUBLE:
       *(double *) dest = *(double *) source;
       break;
-#if FFI_TYPE_DOUBLE != FFI_TYPE_LONGDOUBLE
     case FFI_TYPE_LONGDOUBLE:
       *(long double *) dest = *(long double *) source;
       break;
-#endif
     case FFI_TYPE_UINT8:
       *(ffi_arg *) dest = *(UINT8 *) source;
       break;
@@ -539,8 +514,8 @@ copy_hfa_to_reg_or_stack (void *memory,
     {
       int i;
       unsigned short type = get_homogeneous_type (ty);
-         unsigned count = element_count (ty);
-         for (i = 0; i < count; i++)
+      unsigned elems = element_count (ty);
+      for (i = 0; i < elems; i++)
        {
          void *reg = allocate_to_v (context, state);
          copy_basic_type (reg, memory, type);
@@ -573,13 +548,11 @@ allocate_to_register_or_stack (struct call_context *context,
        return allocate_to_d (context, state);
       state->nsrn = N_V_ARG_REG;
       break;
-#if FFI_TYPE_DOUBLE != FFI_TYPE_LONGDOUBLE
     case FFI_TYPE_LONGDOUBLE:
       if (state->nsrn < N_V_ARG_REG)
        return allocate_to_v (context, state);
       state->nsrn = N_V_ARG_REG;
       break;
-#endif
     case FFI_TYPE_UINT8:
     case FFI_TYPE_SINT8:
     case FFI_TYPE_UINT16:
@@ -642,9 +615,7 @@ aarch64_prep_args (struct call_context *context, unsigned char *stack,
           appropriate register, or if none are available, to the stack.  */
        case FFI_TYPE_FLOAT:
        case FFI_TYPE_DOUBLE:
-#if FFI_TYPE_DOUBLE != FFI_TYPE_LONGDOUBLE
        case FFI_TYPE_LONGDOUBLE:
-#endif
        case FFI_TYPE_UINT8:
        case FFI_TYPE_SINT8:
        case FFI_TYPE_UINT16:
@@ -757,7 +728,7 @@ ffi_call (ffi_cif *cif, void (*fn)(void), void *rvalue, void **avalue)
     case FFI_SYSV:
       {
         struct call_context context;
-       size_t stack_bytes;
+       unsigned stack_bytes;
 
        /* Figure out the total amount of stack space we need, the
           above call frame space needs to be 16 bytes aligned to
@@ -774,9 +745,7 @@ ffi_call (ffi_cif *cif, void (*fn)(void), void *rvalue, void **avalue)
               case FFI_TYPE_VOID:
               case FFI_TYPE_FLOAT:
               case FFI_TYPE_DOUBLE:
-#if FFI_TYPE_DOUBLE != FFI_TYPE_LONGDOUBLE
               case FFI_TYPE_LONGDOUBLE:
-#endif
               case FFI_TYPE_UINT8:
               case FFI_TYPE_SINT8:
               case FFI_TYPE_UINT16:
@@ -809,7 +778,7 @@ ffi_call (ffi_cif *cif, void (*fn)(void), void *rvalue, void **avalue)
                  }
                 else if ((cif->rtype->size + 7) / 8 < N_X_ARG_REG)
                   {
-                    size_t size = ALIGN (cif->rtype->size, sizeof (UINT64));
+                    unsigned size = ALIGN (cif->rtype->size, sizeof (UINT64));
                     memcpy (rvalue, get_x_addr (&context, 0), size);
                   }
                 else
@@ -855,7 +824,7 @@ static unsigned char trampoline [] =
     memcpy (__tramp + 12, &__fun, sizeof (__fun));                     \
     memcpy (__tramp + 20, &__ctx, sizeof (__ctx));                     \
     memcpy (__tramp + 28, &__flags, sizeof (__flags));                 \
-       ffi_clear_cache(__tramp, __tramp + FFI_TRAMPOLINE_SIZE);                \
+    __clear_cache(__tramp, __tramp + FFI_TRAMPOLINE_SIZE);             \
   })
 
 ffi_status
@@ -896,9 +865,6 @@ ffi_prep_closure_loc (ffi_closure* closure,
 
 void
 ffi_closure_SYSV_inner (ffi_closure *closure, struct call_context *context,
-         void *stack);
-void
-ffi_closure_SYSV_inner (ffi_closure *closure, struct call_context *context,
                        void *stack)
 {
   ffi_cif *cif = closure->cif;
@@ -931,12 +897,11 @@ ffi_closure_SYSV_inner (ffi_closure *closure, struct call_context *context,
        case FFI_TYPE_SINT64:
        case  FFI_TYPE_FLOAT:
        case  FFI_TYPE_DOUBLE:
-#if FFI_TYPE_DOUBLE != FFI_TYPE_LONGDOUBLE
        case  FFI_TYPE_LONGDOUBLE:
          avalue[i] = allocate_to_register_or_stack (context, stack,
                                                     &state, ty->type);
          break;
-#endif
+
        case FFI_TYPE_STRUCT:
          if (is_hfa (ty))
            {
@@ -993,13 +958,11 @@ ffi_closure_SYSV_inner (ffi_closure *closure, struct call_context *context,
                        break;
                      }
 
-#if FFI_TYPE_DOUBLE != FFI_TYPE_LONGDOUBLE
                    case FFI_TYPE_LONGDOUBLE:
                          memcpy (&avalue[i],
                                  allocate_to_v (context, &state),
                                  sizeof (*avalue));
                      break;
-#endif
 
                    default:
                      FFI_ASSERT (0);
@@ -1070,9 +1033,7 @@ ffi_closure_SYSV_inner (ffi_closure *closure, struct call_context *context,
         case FFI_TYPE_SINT64:
         case FFI_TYPE_FLOAT:
         case FFI_TYPE_DOUBLE:
-#if FFI_TYPE_DOUBLE != FFI_TYPE_LONGDOUBLE
         case FFI_TYPE_LONGDOUBLE:
-#endif
          {
            void *addr = get_basic_type_addr (cif->rtype->type, context, 0);
            copy_basic_type (addr, rvalue, cif->rtype->type);
@@ -1081,10 +1042,10 @@ ffi_closure_SYSV_inner (ffi_closure *closure, struct call_context *context,
         case FFI_TYPE_STRUCT:
           if (is_hfa (cif->rtype))
            {
-                 int j;
+             int i;
              unsigned short type = get_homogeneous_type (cif->rtype);
              unsigned elems = element_count (cif->rtype);
-                 for (j = 0; j < elems; i++)
+             for (i = 0; i < elems; i++)
                {
                  void *reg = get_basic_type_addr (type, context, i);
                  copy_basic_type (reg, rvalue, type);
@@ -1093,7 +1054,7 @@ ffi_closure_SYSV_inner (ffi_closure *closure, struct call_context *context,
            }
           else if ((cif->rtype->size + 7) / 8 < N_X_ARG_REG)
             {
-              size_t size = ALIGN (cif->rtype->size, sizeof (UINT64)) ;
+              unsigned size = ALIGN (cif->rtype->size, sizeof (UINT64)) ;
               memcpy (get_x_addr (context, 0), rvalue, size);
             }
           else
@@ -1112,3 +1073,4 @@ ffi_closure_SYSV_inner (ffi_closure *closure, struct call_context *context,
       (closure->fun) (cif, rvalue, avalue, closure->user_data);
     }
 }
+
index 901ee6a..1022454 100644 (file)
@@ -23,25 +23,15 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  */
 #include <fficonfig.h>
 #include <ffi.h>
 
-#ifdef HAVE_MACHINE_ASM_H
-#include <machine/asm.h>
-#else
-#ifdef __USER_LABEL_PREFIX__
-#define CONCAT1(a, b) CONCAT2(a, b)
-#define CONCAT2(a, b) a ## b
-
-/* Use the right prefix for global labels.  */
-#define CNAME(x) CONCAT1 (__USER_LABEL_PREFIX__, x)
-#else
-#define CNAME(x) x
-#endif
-#endif
-
 #define cfi_adjust_cfa_offset(off)     .cfi_adjust_cfa_offset off
 #define cfi_rel_offset(reg, off)       .cfi_rel_offset reg, off
 #define cfi_restore(reg)               .cfi_restore reg
 #define cfi_def_cfa_register(reg)      .cfi_def_cfa_register reg
 
+        .text
+        .globl ffi_call_SYSV
+        .type ffi_call_SYSV, #function
+
 /* ffi_call_SYSV()
 
    Create a stack frame, setup an argument context, call the callee
@@ -63,7 +53,7 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  */
                           extended_cif *),
                   struct call_context *context,
                   extended_cif *,
-                  size_t required_stack_size,
+                  unsigned required_stack_size,
                   void (*fn)(void));
 
    Therefore on entry we have:
@@ -91,13 +81,8 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  */
 
 #define ffi_call_SYSV_FS (8 * 4)
 
-       .text
-       .globl CNAME(ffi_call_SYSV)
-#ifdef __ELF__
-       .type CNAME(ffi_call_SYSV), #function
-#endif
         .cfi_startproc
-CNAME(ffi_call_SYSV):
+ffi_call_SYSV:
         stp     x29, x30, [sp, #-16]!
        cfi_adjust_cfa_offset (16)
         cfi_rel_offset (x29, 0)
@@ -107,11 +92,11 @@ CNAME(ffi_call_SYSV):
        cfi_def_cfa_register (x29)
         sub     sp, sp, #ffi_call_SYSV_FS
 
-               stp     x21, x22, [sp, #0]
+        stp     x21, x22, [sp, 0]
         cfi_rel_offset (x21, 0 - ffi_call_SYSV_FS)
         cfi_rel_offset (x22, 8 - ffi_call_SYSV_FS)
 
-               stp     x23, x24, [sp, #16]
+        stp     x23, x24, [sp, 16]
         cfi_rel_offset (x23, 16 - ffi_call_SYSV_FS)
         cfi_rel_offset (x24, 24 - ffi_call_SYSV_FS)
 
@@ -195,9 +180,7 @@ CNAME(ffi_call_SYSV):
         ret
 
         .cfi_endproc
-#ifdef __ELF__
-               .size CNAME(ffi_call_SYSV), .-CNAME(ffi_call_SYSV)
-#endif
+        .size ffi_call_SYSV, .-ffi_call_SYSV
 
 #define ffi_closure_SYSV_FS (8 * 2 + AARCH64_CALL_CONTEXT_SIZE)
 
@@ -238,10 +221,10 @@ CNAME(ffi_call_SYSV):
 
    Voila!  */
 
-               .text
-               .globl CNAME(ffi_closure_SYSV)
+        .text
+        .globl ffi_closure_SYSV
         .cfi_startproc
-CNAME(ffi_closure_SYSV):
+ffi_closure_SYSV:
         stp     x29, x30, [sp, #-16]!
        cfi_adjust_cfa_offset (16)
         cfi_rel_offset (x29, 0)
@@ -287,7 +270,7 @@ CNAME(ffi_closure_SYSV):
            trampoline was called.  */
         add     x2, x29, #16
 
-               bl      CNAME(ffi_closure_SYSV_inner)
+        bl      ffi_closure_SYSV_inner
 
         /* Figure out if we should touch the vector registers.  */
         ldr     x0, [x22, #8]
@@ -321,6 +304,4 @@ CNAME(ffi_closure_SYSV):
 
         ret
         .cfi_endproc
-#ifdef __ELF__
-               .size CNAME(ffi_closure_SYSV), .-CNAME(ffi_closure_SYSV)
-#endif
+        .size ffi_closure_SYSV, .-ffi_closure_SYSV
index e2a8380..e452a6e 100644 (file)
@@ -77,19 +77,19 @@ static size_t ffi_put_arg(ffi_type **arg_type, void **arg, char *stack)
       case FFI_TYPE_SINT8:
         *(signed int *) argp = (signed int)*(SINT8 *)(* p_argv);
         break;
-
+        
       case FFI_TYPE_UINT8:
         *(unsigned int *) argp = (unsigned int)*(UINT8 *)(* p_argv);
         break;
-
+        
       case FFI_TYPE_SINT16:
         *(signed int *) argp = (signed int)*(SINT16 *)(* p_argv);
         break;
-
+        
       case FFI_TYPE_UINT16:
         *(unsigned int *) argp = (unsigned int)*(UINT16 *)(* p_argv);
         break;
-
+        
       case FFI_TYPE_STRUCT:
         memcpy(argp, *p_argv, (*p_arg)->size);
         break;
@@ -117,12 +117,11 @@ static size_t ffi_put_arg(ffi_type **arg_type, void **arg, char *stack)
 }
 /* ffi_prep_args is called by the assembly routine once stack space
    has been allocated for the function's arguments
-
+   
    The vfp_space parameter is the load area for VFP regs, the return
    value is cif->vfp_used (word bitset of VFP regs used for passing
    arguments). These are only used for the VFP hard-float ABI.
 */
-int ffi_prep_args_SYSV(char *stack, extended_cif *ecif, float *vfp_space);
 int ffi_prep_args_SYSV(char *stack, extended_cif *ecif, float *vfp_space)
 {
   register unsigned int i;
@@ -130,7 +129,7 @@ int ffi_prep_args_SYSV(char *stack, extended_cif *ecif, float *vfp_space)
   register char *argp;
   register ffi_type **p_arg;
   argp = stack;
-
+  
 
   if ( ecif->cif->flags == FFI_TYPE_STRUCT ) {
     *(void **) argp = ecif->rvalue;
@@ -150,7 +149,6 @@ int ffi_prep_args_SYSV(char *stack, extended_cif *ecif, float *vfp_space)
   return 0;
 }
 
-int ffi_prep_args_VFP(char *stack, extended_cif *ecif, float *vfp_space);
 int ffi_prep_args_VFP(char *stack, extended_cif *ecif, float *vfp_space)
 {
   // make sure we are using FFI_VFP
@@ -162,13 +160,13 @@ int ffi_prep_args_VFP(char *stack, extended_cif *ecif, float *vfp_space)
   register ffi_type **p_arg;
   char stack_used = 0;
   char done_with_regs = 0;
-  int is_vfp_type;
+  char is_vfp_type;
 
   /* the first 4 words on the stack are used for values passed in core
    * registers. */
   regp = stack;
   eo_regp = argp = regp + 16;
-
+  
 
   /* if the function returns an FFI_TYPE_STRUCT in memory, that address is
    * passed in r0 to the function */
@@ -196,7 +194,7 @@ int ffi_prep_args_VFP(char *stack, extended_cif *ecif, float *vfp_space)
       else if (!done_with_regs && !is_vfp_type)
         {
           char *tregp = ffi_align(p_arg, regp);
-          size_t size = (*p_arg)->size;
+          size_t size = (*p_arg)->size; 
           size = (size < 4)? 4 : size; // pad
           /* Check if there is space left in the aligned register area to place
            * the argument */
@@ -208,10 +206,10 @@ int ffi_prep_args_VFP(char *stack, extended_cif *ecif, float *vfp_space)
               FFI_ASSERT(regp <= argp);
               continue;
             }
-          /* In case there are no arguments in the stack area yet,
+          /* In case there are no arguments in the stack area yet, 
           the argument is passed in the remaining core registers and on the
           stack. */
-          else if (!stack_used)
+          else if (!stack_used) 
             {
               stack_used = 1;
               done_with_regs = 1;
@@ -233,7 +231,7 @@ int ffi_prep_args_VFP(char *stack, extended_cif *ecif, float *vfp_space)
 ffi_status ffi_prep_cif_machdep(ffi_cif *cif)
 {
   int type_code;
-  /* Round the stack up to a multiple of 8 bytes.  This isn't needed
+  /* Round the stack up to a multiple of 8 bytes.  This isn't needed 
      everywhere, but it is on some platforms, and it doesn't harm anything
      when it isn't needed.  */
   cif->bytes = (cif->bytes + 7) & ~7;
@@ -304,7 +302,7 @@ void ffi_call(ffi_cif *cif, void (*fn)(void), void *rvalue, void **avalue)
 {
   extended_cif ecif;
 
-  int small_struct = (cif->flags == FFI_TYPE_INT
+  int small_struct = (cif->flags == FFI_TYPE_INT 
                      && cif->rtype->type == FFI_TYPE_STRUCT);
   int vfp_struct = (cif->flags == FFI_TYPE_STRUCT_VFP_FLOAT
                    || cif->flags == FFI_TYPE_STRUCT_VFP_DOUBLE);
@@ -317,7 +315,7 @@ void ffi_call(ffi_cif *cif, void (*fn)(void), void *rvalue, void **avalue)
   /* If the return value is a struct and we don't have a return        */
   /* value address then we need to make one                    */
 
-  if ((rvalue == NULL) &&
+  if ((rvalue == NULL) && 
       (cif->flags == FFI_TYPE_STRUCT))
     {
       ecif.rvalue = alloca(cif->rtype->size);
@@ -332,7 +330,7 @@ void ffi_call(ffi_cif *cif, void (*fn)(void), void *rvalue, void **avalue)
   else
     ecif.rvalue = rvalue;
 
-  switch (cif->abi)
+  switch (cif->abi) 
     {
     case FFI_SYSV:
       ffi_call_SYSV (fn, &ecif, cif->bytes, cif->flags, ecif.rvalue);
@@ -348,9 +346,9 @@ void ffi_call(ffi_cif *cif, void (*fn)(void), void *rvalue, void **avalue)
       FFI_ASSERT(0);
       break;
     }
-  if (small_struct && rvalue != NULL)
+  if (small_struct)
     memcpy (rvalue, &temp, cif->rtype->size);
-  else if (vfp_struct && rvalue != NULL)
+  else if (vfp_struct)
     memcpy (rvalue, ecif.rvalue, cif->rtype->size);
 }
 
@@ -368,7 +366,6 @@ void ffi_closure_VFP (ffi_closure *);
 
 /* This function is jumped to by the trampoline */
 
-unsigned int ffi_closure_inner (ffi_closure *closure, void **respp, void *args, void *vfp_args);
 unsigned int
 ffi_closure_inner (ffi_closure *closure, 
                   void **respp, void *args, void *vfp_args)
@@ -378,10 +375,10 @@ ffi_closure_inner (ffi_closure *closure,
   void         **arg_area;
 
   cif         = closure->cif;
-  arg_area    = (void**) alloca (cif->nargs * sizeof (void*));
+  arg_area    = (void**) alloca (cif->nargs * sizeof (void*));  
 
   /* this call will initialize ARG_AREA, such that each
-   * element in that array points to the corresponding
+   * element in that array points to the corresponding 
    * value on the stack; and if the function returns
    * a structure, it will re-set RESP to point to the
    * structure return address.  */
@@ -396,7 +393,7 @@ ffi_closure_inner (ffi_closure *closure,
 }
 
 /*@-exportheader@*/
-static void
+static void 
 ffi_prep_incoming_args_SYSV(char *stack, void **rvalue,
                            void **avalue, ffi_cif *cif,
                            /* Used only under VFP hard-float ABI. */
@@ -432,12 +429,12 @@ ffi_prep_incoming_args_SYSV(char *stack, void **rvalue,
       p_argv++;
       argp += z;
     }
-
+  
   return;
 }
 
 /*@-exportheader@*/
-static void
+static void 
 ffi_prep_incoming_args_VFP(char *stack, void **rvalue,
                            void **avalue, ffi_cif *cif,
                            /* Used only under VFP hard-float ABI. */
@@ -450,7 +447,7 @@ ffi_prep_incoming_args_VFP(char *stack, void **rvalue,
   register ffi_type **p_arg;
   char done_with_regs = 0;
   char stack_used = 0;
-  int is_vfp_type;
+  char is_vfp_type;
 
   FFI_ASSERT(cif->abi == FFI_VFP);
   regp = stack;
@@ -466,7 +463,7 @@ ffi_prep_incoming_args_VFP(char *stack, void **rvalue,
   for (i = cif->nargs, p_arg = cif->arg_types; (i != 0); i--, p_arg++)
     {
     size_t z;
-    is_vfp_type = vfp_type_p (*p_arg);
+    is_vfp_type = vfp_type_p (*p_arg); 
 
     if(vi < cif->vfp_nargs && is_vfp_type)
       {
@@ -477,12 +474,12 @@ ffi_prep_incoming_args_VFP(char *stack, void **rvalue,
       {
         char* tregp = ffi_align(p_arg, regp);
 
-        z = (*p_arg)->size;
+        z = (*p_arg)->size; 
         z = (z < 4)? 4 : z; // pad
-
+        
         /* if the arguments either fits into the registers or uses registers
          * and stack, while we haven't read other things from the stack */
-        if(tregp + z <= eo_regp || !stack_used)
+        if(tregp + z <= eo_regp || !stack_used) 
           {
           /* because we're little endian, this is what it turns into. */
           *p_argv = (void*) tregp;
@@ -521,7 +518,7 @@ ffi_prep_incoming_args_VFP(char *stack, void **rvalue,
     p_argv++;
     argp += z;
     }
-
+  
   return;
 }
 
@@ -884,7 +881,7 @@ static int place_vfp_arg (ffi_cif *cif, ffi_type *t)
        }
       /* Found regs to allocate. */
       cif->vfp_used |= new_used;
-      cif->vfp_args[cif->vfp_nargs++] = (typeof(*(cif->vfp_args)))reg;
+      cif->vfp_args[cif->vfp_nargs++] = reg;
 
       /* Update vfp_reg_free. */
       if (cif->vfp_used & (1 << cif->vfp_reg_free))
@@ -892,7 +889,7 @@ static int place_vfp_arg (ffi_cif *cif, ffi_type *t)
          reg += nregs;
          while (cif->vfp_used & (1 << reg))
            reg += 1;
-         cif->vfp_reg_free = (typeof(cif->vfp_reg_free))reg;
+         cif->vfp_reg_free = reg;
        }
       return 0;
     next_reg: ;
index ef33fc9..454dfc9 100644 (file)
@@ -1,8 +1,8 @@
 /* -----------------------------------------------------------------------
    sysv.S - Copyright (c) 1998, 2008, 2011 Red Hat, Inc.
            Copyright (c) 2011 Plausible Labs Cooperative, Inc.
-
-   ARM Foreign Function Interface
+   
+   ARM Foreign Function Interface 
 
    Permission is hereby granted, free of charge, to any person obtaining
    a copy of this software and associated documentation files (the
@@ -25,7 +25,7 @@
    DEALINGS IN THE SOFTWARE.
    ----------------------------------------------------------------------- */
 
-#define LIBFFI_ASM
+#define LIBFFI_ASM     
 #include <fficonfig.h>
 #include <ffi.h>
 #ifdef HAVE_MACHINE_ASM_H
@@ -59,7 +59,7 @@
 #define __SOFTFP__
 #endif
 
-/* We need a better way of testing for this, but for now, this is all
+/* We need a better way of testing for this, but for now, this is all 
    we can do.  */
 @ This selects the minimum architecture level required.
 #define __ARM_ARCH__ 3
@@ -68,7 +68,7 @@
 # undef __ARM_ARCH__
 # define __ARM_ARCH__ 4
 #endif
-
+        
 #if defined(__ARM_ARCH_5__) || defined(__ARM_ARCH_5T__) \
        || defined(__ARM_ARCH_5E__) || defined(__ARM_ARCH_5TE__) \
        || defined(__ARM_ARCH_5TEJ__)
 #define UNWIND
 #else
 #define UNWIND @
-#endif
-
-.syntax unified
+#endif 
 
+       
 #if defined(__thumb__) && !defined(__THUMB_INTERWORK__)
-#define ARM_FUNC_START(name) \
-       .text; \
-       .align 2; \
-       .thumb; \
-       .thumb_func; \
-       ENTRY(name); \
-       bx pc; \
-       nop; \
-       .arm; \
-       UNWIND .fnstart; \
-_L__##name:
+.macro ARM_FUNC_START name
+       .text
+       .align 0
+       .thumb
+       .thumb_func
+#ifdef __APPLE__
+       ENTRY($0)
 #else
-#define ARM_FUNC_START(name) \
-       .text; \
-       .align 2; \
-       .arm; \
-       ENTRY(name); \
+       ENTRY(\name)
+#endif
+       bx      pc
+       nop
+       .arm
        UNWIND .fnstart
+/* A hook to tell gdb that we've switched to ARM mode.  Also used to call
+   directly from other local arm routines.  */
+#ifdef __APPLE__
+_L__$0:
+#else
+_L__\name:
+#endif
+.endm
+#else
+.macro ARM_FUNC_START name
+       .text
+       .align 0
+       .arm
+#ifdef __APPLE__
+       ENTRY($0)
+#else
+       ENTRY(\name)
+#endif
+       UNWIND .fnstart
+.endm
 #endif
 
-.macro RETLDM
+.macro RETLDM  regs=, cond=, dirn=ia
 #if defined (__INTERWORKING__)
-       ldr     lr, [sp], #4
-       bx      lr
+       .ifc "\regs",""
+       ldr\cond        lr, [sp], #4
+       .else
+       ldm\cond\dirn   sp!, {\regs, lr}
+       .endif
+       bx\cond lr
 #else
-       ldr     pc, [sp], #4
+       .ifc "\regs",""
+       ldr\cond        pc, [sp], #4
+       .else
+       ldm\cond\dirn   sp!, {\regs, pc}
+       .endif
 #endif
 .endm
 
@@ -148,7 +171,7 @@ _L__##name:
        @ sp+0: ecif.rvalue
 
        @ This assumes we are using gas.
-ARM_FUNC_START(ffi_call_SYSV)
+ARM_FUNC_START ffi_call_SYSV
        @ Save registers
         stmfd  sp!, {r0-r3, fp, lr}
        UNWIND .save    {r0-r3, fp, lr}
@@ -178,14 +201,14 @@ ARM_FUNC_START(ffi_call_SYSV)
 
        @ call (fn) (...)
        call_reg(ip)
-
+       
        @ Remove the space we pushed for the args
        mov     sp, fp
 
        @ Load r2 with the pointer to storage for the return value
        ldr     r2, [sp, #24]
 
-       @ Load r3 with the return type code
+       @ Load r3 with the return type code 
        ldr     r3, [sp, #12]
 
        @ If the return value pointer is NULL, assume no return value.
@@ -205,7 +228,7 @@ ARM_FUNC_START(ffi_call_SYSV)
 #if defined(__SOFTFP__) || defined(__ARM_EABI__)
        cmpne   r3, #FFI_TYPE_DOUBLE
 #endif
-       stmiaeq r2, {r0, r1}
+       stmeqia r2, {r0, r1}
 
 #if !defined(__SOFTFP__) && !defined(__ARM_EABI__)
        beq     LSYM(Lepilogue)
@@ -243,7 +266,7 @@ LSYM(Lepilogue):
             void *args;
 */
 
-ARM_FUNC_START(ffi_closure_SYSV)
+ARM_FUNC_START ffi_closure_SYSV
        UNWIND .pad #16
        add     ip, sp, #16
        stmfd   sp!, {ip, lr}
@@ -322,7 +345,7 @@ ARM_FUNC_START(ffi_closure_SYSV)
        @ r3:   fig->flags
        @ sp+0: ecif.rvalue
 
-ARM_FUNC_START(ffi_call_VFP)
+ARM_FUNC_START ffi_call_VFP
        @ Save registers
         stmfd  sp!, {r0-r3, fp, lr}
        UNWIND .save    {r0-r3, fp, lr}
@@ -374,7 +397,7 @@ LSYM(Lbase_args):
        @ the return value
        ldr     r2, [sp, #24]
 
-       @ Load r3 with the return type code
+       @ Load r3 with the return type code 
        ldr     r3, [sp, #12]
 
        @ If the return value pointer is NULL,
@@ -393,7 +416,7 @@ LSYM(Lbase_args):
        cmp     r3, #FFI_TYPE_FLOAT
        fstseq  s0, [r2]
        beq     LSYM(Lepilogue_vfp)
-
+       
        cmp     r3, #FFI_TYPE_DOUBLE
        fstdeq  d0, [r2]
        beq     LSYM(Lepilogue_vfp)
@@ -410,7 +433,7 @@ LSYM(Lepilogue_vfp):
         .size    CNAME(ffi_call_VFP),.ffi_call_VFP_end-CNAME(ffi_call_VFP)
 
 
-ARM_FUNC_START(ffi_closure_VFP)
+ARM_FUNC_START ffi_closure_VFP
        fstmfdd sp!, {d0-d7}
        @ r0-r3, then d0-d7
        UNWIND .pad #80
@@ -443,7 +466,7 @@ ARM_FUNC_START(ffi_closure_VFP)
 
        cmp     r0, #FFI_TYPE_STRUCT_VFP_DOUBLE
        beq     .Lretdouble_struct_vfp
-
+       
 .Lclosure_epilogue_vfp:
        add     sp, sp, #72
        ldmfd   sp, {sp, pc}
index 6eac601..4d0a0b6 100644 (file)
@@ -264,7 +264,7 @@ static int
 open_temp_exec_file_dir (const char *dir)
 {
   static const char suffix[] = "/ffiXXXXXX";
-  size_t lendir = strlen (dir);
+  int lendir = strlen (dir);
   char *tempname = __builtin_alloca (lendir + sizeof (suffix));
 
   if (!tempname)
index 8725b4f..3e2ea6f 100644 (file)
@@ -1661,7 +1661,7 @@ struct malloc_chunk {
 typedef struct malloc_chunk  mchunk;
 typedef struct malloc_chunk* mchunkptr;
 typedef struct malloc_chunk* sbinptr;  /* The type of bins of chunks */
-typedef size_t bindex_t;               /* Described below */
+typedef unsigned int bindex_t;         /* Described below */
 typedef unsigned int binmap_t;         /* Described below */
 typedef unsigned int flag_t;           /* The type of various bit flag sets */
 
@@ -3388,7 +3388,7 @@ static void add_segment(mstate m, char* tbase, size_t tsize, flag_t mmapped) {
   *ss = m->seg; /* Push current record */
   m->seg.base = tbase;
   m->seg.size = tsize;
-  (void)set_segment_flags(&m->seg, mmapped);
+  set_segment_flags(&m->seg, mmapped);
   m->seg.next = ss;
 
   /* Insert trailing fenceposts */
@@ -3548,7 +3548,7 @@ static void* sys_alloc(mstate m, size_t nb) {
     if (!is_initialized(m)) { /* first-time initialization */
       m->seg.base = m->least_addr = tbase;
       m->seg.size = tsize;
-      (void)set_segment_flags(&m->seg, mmap_flag);
+      set_segment_flags(&m->seg, mmap_flag);
       m->magic = mparams.magic;
       init_bins(m);
       if (is_global(m)) 
index e216ef0..a66ee23 100644 (file)
@@ -187,7 +187,7 @@ ffi_status FFI_HIDDEN ffi_prep_cif_core(ffi_cif *cif, ffi_abi abi,
        {
          /* Add any padding if necessary */
          if (((*ptr)->alignment - 1) & bytes)
-           bytes = (unsigned)ALIGN(bytes, (*ptr)->alignment);
+           bytes = ALIGN(bytes, (*ptr)->alignment);
 
 #ifdef TILE
          if (bytes < 10 * FFI_SIZEOF_ARG &&
index ba33775..307cd19 100644 (file)
@@ -42,7 +42,6 @@
 /* ffi_prep_args is called by the assembly routine once stack space
    has been allocated for the function's arguments */
 
-void ffi_prep_args(char *stack, extended_cif *ecif);
 void ffi_prep_args(char *stack, extended_cif *ecif)
 {
   register unsigned int i;
@@ -342,7 +341,7 @@ void ffi_call(ffi_cif *cif, void (*fn)(void), void *rvalue, void **avalue)
 
   ecif.cif = cif;
   ecif.avalue = avalue;
-
+  
   /* If the return value is a struct and we don't have a return */
   /* value address then we need to make one                     */
 
@@ -364,9 +363,9 @@ void ffi_call(ffi_cif *cif, void (*fn)(void), void *rvalue, void **avalue)
 #endif
   else
     ecif.rvalue = rvalue;
-
-
-  switch (cif->abi)
+    
+  
+  switch (cif->abi) 
     {
 #ifdef X86_WIN64
     case FFI_WIN64:
@@ -457,16 +456,16 @@ ffi_closure_win64_inner (ffi_closure *closure, void *args) {
   void          *resp = &result;
 
   cif         = closure->cif;
-  arg_area    = (void**) alloca (cif->nargs * sizeof (void*));
+  arg_area    = (void**) alloca (cif->nargs * sizeof (void*));  
 
   /* this call will initialize ARG_AREA, such that each
-   * element in that array points to the corresponding
+   * element in that array points to the corresponding 
    * value on the stack; and if the function returns
    * a structure, it will change RESP to point to the
    * structure return address.  */
 
   ffi_prep_incoming_args_SYSV(args, &resp, arg_area, cif);
-
+  
   (closure->fun) (cif, resp, arg_area, closure->user_data);
 
   /* The result is returned in rax.  This does the right thing for
@@ -486,10 +485,10 @@ ffi_closure_SYSV_inner (ffi_closure *closure, void **respp, void *args)
   void         **arg_area;
 
   cif         = closure->cif;
-  arg_area    = (void**) alloca (cif->nargs * sizeof (void*));
+  arg_area    = (void**) alloca (cif->nargs * sizeof (void*));  
 
   /* this call will initialize ARG_AREA, such that each
-   * element in that array points to the corresponding
+   * element in that array points to the corresponding 
    * value on the stack; and if the function returns
    * a structure, it will change RESP to point to the
    * structure return address.  */
@@ -553,12 +552,12 @@ ffi_prep_incoming_args_SYSV(char *stack, void **rvalue, void **avalue,
 #endif
         {
           z = (*p_arg)->size;
-
+          
           /* because we're little endian, this is what it turns into.   */
-
+          
           *p_argv = (void*) argp;
         }
-
+          
       p_argv++;
 #ifdef X86_WIN64
       argp += (z + sizeof(void*) - 1) & ~(sizeof(void*) - 1);
@@ -566,7 +565,7 @@ ffi_prep_incoming_args_SYSV(char *stack, void **rvalue, void **avalue,
       argp += z;
 #endif
     }
-
+  
   return;
 }
 
@@ -654,7 +653,7 @@ ffi_prep_closure_loc (ffi_closure* closure,
 #ifdef X86_WIN64
 #define ISFLOAT(IDX) (cif->arg_types[IDX]->type == FFI_TYPE_FLOAT || cif->arg_types[IDX]->type == FFI_TYPE_DOUBLE)
 #define FLAG(IDX) (cif->nargs>(IDX)&&ISFLOAT(IDX)?(1<<(IDX)):0)
-  if (cif->abi == FFI_WIN64)
+  if (cif->abi == FFI_WIN64) 
     {
       int mask = FLAG(0)|FLAG(1)|FLAG(2)|FLAG(3);
       FFI_INIT_TRAMPOLINE_WIN64 (&closure->tramp[0],
@@ -695,7 +694,7 @@ ffi_prep_closure_loc (ffi_closure* closure,
     {
       return FFI_BAD_ABI;
     }
-
+    
   closure->cif  = cif;
   closure->user_data = user_data;
   closure->fun  = fun;
@@ -733,7 +732,7 @@ ffi_prep_raw_closure_loc (ffi_raw_closure* closure,
       FFI_ASSERT (cif->arg_types[i]->type != FFI_TYPE_STRUCT);
       FFI_ASSERT (cif->arg_types[i]->type != FFI_TYPE_LONGDOUBLE);
     }
-
+  
 #ifdef X86_WIN32
   if (cif->abi == FFI_SYSV)
     {
@@ -755,7 +754,7 @@ ffi_prep_raw_closure_loc (ffi_raw_closure* closure,
   return FFI_OK;
 }
 
-static void
+static void 
 ffi_prep_args_raw(char *stack, extended_cif *ecif)
 {
   memcpy (stack, ecif->avalue, ecif->cif->bytes);
@@ -774,7 +773,7 @@ ffi_raw_call(ffi_cif *cif, void (*fn)(void), void *rvalue, ffi_raw *fake_avalue)
 
   ecif.cif = cif;
   ecif.avalue = avalue;
-
+  
   /* If the return value is a struct and we don't have a return */
   /* value address then we need to make one                     */
 
@@ -786,9 +785,9 @@ ffi_raw_call(ffi_cif *cif, void (*fn)(void), void *rvalue, ffi_raw *fake_avalue)
     }
   else
     ecif.rvalue = rvalue;
-
-
-  switch (cif->abi)
+    
+  
+  switch (cif->abi) 
     {
 #ifdef X86_WIN32
     case FFI_SYSV:
index bd241ef..bd917f0 100644 (file)
@@ -168,7 +168,7 @@ classify_argument (ffi_type *type, enum x86_64_reg_class classes[],
     case FFI_TYPE_SINT64:
     case FFI_TYPE_POINTER:
       {
-       size_t size = byte_offset + type->size;
+       int size = byte_offset + type->size;
 
        if (size <= 4)
          {
@@ -210,7 +210,7 @@ classify_argument (ffi_type *type, enum x86_64_reg_class classes[],
     case FFI_TYPE_STRUCT:
       {
        const int UNITS_PER_WORD = 8;
-       int words = ((int)type->size + UNITS_PER_WORD - 1) / UNITS_PER_WORD;
+       int words = (type->size + UNITS_PER_WORD - 1) / UNITS_PER_WORD;
        ffi_type **ptr;
        int i;
        enum x86_64_reg_class subclasses[MAX_CLASSES];
@@ -242,7 +242,7 @@ classify_argument (ffi_type *type, enum x86_64_reg_class classes[],
              return 0;
            for (i = 0; i < num; i++)
              {
-               size_t pos = byte_offset / 8;
+               int pos = byte_offset / 8;
                classes[i + pos] =
                  merge_classes (subclasses[i], classes[i + pos]);
              }
@@ -411,7 +411,7 @@ ffi_prep_cif_machdep (ffi_cif *cif)
   if (ssecount)
     flags |= 1 << 11;
   cif->flags = flags;
-  cif->bytes = (unsigned)ALIGN (bytes, 8);
+  cif->bytes = ALIGN (bytes, 8);
 
   return FFI_OK;
 }