21 Commits (2855d1771478e1e368fcfeb4d56aecbb4d9429ca)

Author SHA1 Message Date
Hugo Melder e882423e5a
PowerPC {32, 64}-bit Block Trampolines (#272)
* Implement PowerPC block trampoline

* Adjust pagesize on ppc64

* Skip UnexpectedException test for PowerPC

* Move PAGE_SIZE to asmconstants.h

* Use PAGE_SIZE and PAGE_SHIFT macros for PowerPC

* Add ppc64el and powerpc qemu-crossbuild targets

* Add NO_SAFE_CACHING definition and guards

* Do not export objc_method_cache_version on ppc32

---------

Co-authored-by: David Chisnall <davidchisnall@users.noreply.github.com>
2 years ago
Hugo Melder adedd68048
Initial RISC-V 64-bit Support (#261)
* RISC-V objc_msgSend implementation

* Use objc_msgSend.riscv64.S if requirements are met

* RISC-V 64-bit block trampoline

* Fix formatting

* Add riscv64 crossbuild in CI

* Exclude llvm 13 and 14 for riscv64 in CI

* Add RISC-V and Windows on ARM to ANNOUNCE

* Add comment to why we exclude architectures in qemu-crossbuild

* Remove duplicated entry in ANNOUNCE
2 years ago
Rupert Daniel 710b2368cc Fixed crash when using self in imp_implementationWithBlock on armv7a 6 years ago
David Chisnall 8e825a8416 Make Win32 block trampolines SEH compatible.
This change is effectively a no-op (it's impossible to throw an
exception through these trampolines, because they tail call the real
block), but it does prevent the linker from complaining that we're
linking SEH-aware and SEH-unaware code.
8 years ago
David Chisnall 4ab78aa49a Check for Thumb-2 more explicitly. 10 years ago
David Chisnall cbdc6c8786 Reorganise block_trampolines.S to have a lot less copy-and-pasting. 10 years ago
David Chisnall 9e51aabc98 Fix block trampolines to work when mixed with Thumb-2 code. 10 years ago
David Chisnall fecddec3f3 Implement AArch64 block trampolines. 10 years ago
David Chisnall a36013f090 Fix the offsets in the ARM block trampoline. 10 years ago
David Chisnall 7eeffe9d09 Rewrite the block-to-imp code so that:
- We reuse the memory allocated for blocks
- We no longer have the same physical page mapped write and execute
10 years ago
David Chisnall 2f57b0b688 Tweak the block trampolines to work with the win64 calling convention (untested!). 10 years ago
theraven 55bbcd8748 Only emit section directives on ELF platforms. 12 years ago
ericwa 317e951b0c libobjc2: some changes needed to build on OS X. CDECL macro to prefix symbol names in assembly code with an underscore, macros to omit the .type and .section derictives which are unsupported on OS X, and also a linker flag to make weak symbols work 13 years ago
theraven 518e059538 Add MIPS support for assembly paths.
Note: Only n64 is tested.  o32 and n32 will probably work, but use at your own tisk...
13 years ago
theraven 62269b017d Fix arm asm syntax. 14 years ago
theraven 36bba25348 Shorter versions of ARM trampolines. 14 years ago
theraven 5718e5428d Add block trampolines for ARM (need a bit more testing...) 14 years ago
theraven eeaa8f7b32 Add a warning when compiling on a platform where imp_implementationWithBlock() won't work. 14 years ago
theraven 82dd92351d Actually commit the files I thought I committed in the last commit 14 years ago
theraven 0a7fdcb69e Add x86 (32-bit) sret trampoline. 14 years ago
theraven 43ee8b9819 Add initial support for imp_implementationWithBlock() and friends. Currently
only works on x86 and x86-64 and doesn't work with sret functions.
14 years ago