Branch :
| Author | Commit | Date | CI | Message |
|---|---|---|---|---|
| 00116b6d | 2022-12-05 03:20:09 | arm/sysv: reverted clang VFP mitigation (#747) Since commit e3d2812ce43940aacae5bab2d0e965278cb1e7ea, seperate instructions were used when compiling under clang, as clang didn't allow the directives at the time. This mitigation now causes compilation to fail under clang 10, as described by https://github.com/libffi/libffi/issues/607. Now that clang supports the LDC and SDC instructions, this mitigation has been reverted. Co-authored-by: Brett Warren <brett.warren@arm.com> | ||
| ee22ecbd | 2022-09-18 01:56:25 | Add MSYS configuration files (#728) * Add MSYS configuration files MSYS behaves very similiar to Cygwin, e.g. also __CYGWIN__ is defined. Now 'make check' passes on MSYS without extra patches. * Fix warning extra tokens at end of #endif in closures.c Extra tokens converted into a comment. Also nearby indentations corrected. * Fix missing prototype warning mkostemp() on Cygwin Cygwin requires also _GNU_SOURCE to be defined to enable mkostemp() prototype. * Fix warning label ‘out’ defined but not used in ffi functions Define same preprocessor conditions for goto and label visibility. * Fix warning label ‘out’ defined but not used and related indentations. Define same preprocessor conditions for goto and label visibility. Correct also related indentations. Co-authored-by: Hannes Müller <> | ||
| c086cacb | 2022-03-31 14:40:59 | Clean up the QNX ARM bits (#699) - Add missing include. - Use constants instead of magic values. | ||
| dd5bd030 | 2021-04-07 05:42:10 | Fix building for arm windows with mingw toolchains (#631) * arm: Check _WIN32 instead of _M_ARM or _MSC_VER for detecting windows This matches what was done for ARM64 in c06468fa6674d3783a0edb1d0fae9afc8bc28513. * arm: Only use armasm source when building with MSVC When building for windows/arm with clang, the normal gas style .S source works fine (if fixed up to support thumb and other windows specifics). This matches what was done for ARM64 in c06468fa6674d3783a0edb1d0fae9afc8bc28513. * arm: Fix sysv.S to work in thumb mode Align cases in jump tables (adding nop padding to make sure each case starts where expected). Rewrite instructions that add directly to the pc register. For ffi_closure_ret, factor out a call_epilogue subroutine that restores both sp and pc from the stack; the thumb version of ldm can't load into the sp register. To avoid excessive ifdeffing, keep using call_epilogue in arm mode, but keep the shorter "ldm sp, {sp, pc}" epilogue in that case. * arm: Add win32 version of trampoline to sysv.S This matches the version of it in sysv_msvc_arm32.S. The calling C code expects a specific form of the trampoline on windows; make sure these work the same on windows regardless of the form of assembly used. * arm: Avoid optimizing out clearing the thumb bit of ffi_arm_trampoline We clear the thumb bit of ffi_arm_trampoline with a bitmask before memcpying its instructions into closure->tramp. If the bit isn't cleared, the memcpy of the trampoline function copies the wrong instructions. If the ffi_arm_trampoline symbol is declared as an array of int, the compiler can assume that it is aligned to a 4 byte boundary and the bitmask operation is a no-op, and optimize it out. See https://godbolt.org/z/dE3jE1WTz; both Clang and GCC optimize out the bitmask as it is, while MSVC doesn't. By declaring the trampoline as an array of unsigned char, the bitmask works as intended. | ||
| d271dbe0 | 2021-03-20 06:06:28 | Add some missing #if conditionals from Apple's code drop (#620) * arm/aarch64: Add FFI_CLOSURES conditionals where appropriate Signed-off-by: Jeremy Huddleston Sequoia <jeremyhu@apple.com> * aarch64: Don't emit the do_closure label when building without FFI_GO_CLOSURES Signed-off-by: Jeremy Huddleston Sequoia <jeremyhu@apple.com> | ||
| 9ba55921 | 2021-03-05 10:07:30 | Static tramp v5 (#624) * Static Trampolines Closure Trampoline Security Issue ================================= Currently, the trampoline code used in libffi is not statically defined in a source file (except for MACH). The trampoline is either pre-defined machine code in a data buffer. Or, it is generated at runtime. In order to execute a trampoline, it needs to be placed in a page with executable permissions. Executable data pages are attack surfaces for attackers who may try to inject their own code into the page and contrive to have it executed. The security settings in a system may prevent various tricks used in user land to write code into a page and to have it executed somehow. On such systems, libffi trampolines would not be able to run. Static Trampoline ================= To solve this problem, the trampoline code needs to be defined statically in a source file, compiled and placed in the text segment so it can be mapped and executed naturally without any tricks. However, the trampoline needs to be able to access the closure pointer at runtime. PC-relative data referencing ============================ The solution implemented in this patch set uses PC-relative data references. The trampoline is mapped in a code page. Adjacent to the code page, a data page is mapped that contains the parameters of the trampoline: - the closure pointer - pointer to the ABI handler to jump to The trampoline code uses an offset relative to its current PC to access its data. Some architectures support PC-relative data references in the ISA itself. E.g., X64 supports RIP-relative references. For others, the PC has to somehow be loaded into a general purpose register to do PC-relative data referencing. To do this, we need to define a get_pc() kind of function and call it to load the PC in a desired register. There are two cases: 1. The call instruction pushes the return address on the stack. In this case, get_pc() will extract the return address from the stack and load it in the desired register and return. 2. The call instruction stores the return address in a designated register. In this case, get_pc() will copy the return address to the desired register and return. Either way, the PC next to the call instruction is obtained. Scratch register ================ In order to do its job, the trampoline code would need to use a scratch register. Depending on the ABI, there may not be a register available for scratch. This problem needs to be solved so that all ABIs will work. The trampoline will save two values on the stack: - the closure pointer - the original value of the scratch register This is what the stack will look like: sp before trampoline ------> -------------------- | closure pointer | -------------------- | scratch register | sp after trampoline -------> -------------------- The ABI handler can do the following as needed by the ABI: - the closure pointer can be loaded in a desired register - the scratch register can be restored to its original value - the stack pointer can be restored to its original value (the value when the trampoline was invoked) To do this, I have defined prolog code for each ABI handler. The legacy trampoline jumps to the ABI handler directly. But the static trampoline defined in this patch jumps tp the prolog code which performs the above actions before jumping to the ABI handler. Trampoline Table ================ In order to reduce the trampoline memory footprint, the trampoline code would be defined as a code array in the text segment. This array would be mapped into the address space of the caller. The mapping would, therefore, contain a trampoline table. Adjacent to the trampoline table mapping, there will be a data mapping that contains a parameter table, one parameter block for each trampoline. The parameter block will contain: - a pointer to the closure - a pointer to the ABI handler The static trampoline code would finally look like this: - Make space on the stack for the closure and the scratch register by moving the stack pointer down - Store the original value of the scratch register on the stack - Using PC-relative reference, get the closure pointer - Store the closure pointer on the stack - Using PC-relative reference, get the ABI handler pointer - Jump to the ABI handler Mapping size ============ The size of the code mapping that contains the trampoline table needs to be determined on a per architecture basis. If a particular architecture supports multiple base page sizes, then the largest supported base page size needs to be chosen. E.g., we choose 16K for ARM64. Trampoline allocation and free ============================== Static trampolines are allocated in ffi_closure_alloc() and freed in ffi_closure_free(). Normally, applications use these functions. But there are some cases out there where the user of libffi allocates and manages its own closure memory. In such cases, static trampolines cannot be used. These will fall back to using legacy trampolines. The user has to make sure that the memory is executable. ffi_closure structure ===================== I did not want to make any changes to the size of the closure structure for this feature to guarantee compatibility. But the opaque static trampoline handle needs to be stored in the closure. I have defined it as follows: - char tramp[FFI_TRAMPOLINE_SIZE]; + union { + char tramp[FFI_TRAMPOLINE_SIZE]; + void *ftramp; + }; If static trampolines are used, then tramp[] is not needed to store a dynamic trampoline. That space can be reused to store the handle. Hence, the union. Architecture Support ==================== Support has been added for x64, i386, aarch64 and arm. Support for other architectures can be added very easily in the future. OS Support ========== Support has been added for Linux. Support for other OSes can be added very easily. Signed-off-by: Madhavan T. Venkataraman <madvenka@linux.microsoft.com> * x86: Support for Static Trampolines - Define the arch-specific initialization function ffi_tramp_arch () that returns trampoline size information to common code. - Define the trampoline code mapping and data mapping sizes. - Define the trampoline code table statically. Define two tables, actually, one with CET and one without. - Introduce a tiny prolog for each ABI handling function. The ABI handlers addressed are: - ffi_closure_unix64 - ffi_closure_unix64_sse - ffi_closure_win64 The prolog functions are called: - ffi_closure_unix64_alt - ffi_closure_unix64_sse_alt - ffi_closure_win64_alt The legacy trampoline jumps to the ABI handler. The static trampoline jumps to the prolog function. The prolog function uses the information provided by the static trampoline, sets things up for the ABI handler and then jumps to the ABI handler. - Call ffi_tramp_set_parms () in ffi_prep_closure_loc () to initialize static trampoline parameters. Signed-off-by: Madhavan T. Venkataraman <madvenka@linux.microsoft.com> * i386: Support for Static Trampolines - Define the arch-specific initialization function ffi_tramp_arch () that returns trampoline size information to common code. - Define the trampoline code table statically. Define two tables, actually, one with CET and one without. - Define the trampoline code table statically. - Introduce a tiny prolog for each ABI handling function. The ABI handlers addressed are: - ffi_closure_i386 - ffi_closure_STDCALL - ffi_closure_REGISTER The prolog functions are called: - ffi_closure_i386_alt - ffi_closure_STDCALL_alt - ffi_closure_REGISTER_alt The legacy trampoline jumps to the ABI handler. The static trampoline jumps to the prolog function. The prolog function uses the information provided by the static trampoline, sets things up for the ABI handler and then jumps to the ABI handler. - Call ffi_tramp_set_parms () in ffi_prep_closure_loc () to initialize static trampoline parameters. Signed-off-by: Madhavan T. Venkataraman <madvenka@linux.microsoft.com> * arm64: Support for Static Trampolines - Define the arch-specific initialization function ffi_tramp_arch () that returns trampoline size information to common code. - Define the trampoline code mapping and data mapping sizes. - Define the trampoline code table statically. - Introduce a tiny prolog for each ABI handling function. The ABI handlers addressed are: - ffi_closure_SYSV - ffi_closure_SYSV_V The prolog functions are called: - ffi_closure_SYSV_alt - ffi_closure_SYSV_V_alt The legacy trampoline jumps to the ABI handler. The static trampoline jumps to the prolog function. The prolog function uses the information provided by the static trampoline, sets things up for the ABI handler and then jumps to the ABI handler. - Call ffi_tramp_set_parms () in ffi_prep_closure_loc () to initialize static trampoline parameters. Signed-off-by: Madhavan T. Venkataraman <madvenka@linux.microsoft.com> * arm: Support for Static Trampolines - Define the arch-specific initialization function ffi_tramp_arch () that returns trampoline size information to common code. - Define the trampoline code mapping and data mapping sizes. - Define the trampoline code table statically. - Introduce a tiny prolog for each ABI handling function. The ABI handlers addressed are: - ffi_closure_SYSV - ffi_closure_VFP The prolog functions are called: - ffi_closure_SYSV_alt - ffi_closure_VFP_alt The legacy trampoline jumps to the ABI handler. The static trampoline jumps to the prolog function. The prolog function uses the information provided by the static trampoline, sets things up for the ABI handler and then jumps to the ABI handler. - Call ffi_tramp_set_parms () in ffi_prep_closure_loc () to initialize static trampoline parameters. Signed-off-by: Madhavan T. Venkataraman <madvenka@linux.microsoft.com> | ||
| 032b3cd6 | 2020-10-27 07:06:21 | Support building x86 and arm64 without FFI_GO_CLOSURES (#586) * x86: Support building without FFI_GO_CLOSURES Signed-off-by: Jeremy Huddleston Sequoia <jeremyhu@apple.com> * arm: Support building without FFI_GO_CLOSURES Signed-off-by: Jeremy Huddleston Sequoia <jeremyhu@apple.com> | ||
| 8276f812 | 2020-08-07 21:05:23 | Upstream local FreeBSD patches (#567) * Add support for FreeBSD mips Add support for FreeBSD mips, this has been a local patch in the FreeBSD ports tree for quite some time. Originally submitted by sson, and committed by sbruno AT FreeBSD DOT org See https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=191909 for background details. Signed-off-by: Niclas Zeising <zeising@daemonic.se> * Add support for FreeBSD powerpcspe Add support for powerpcspe on FreeBSD This has been in the FreeBSD ports tree for some time. Originally submitted by jhibbits AT FreeBSD DOT org. Signed-off-by: Niclas Zeising <zeising@daemonic.se> * Fix abort() on FreeBSD arm related to __clear_cache() This patch has been in the FreeBSD ports tree for a number of years. Original commit by koobs AT FreeBSD DOT org Original commit message: > devel/libffi: Fix abort() on ARM related to __clear_cache() > > The current FreeBSD/ARM __clear_cache() implementation does nothing #if > __i386__ || __x86_64__ #else abort(); > > cognet@ advises this is an issue for anything !Apple that is using the > libcompiler_rt provided by Clang on ARM, and requires upstreaming. See https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=149167 for some background details. Signed-off-by: Niclas Zeising <zeising@daemonic.se> | ||
| 053b04c5 | 2020-04-26 05:02:14 | arm: Fix the clang specific version of the assembly (#556) Also fix the same error in the comment for the non-clang case. That typo there seems to have existed since the code was written in that form, in e7f15f60e86 - and when the clang specific codepath was added in e3d2812ce43, the typo in the comment made it into the actual code. | ||
| db5706ff | 2019-04-26 04:58:58 | add support for 32-bit ARM on Windows (#477) * add support for 32-bit ARM on Windows * fix mismatched brace in appveyor.yml * remove arm platform from appveyor.yml for now * fix arm build * fix typo * fix assembler names * try Visual Studio 2017 * add windows arm32 to .appveyor.yml * update README.md | ||
| 05a17964 | 2019-02-19 04:11:28 | Cleanup symbol exports on darwin and add architecture preprocessor checks to assist in building fat binaries (eg: i386+x86_64 on macOS or arm+aarch64 on iOS) (#450) * x86: Ensure _efi64 suffixed symbols are not exported * x86: Ensure we do not export ffi_prep_cif_machdep Signed-off-by: Jeremy Huddleston Sequoia <jeremyhu@apple.com> * x86: Ensure we don't export ffi_call_win64, ffi_closure_win64, or ffi_go_closure_win64 Signed-off-by: Jeremy Huddleston Sequoia <jeremyhu@apple.com> * closures: Silence a semantic warning libffi/src/closures.c:175:23: This function declaration is not a prototype Signed-off-by: Jeremy Huddleston Sequoia <jeremyhu@apple.com> * aarch64: Ensure we don't export ffi_prep_cif_machdep Signed-off-by: Jeremy Huddleston Sequoia <jeremyhu@apple.com> * arm: Ensure we don't export ffi_prep_cif_machdep Signed-off-by: Jeremy Huddleston Sequoia <jeremyhu@apple.com> * aarch64, arm, x86: Add architecture preprocessor checks to support easier fat builds (eg: iOS) Signed-off-by: Jeremy Huddleston Sequoia <jeremyhu@apple.com> * x86: Silence some static analysis warnings libffi/src/x86/ffi64.c:286:21: The left operand of '!=' is a garbage value due to array index out of bounds libffi/src/x86/ffi64.c:297:22: The left operand of '!=' is a garbage value due to array index out of bounds Signed-off-by: Jeremy Huddleston Sequoia <jeremyhu@apple.com> * aarch: Use FFI_HIDDEN rather than .hidden Signed-off-by: Jeremy Huddleston Sequoia <jeremyhu@apple.com> * ffi.h: Don't advertise ffi_java_rvalue_to_raw, ffi_prep_java_raw_closure, and ffi_prep_java_raw_closure_loc when FFI_NATIVE_RAW_API is 0 Signed-off-by: Jeremy Huddleston Sequoia <jeremyhu@apple.com> | ||
| ba73a671 | 2018-07-20 09:37:43 | Update FFI_HIDDEN() to use .private_extern on Apple platforms and use the macro where appropriate Fix issue #439 Signed-off-by: Jeremy Huddleston Sequoia <jeremyhu@macports.org> | ||
| 1d704051 | 2018-06-17 17:01:50 | i386: Fix missing break; in case statement leading to incorrectly returned FFI_BAD_ABI (#437) * i386: Add missing break triggering dead store static analyzer checks. Register calling sequence is being reported as bad ABI instead of working as intended. Found-by: Clang Static Analysis Signed-off-by: Jeremy Huddleston Sequoia <jeremyhu@macports.org> * Mark ffi arm sysv entry points as private_extern. Signed-off-by: Jeremy Huddleston Sequoia <jeremyhu@macports.org> * x86_64: Add implementation of compact unwind for ffi_call_unix64. Signed-off-by: Jeremy Huddleston Sequoia <jeremyhu@apple.com> | ||
| 3c372c38 | 2017-10-24 13:53:56 | arm: fix a level of indirection issue Rather than relying on the stack being 0'ed out always, do it manually. The stack generally happened to be zero, and because the compiler realizes that the tests are dealing with chars truncates the read value. However, the top 3 nibbles of the value are undefined and may be non-zero. The indirection level caused a null-pointer dereference. Explicitly scribbling on the stack during the allocation causes test failures without the original zexting behaviour. | ||
| 7ad0ae7f | 2017-10-10 11:44:05 | arm: zext return value parameters The closure function (invoked as closure->fun in ffi_closure_XXX_inner) will only populate the actual number of bytes for the true return type, which may be a character. This leaves garbage on the stack when the assembly closure function (i.e. ffi_closure_XXX) reads the return value off of the stack into r0 as a 4-byte value. ffi_closure_XXX always leaves room for at least 4 bytes here, so we can safely set them to 0. Otherwise, if there is garbage in any of these bytes, these end up in r0 and in the returned value as well. | ||
| 02a5145a | 2017-09-27 21:43:03 | Merge pull request #263 from ksjogo/master fix ios builds | ||
| 10099d6c | 2017-09-27 20:54:09 | Merge pull request #271 from frida/fix/qnx-cache-flushing arm: Fix cache flushing on QNX | ||
| bd72848c | 2017-04-27 13:20:36 | Prefix ALIGN macros with FFI_ | ||
| 00406945 | 2016-07-12 16:08:42 | Update Xcodeproj Include all currently relevent files. Call autogen is build script. Fix compiler settings. Fix mach include. | ||
| ed848834 | 2016-08-10 14:57:22 | arm: Fix cache flushing on QNX Use `msync()` directly as `__clear_cache()` is broken in the qnx650_gcc4.8.3 toolchain. | ||
| bc4fc07a | 2015-12-21 00:37:06 | Fixed #181 -- Corrected problems with ARMv7 build under iOS. Based on a patch from @fealebenpae, with input from @SolaWing and @rth7680, and testing from @superdump. | ||
| e3d2812c | 2015-04-25 19:03:03 | Modified arm/sysv.S to remove directives not allowed by clang. | ||
| ab83cbb9 | 2014-10-29 14:38:42 | arm: Add support for Go closures | ||
| 6fa617da | 2014-10-21 11:27:11 | arm: Add argument space for the hidden struct return pointer This should have been failing all along, but it's only exposed by the complex_int test case. | ||
| a529bec2 | 2014-10-21 11:26:59 | arm: Add support for complex types | ||
| 5e88ebe6 | 2014-10-20 15:10:43 | arm: Remove internal FFI_TYPE constants These have been replaced by the contents of internal.h. | ||
| a4b785ea | 2014-10-17 02:07:32 | arm: Rewrite ffi_closure Move the push of the argument registers into ffi_closure_SYSV, reducing the size of the trampoline. | ||
| e7f15f60 | 2014-10-17 01:27:16 | arm: Rewrite ffi_call Use the trick to allocate the stack frame for ffi_call_SYSV within ffi_call itself. | ||
| 0d39b4bb | 2014-10-17 01:02:52 | arm: Deref ffi_put_arg arguments | ||
| 57b24fb3 | 2014-10-17 00:53:21 | arm: Deref ffi_align argument | ||
| c129bea8 | 2014-10-15 17:28:53 | arm: Reindent arm/ffi.c | ||
| a74a3aad | 2014-10-17 01:21:22 | arm: Rewrite vfp_type_p Do not modify the ffi_type. Rearrange the tests so that we quickly eliminate structures that cannot match. Return an encoded value of element count and base type. | ||
| aaf3101b | 2014-09-20 06:37:04 | Fix -Werror=declaration-after-statement problem | ||
| 001aaf4b | 2014-02-28 00:20:17 | When no VFP arguments are present the IP register is used uninitialized. Initialize it to the value of FP. This fixes a number of testsuite failures when configured for armv7l-unknown-linux-gnueabihf | ||
| 994be3a5 | 2013-12-30 15:27:14 | Darwin/iOS: Fix mis-typing of vfp_reg_free | ||
| a8e0a835 | 2013-12-30 15:26:20 | Darwin/ARM: Assert on NULL dereference This inhibits an analyzer warning by Clang on all platforms. | ||
| 6eff9ff9 | 2013-12-30 17:48:10 | Darwin/iOS: Improve unified syntax use for LLVM | ||
| 66469c38 | 2014-01-09 13:41:45 | Darwin/ARM: Inhibit Clang previous prototype warnings | ||
| 3dc3f32c | 2013-12-05 16:23:25 | Undo iOS ARM64 changes. | ||
| 953b6f14 | 2012-04-24 11:16:20 | Darwin/iOS: More unified syntax support w/ Clang. Signed-off-by: Zachary Waldowski <zwaldowski@gmail.com> | ||
| c713a553 | 2012-04-24 10:25:29 | Darwin/iOS: Simplify RETLDM arguments for LLVM 3.1 Signed-off-by: Zachary Waldowski <zwaldowski@gmail.com> | ||
| 16ba1b80 | 2012-04-11 23:26:04 | Darwin: Silence Clang warnings. | ||
| 2f450822 | 2013-11-18 06:52:29 | Clean up code to appease modern GCC compiler. | ||
| 77f823e3 | 2013-11-13 14:26:57 | stop trying to assing vfp regs once we are done with the registers | ||
| 37067ec5 | 2013-11-12 19:49:01 | mark all vfp registers as used when done. To avoid assigning registers the would fit, once arguments have been on the stack, we mark all registers as used once we do not find a free register for the first time. | ||
| c2422174 | 2013-11-02 14:08:23 | Merge pull request #45 from foss-for-synopsys-dwc-arc-processors/arc_support arc: Fix build error | ||
| 128cd1d2 | 2013-10-08 06:45:51 | Fix spelling errors | ||
| 9708e7cf | 2013-03-27 19:31:04 | folow the ARM hard-float ABI in ffi_prep_incoming_args_VFP | ||
| b4112098 | 2013-03-27 16:38:35 | create separated versions of ffi_prep_incoming_args_* for SYSV and VFP ABIs. The different versions will be called depending on the value of cif->abi | ||
| 3c160861 | 2013-03-26 19:24:47 | extend ffi_prepare_args for FFI_VFP (hard-float ABI), fixing an issue with passing VFP arguments in VFP registers and the stack, while at the same time not using all core registers. | ||
| 0f2ff2d4 | 2013-03-26 19:22:02 | separate ARM ffi_prepare_args in a version implementing the simple SYSV calling convention and one for the hard-float calling convention | ||
| 3a352b8a | 2013-03-26 14:24:04 | move the hardfloat specific argument copying code to the helper function | ||
| 5df6b794 | 2013-03-26 14:02:21 | extract setting of arguments to be passed to a helper function | ||
| 7d1048c4 | 2013-03-26 11:33:33 | extract code to align the argument storage pointer to a helper function | ||
| 39e6a586 | 2012-04-11 22:39:46 | More mac/ios build improvements | ||
| 39dccddb | 2012-04-05 12:32:41 | Fix building with Clang for Darwin (OS X 10.6+ and iOS 4.0+) | ||
| e1539266 | 2012-03-30 00:40:18 | ARM VFP fix for old toolchains | ||
| 8360bf1c | 2012-02-23 07:01:13 | Ensure that users don't include ffitarget.h directly | ||
| ff9454da | 2011-11-12 17:18:51 | Add David Gilbert's variadic function call support | ||
| 322052ce | 2011-11-12 16:11:49 | Fix arm wince alignment issue | ||
| 3d56106b | 2011-11-12 07:20:24 | Rebase | ||
| d992ac54 | 2011-07-29 17:32:53 | Refresh from GCC | ||
| 09f8f310 | 2011-02-28 15:36:07 | More AIX fixes. rc9. | ||
| 3000dc23 | 2011-02-13 08:55:53 | Merge remote branch 'upstream/master' | ||
| 1fbf9dc4 | 2011-02-13 08:06:39 | Fix bad_abi test. rc5. | ||
| 8195e0e1 | 2011-02-12 11:27:00 | Fix symbol prefixes on Darwin. | ||
| 28a00f61 | 2011-02-12 11:01:48 | Apple assembler support; fixed most gas/ELF-isms. | ||
| 7f2ea33a | 2011-02-12 10:39:18 | Replace RETLDM macro. The macro is incompatible with Apple's assembler; switch to a simple inline version. | ||
| 0cad4386 | 2011-02-09 06:11:46 | Add ChangeLog entry. Fix copyright headers. | ||
| 1106229a | 2011-02-08 19:20:09 | Add iOS support | ||
| 0e584399 | 2011-02-08 07:52:40 | Refresh from GCC | ||
| 2db72615 | 2010-11-21 10:50:56 | Rebase | ||
| f6ab3edc | 2010-10-27 19:34:51 | Include the license header in the generated output. | ||
| cef61946 | 2010-10-27 13:59:30 | Add missing copyright/license header. | ||
| 83038cf2 | 2010-09-19 14:36:45 | Implement FFI_EXEC_TRAMPOLINE_TABLE allocator for iOS/ARM. This provides working closure support on iOS/ARM devices where PROT_WRITE|PROT_EXEC is not permitted. The code passes basic smoke tests, but requires further review. | ||
| b00ff3e9 | 2010-09-19 14:22:26 | Rename the generated symbol | ||
| 9e119644 | 2010-09-19 10:43:06 | Add a hard-coded FFI_EXEC_TRAMPOLINE_TABLE arm implementation. This implements support for re-mapping a shared table of executable trampolines directly in front of a writable configuration page, working around PROT_WRITE restrictions for sandboxed applications on Apple's iOS. This implementation is for testing purposes; a proper allocator is still necessary, and ARM-specific code needs to be moved out of src/closures.c. | ||
| f38364b3 | 2010-09-19 10:42:36 | Fix symbol prefix for ffi_closure_SYSV_inner on Darwin. | ||
| 36849e77 | 2010-09-19 09:35:04 | Whitespace/comment fixes. | ||
| 9af9291b | 2010-09-19 08:52:33 | Add the trampoline table generated by gentramp.sh | ||
| 68ce0c38 | 2010-09-19 08:38:19 | Add a shell script that generates the ARM trampoline page. This generates a page of 340 trampolines, aligned within one page. The trampolines use pc-relative addressing to reference config data (context, jump address) from a page placed directly prior to the trampoline page. This can be used on systems -- such as iOS -- that do not support writable, executable memory by remapping the executable page containing the trampolines directly above a newly allocated writable config page. | ||
| 70150bdf | 2010-09-18 16:38:03 | Add missing UNWIND entry; disables .pad on non-EABI targets. | ||
| 6b452baf | 2010-09-18 16:21:32 | Apple assembler support; fixed most gas/ELF-isms. | ||
| 8ddac835 | 2010-09-18 15:38:06 | Fix placement of the __APPLE__ macro. | ||
| 69043d02 | 2010-09-18 15:32:08 | Work-around libffi's FP ABI detection. On iOS, we must use the AAPCS floating point return value calling conventions. libffi's ARM implementation will only use these conventions if __SOFTFP__ is defined, which is not the case when GCC's -mfloat-abi defaults to 'softfp' instead of 'soft'. To work around this we manually define __SOFTFP__ for Apple platforms in the ARM-specific sysv.S. See also: http://developer.apple.com/library/ios/#documentation/Xcode/Conceptual/iPhoneOSABIReference/Introduction/Introduction.html http://infocenter.arm.com/help/topic/com.arm.doc.ihi0042d/IHI0042D_aapcs.pdf | ||
| d14178be | 2010-07-23 09:14:00 | FFI_LAST_ABI fix | ||
| 3f5b1375 | 2010-07-12 14:39:18 | rebase | ||
| 9dc9a293 | 2010-04-13 10:33:52 | Rebase to latest GCC sources | ||
| 7b7a42f2 | 2010-01-12 09:14:14 | Rebase from GCC | ||
| c3042afa | 2010-01-01 08:08:02 | Reset quilt patches post 3.0.9 merge with GCC | ||
| 0cfe60e9 | 2009-12-29 10:06:04 | 3.0.9rc12 | ||
| 9458d88f | 2009-12-26 07:02:27 | Rebase from GCC | ||
| da11bece | 2009-12-24 05:34:46 | Release 3.0.9rc5 | ||
| 115ab36f | 2009-12-24 00:22:00 | Update missing changes for 3.0.9r4. | ||
| c6dddbd0 | 2009-10-04 08:11:33 | Initial commit |