From 3dc3f32c35db5ab995a835225f6815369735ceb7 Mon Sep 17 00:00:00 2001 From: Anthony Green Date: Thu, 5 Dec 2013 16:23:25 -0500 Subject: Undo iOS ARM64 changes. --- .gitignore | 2 - ChangeLog | 28 -- Makefile.am | 2 +- Makefile.in | 2 +- README | 5 +- build-ios.sh | 67 ++++ generate-ios-source-and-headers.py | 142 +++---- generate-osx-source-and-headers.py | 66 ++-- include/ffi_common.h | 2 +- libffi.xcodeproj/project.pbxproj | 749 ++++++++++++++++--------------------- src/aarch64/ffi.c | 84 ++--- src/aarch64/sysv.S | 47 +-- src/arm/ffi.c | 63 ++-- src/arm/sysv.S | 99 +++-- src/closures.c | 2 +- src/dlmalloc.c | 6 +- src/prep_cif.c | 2 +- src/x86/ffi.c | 43 ++- src/x86/ffi64.c | 8 +- 19 files changed, 616 insertions(+), 803 deletions(-) create mode 100755 build-ios.sh diff --git a/.gitignore b/.gitignore index 95566c9..6af76ac 100644 --- a/.gitignore +++ b/.gitignore @@ -19,5 +19,3 @@ autom4te.cache libffi.xcodeproj/xcuserdata libffi.xcodeproj/project.xcworkspace ios/ -osx/ -build_*/ diff --git a/ChangeLog b/ChangeLog index 06d42f7..277deed 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,31 +1,3 @@ -2013-11-30 Anthony Green - - * Makefile.am (EXTRA_DIST): Remove build-ios.sh. - * Makefile:in: Rebuilt. - -2012-11-30 Zachary Waldowski - - * 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 * configure, Makefile.in, include/Makefile.in, include/ffi.h.in, diff --git a/Makefile.am b/Makefile.am index d25aebd..4b5d1c7 100644 --- a/Makefile.am +++ b/Makefile.am @@ -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 \ diff --git a/Makefile.in b/Makefile.in index 220e6fd..bf77c44 100644 --- a/Makefile.in +++ b/Makefile.in @@ -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 --- 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 index 0000000..3dea242 --- /dev/null +++ b/build-ios.sh @@ -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"/' < "${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 + #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" diff --git a/generate-ios-source-and-headers.py b/generate-ios-source-and-headers.py index 4d4d0ae..c2bca73 100644 --- a/generate-ios-source-and-headers.py +++ b/generate-ios-source-and-headers.py @@ -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) diff --git a/generate-osx-source-and-headers.py b/generate-osx-source-and-headers.py index 97a732d..64313c1 100644 --- a/generate-osx-source-and-headers.py +++ b/generate-osx-source-and-headers.py @@ -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) diff --git a/include/ffi_common.h b/include/ffi_common.h index be10922..37f5a9e 100644 --- a/include/ffi_common.h +++ b/include/ffi_common.h @@ -48,7 +48,7 @@ char *alloca (); #endif /* Check for the existence of memcpy. */ -#if STDC_HEADERS || HAVE_STRING_H +#if STDC_HEADERS # include #else # ifndef HAVE_MEMCPY diff --git a/libffi.xcodeproj/project.pbxproj b/libffi.xcodeproj/project.pbxproj index f763d0f..14c39a2 100644 --- a/libffi.xcodeproj/project.pbxproj +++ b/libffi.xcodeproj/project.pbxproj @@ -7,422 +7,382 @@ 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 = ""; }; - DB13B3251849E0CE0010F42D /* ffi_arm.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ffi_arm.h; sourceTree = ""; }; - DB13B3261849E0CE0010F42D /* ffi_common.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ffi_common.h; sourceTree = ""; }; - DB13B3271849E0CE0010F42D /* ffi_i386.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ffi_i386.h; sourceTree = ""; }; - DB13B3281849E0CE0010F42D /* fficonfig.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = fficonfig.h; sourceTree = ""; }; - DB13B3291849E0CE0010F42D /* fficonfig_arm.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = fficonfig_arm.h; sourceTree = ""; }; - DB13B32A1849E0CE0010F42D /* fficonfig_i386.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = fficonfig_i386.h; sourceTree = ""; }; - DB13B32B1849E0CE0010F42D /* ffitarget.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ffitarget.h; sourceTree = ""; }; - DB13B32C1849E0CE0010F42D /* ffitarget_arm.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ffitarget_arm.h; sourceTree = ""; }; - DB13B32D1849E0CE0010F42D /* ffitarget_i386.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ffitarget_i386.h; sourceTree = ""; }; - DB13B3301849E0CE0010F42D /* ffi.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ffi.c; sourceTree = ""; }; - DB13B3311849E0CE0010F42D /* sysv.S */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; path = sysv.S; sourceTree = ""; }; - DB13B3321849E0CE0010F42D /* trampoline.S */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; path = trampoline.S; sourceTree = ""; }; - DB13B3331849E0CE0010F42D /* closures.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = closures.c; sourceTree = ""; }; - DB13B3351849E0CE0010F42D /* dlmalloc.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = dlmalloc.c; sourceTree = ""; }; - DB13B3371849E0CE0010F42D /* prep_cif.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = prep_cif.c; sourceTree = ""; }; - DB13B3381849E0CE0010F42D /* raw_api.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = raw_api.c; sourceTree = ""; }; - DB13B3391849E0CE0010F42D /* types.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = types.c; sourceTree = ""; }; - DB13B33B1849E0CE0010F42D /* darwin.S */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; path = darwin.S; sourceTree = ""; }; - DB13B33C1849E0CE0010F42D /* ffi.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ffi.c; sourceTree = ""; }; - DB13B34C1849E0FF0010F42D /* ffi.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ffi.h; sourceTree = ""; }; - DB13B34D1849E0FF0010F42D /* ffi_common.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ffi_common.h; sourceTree = ""; }; - DB13B34E1849E0FF0010F42D /* ffi_i386.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ffi_i386.h; sourceTree = ""; }; - DB13B34F1849E0FF0010F42D /* ffi_x86_64.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ffi_x86_64.h; sourceTree = ""; }; - DB13B3501849E0FF0010F42D /* fficonfig.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = fficonfig.h; sourceTree = ""; }; - DB13B3511849E0FF0010F42D /* fficonfig_i386.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = fficonfig_i386.h; sourceTree = ""; }; - DB13B3521849E0FF0010F42D /* fficonfig_x86_64.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = fficonfig_x86_64.h; sourceTree = ""; }; - DB13B3531849E0FF0010F42D /* ffitarget.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ffitarget.h; sourceTree = ""; }; - DB13B3541849E0FF0010F42D /* ffitarget_i386.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ffitarget_i386.h; sourceTree = ""; }; - DB13B3551849E0FF0010F42D /* ffitarget_x86_64.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ffitarget_x86_64.h; sourceTree = ""; }; - DB13B3571849E0FF0010F42D /* closures.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = closures.c; sourceTree = ""; }; - DB13B3591849E0FF0010F42D /* dlmalloc.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = dlmalloc.c; sourceTree = ""; }; - DB13B35B1849E0FF0010F42D /* prep_cif.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = prep_cif.c; sourceTree = ""; }; - DB13B35C1849E0FF0010F42D /* raw_api.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = raw_api.c; sourceTree = ""; }; - DB13B35D1849E0FF0010F42D /* types.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = types.c; sourceTree = ""; }; - DB13B35F1849E0FF0010F42D /* darwin.S */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; path = darwin.S; sourceTree = ""; }; - DB13B3601849E0FF0010F42D /* darwin64.S */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; path = darwin64.S; sourceTree = ""; }; - DB13B3611849E0FF0010F42D /* ffi.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ffi.c; sourceTree = ""; }; - DB13B3621849E0FF0010F42D /* ffi64.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ffi64.c; sourceTree = ""; }; - DB13B378184A50BF0010F42D /* ffi_arm64.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ffi_arm64.h; sourceTree = ""; }; - DB13B379184A50BF0010F42D /* ffi_x86_64.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ffi_x86_64.h; sourceTree = ""; }; - DB13B37A184A50BF0010F42D /* fficonfig_arm64.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = fficonfig_arm64.h; sourceTree = ""; }; - DB13B37B184A50BF0010F42D /* fficonfig_x86_64.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = fficonfig_x86_64.h; sourceTree = ""; }; - DB13B37C184A50BF0010F42D /* ffitarget_arm64.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ffitarget_arm64.h; sourceTree = ""; }; - DB13B37D184A50BF0010F42D /* ffitarget_x86_64.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ffitarget_x86_64.h; sourceTree = ""; }; - DB13B37F184A50CC0010F42D /* ffi.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ffi.c; sourceTree = ""; }; - DB13B380184A50CC0010F42D /* sysv.S */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; path = sysv.S; sourceTree = ""; }; - DB13B383184A50D60010F42D /* darwin64.S */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; path = darwin64.S; sourceTree = ""; }; - DB13B384184A50D60010F42D /* ffi64.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ffi64.c; sourceTree = ""; }; + 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 = ""; }; + 6C43CBBF1534F76F00162364 /* sysv.S */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; path = sysv.S; sourceTree = ""; }; + 6C43CBC01534F76F00162364 /* trampoline.S */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; path = trampoline.S; sourceTree = ""; }; + 6C43CBC91534F76F00162364 /* darwin.S */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; path = darwin.S; sourceTree = ""; }; + 6C43CBCB1534F76F00162364 /* ffi.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ffi.c; sourceTree = ""; }; + 6C43CC051534F77800162364 /* darwin.S */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; path = darwin.S; sourceTree = ""; }; + 6C43CC061534F77800162364 /* darwin64.S */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; path = darwin64.S; sourceTree = ""; }; + 6C43CC071534F77800162364 /* ffi.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ffi.c; sourceTree = ""; }; + 6C43CC081534F77800162364 /* ffi64.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ffi64.c; sourceTree = ""; }; + 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 = ""; }; + 6C43CC8E1535032600162364 /* ffi_common.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ffi_common.h; sourceTree = ""; }; + 6C43CC8F1535032600162364 /* ffi_i386.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ffi_i386.h; sourceTree = ""; }; + 6C43CC901535032600162364 /* ffi_x86_64.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ffi_x86_64.h; sourceTree = ""; }; + 6C43CC911535032600162364 /* fficonfig.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = fficonfig.h; sourceTree = ""; }; + 6C43CC921535032600162364 /* fficonfig_i386.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = fficonfig_i386.h; sourceTree = ""; }; + 6C43CC931535032600162364 /* fficonfig_x86_64.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = fficonfig_x86_64.h; sourceTree = ""; }; + 6C43CC941535032600162364 /* ffitarget.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ffitarget.h; sourceTree = ""; }; + 6C43CC951535032600162364 /* ffitarget_i386.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ffitarget_i386.h; sourceTree = ""; }; + 6C43CC961535032600162364 /* ffitarget_x86_64.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ffitarget_x86_64.h; sourceTree = ""; }; + 6C43CCA21535039600162364 /* ffi.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ffi.h; sourceTree = ""; }; + 6C43CCA31535039600162364 /* ffi_armv7.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ffi_armv7.h; sourceTree = ""; }; + 6C43CCA41535039600162364 /* ffi_common.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ffi_common.h; sourceTree = ""; }; + 6C43CCA51535039600162364 /* ffi_i386.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ffi_i386.h; sourceTree = ""; }; + 6C43CCA61535039600162364 /* fficonfig.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = fficonfig.h; sourceTree = ""; }; + 6C43CCA71535039600162364 /* fficonfig_armv7.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = fficonfig_armv7.h; sourceTree = ""; }; + 6C43CCA81535039600162364 /* fficonfig_i386.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = fficonfig_i386.h; sourceTree = ""; }; + 6C43CCA91535039600162364 /* ffitarget.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ffitarget.h; sourceTree = ""; }; + 6C43CCAA1535039600162364 /* ffitarget_arm.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ffitarget_arm.h; sourceTree = ""; }; + 6C43CCAB1535039600162364 /* ffitarget_armv7.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ffitarget_armv7.h; sourceTree = ""; }; + 6C43CCAC1535039600162364 /* ffitarget_i386.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ffitarget_i386.h; sourceTree = ""; }; + 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 = ""; }; - DB13B1671849DF1E0010F42D /* Products */ = { + 6C43CBBB1534F76F00162364 /* src */ = { isa = PBXGroup; children = ( - DB13B1661849DF1E0010F42D /* libffi.a */, - DB13B1911849DF510010F42D /* ffi.dylib */, + 6C43CBC81534F76F00162364 /* x86 */, + 6C43CBBC1534F76F00162364 /* arm */, ); - name = Products; + path = src; sourceTree = ""; }; - 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 = ""; }; - DB13B3221849E0CE0010F42D /* ios */ = { + 6C43CBC81534F76F00162364 /* x86 */ = { isa = PBXGroup; children = ( - DB13B3231849E0CE0010F42D /* include */, - DB13B32E1849E0CE0010F42D /* src */, + 6C43CBC91534F76F00162364 /* darwin.S */, + 6C43CBCB1534F76F00162364 /* ffi.c */, ); - path = ios; + path = x86; sourceTree = ""; }; - 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 = ""; }; - 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 = ""; }; - DB13B32F1849E0CE0010F42D /* arm */ = { + 6C43CC041534F77800162364 /* x86 */ = { isa = PBXGroup; children = ( - DB13B3301849E0CE0010F42D /* ffi.c */, - DB13B3311849E0CE0010F42D /* sysv.S */, - DB13B3321849E0CE0010F42D /* trampoline.S */, - ); - path = arm; - sourceTree = ""; - }; - 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 = ""; }; - 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 = ""; }; - 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 = ""; }; - 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 = ""; }; - 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 = ""; }; - DB13B37E184A50CC0010F42D /* aarch64 */ = { + F6F980C6147386260008F121 /* Products */ = { isa = PBXGroup; children = ( - DB13B37F184A50CC0010F42D /* ffi.c */, - DB13B380184A50CC0010F42D /* sysv.S */, + F6F980BA147386130008F121 /* libffi.a */, + 6C43CB3D1534E9D100162364 /* libffi.a */, ); - path = aarch64; - sourceTree = ""; + 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; @@ -432,75 +392,88 @@ /* 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; @@ -509,182 +482,98 @@ "$(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 */; } diff --git a/src/aarch64/ffi.c b/src/aarch64/ffi.c index ec773d6..f1a063d 100644 --- a/src/aarch64/ffi.c +++ b/src/aarch64/ffi.c @@ -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 @@ -895,9 +864,6 @@ ffi_prep_closure_loc (ffi_closure* closure, value back into the call context. */ 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) { @@ -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); } } + diff --git a/src/aarch64/sysv.S b/src/aarch64/sysv.S index 901ee6a..1022454 100644 --- a/src/aarch64/sysv.S +++ b/src/aarch64/sysv.S @@ -23,25 +23,15 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ #include #include -#ifdef HAVE_MACHINE_ASM_H -#include -#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 diff --git a/src/arm/ffi.c b/src/arm/ffi.c index e2a8380..e452a6e 100644 --- a/src/arm/ffi.c +++ b/src/arm/ffi.c @@ -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: ; diff --git a/src/arm/sysv.S b/src/arm/sysv.S index ef33fc9..454dfc9 100644 --- a/src/arm/sysv.S +++ b/src/arm/sysv.S @@ -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 #include #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__) @@ -107,37 +107,60 @@ #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} diff --git a/src/closures.c b/src/closures.c index 6eac601..4d0a0b6 100644 --- a/src/closures.c +++ b/src/closures.c @@ -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) diff --git a/src/dlmalloc.c b/src/dlmalloc.c index 8725b4f..3e2ea6f 100644 --- a/src/dlmalloc.c +++ b/src/dlmalloc.c @@ -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)) diff --git a/src/prep_cif.c b/src/prep_cif.c index e216ef0..a66ee23 100644 --- a/src/prep_cif.c +++ b/src/prep_cif.c @@ -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 && diff --git a/src/x86/ffi.c b/src/x86/ffi.c index ba33775..307cd19 100644 --- a/src/x86/ffi.c +++ b/src/x86/ffi.c @@ -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: diff --git a/src/x86/ffi64.c b/src/x86/ffi64.c index bd241ef..bd917f0 100644 --- a/src/x86/ffi64.c +++ b/src/x86/ffi64.c @@ -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; } -- cgit v1.2.1