Commit Graph

115 Commits

Author SHA1 Message Date
1c3f177205 feat(llvm): Continue implementation of compact_unwind support 2025-02-04 10:33:45 +01:00
19d21ff831 chore: Make linter happy 2025-01-15 15:15:54 +01:00
77e21dad8c feat(compiler): Initial support for GOT-based relocations and compact_unwind tables for Mach-O
(Work in progress) macOS uses a different scheme for exception handling
in Mach-O; in contrast with the "usual" .eh_frame mechanism, Mach-O has
a `compact_unwind` section in which EH-related metadata are embedded.
This commit begins the effort to support it in its entirety. On the path
to that end, it also adds GOT-based relocations, which are necessary for
Mach-O object files.
2025-01-15 12:14:36 +01:00
cf2d30940b feat: Move "compilation" types from wasmer_types to wasmer_compiler 2024-11-06 16:42:06 +01:00
4e8294a08b More lints 2023-05-29 21:15:29 +08:00
edc9740f30 fuzz: fix build error (#3861) 2023-05-15 13:09:05 +02:00
26b43fee27 Merge branch 'master' into wasix-core-changes 2023-01-05 21:32:17 +01:00
d5167136fc Fixed another typo 2023-01-05 16:35:06 +01:00
b4443864e3 Fixed a typo 2023-01-05 16:33:39 +01:00
ebcd97c16e Fixed EH_Frame generation for LLVM Object files 2023-01-05 16:31:27 +01:00
958a7412d1 Fix LLVM WASMER_METADATA bug 2023-01-04 19:32:23 +01:00
b963d2cc54 Remove prefix from Symbol::Metadata 2023-01-04 17:12:25 +01:00
5df8789910 Add "Metadata" symbol to Symbol enum 2023-01-04 17:03:02 +01:00
5109a407c4 WASIX Preparation
This commit extracts changes to core libraries made in the WASIX branch.

It is not reasonable to extract the partial commit history, so this is
just a batch commit.

The history will make a bit more sense again if we decide to merge the
WASIX branch with full commit history.
2022-12-16 11:47:04 +01:00
ecc0c9e547 Limit the use of clone when handling Compilation object 2022-11-09 13:23:44 +01:00
14ee38a24e compiler: move Symbol, SymbolRegistry to wasmer-types 2022-08-02 15:45:28 +03:00
187d2e6364 Remove Artifact trait
In favor of using UniversalArtifact everywhere
2022-07-25 13:13:52 +03:00
8f539d134b Move wasmer_compiler/{address_map, function, module, sourceloc, trap, unwind}.rs to wasmer_types 2022-06-16 16:57:45 +03:00
b1f1939bf7 Move wasmer_compiler/{section,relocation}.rs to wasmer_types 2022-06-16 16:57:45 +03:00
feee4e3587 Move wasmer_compiler errors to wasmer_types error module 2022-06-16 16:57:45 +03:00
5339f7cdae Fix clippy lints
Fixes: #2926
2022-06-09 16:05:53 +02:00
00f9a3c8d7 Remove loupe dependency
Closes #2731
Closes #2744
2022-06-08 14:12:49 +03:00
ffb9cd33b9 Use trampolines for all libcalls in engine-universal and engine-dylib
In both of these engines, the compiled code may be loaded in memory far
from the Wasmer runtime which means that libcalls may not be reachable
through the normal relocation types. Instead a trampoline is needed to
allow reaching any address in the 64-bit address space.

In the case of engine-dylib, this is even worse since the symbols are
not exported by the executable without some special linker flags. The
solution here is to manually patch in the addresses at load time into
a data table of function pointers.
2022-01-20 11:47:20 +00:00
78eb5bc4c0 Fix alignment of WASMER_METADATA in the dylib engine
rykv requires this to be at least 16-byte aligned.
2022-01-04 16:23:49 +01:00
8c24ab48db Some last small changes 2021-10-18 11:55:42 +02:00
b54780cdab feat(compiler) Refactor the new ARM Reloc and Trampoline to avoid a &mut 2021-10-12 10:11:36 +02:00
0c6010ca34 feat(compiler) Use x17 as scratch instead of x16 on Aarch64 to help with Apple ABI 2021-10-08 16:19:31 +02:00
20f0c66fe6 feat(compiler) Added Trampolines and more Relocations for Arm64 (llvm-universal on linux-aarch64 are OK now) 2021-10-05 14:08:55 +02:00
cb66b5293d Improved middleware logic 2021-04-27 14:00:25 -07:00
2df5854e37 Make compilers to take non-mutable inputs 2021-04-26 21:14:23 -07:00
b832de05df Simplifies a few pattern-matches
... which have a direct combinator equivalent on Option / Result.

Tool-aided by [comby-rust](https://github.com/huitseeker/comby-rust).
2021-03-24 07:18:26 -07:00
2afed4d813 feat: Use latest version of loupe. 2021-03-22 11:43:46 +01:00
026520998c feat: Start implementing loupe::MemoryUsage on wasmer::Store. 2021-03-22 11:42:28 +01:00
71b9feff08 Use ParallelBridge to remove copies of data out of PrimaryMap. 2021-01-22 13:36:45 -08:00
ec6c990663 Do all three mapping operations in a single thread pool. 2021-01-22 13:30:21 -08:00
184edbe7e4 Add a TODO referring to a feature request on Rayon. 2021-01-21 22:14:04 -08:00
fffdde0217 Apply rustfmt changes that the CI brought up. 2021-01-21 17:31:40 -08:00
8ee2cf55ad Improve parallelism of llvm builds with native or object file engine. 2021-01-21 17:27:34 -08:00
13e6f29c29 Set compiler config to be owned (following wasm-c-api) 2020-12-04 02:39:19 -08:00
8ca3693a56 Add support for middleware to experimental_native_compile_module and make it work on compiler-llvm. 2020-11-23 13:56:17 -08:00
9d8f315d4c Update module info in-place. 2020-11-23 13:42:51 -08:00
9bd2c47730 Upgraded Cranelift to 0.67 2020-10-29 20:19:16 -07:00
e4981c4f66 Add a get_abi(TargetMachine) method instead of creating X86_64SystemV directly.
A new Arm64Linux ABI is added but it's an unedited copy of the X86_64SystemV one so far.

A bunch of cleanups from clippy. Use matches! more, don't pass &Box<dyn Abi>.
2020-10-20 14:46:45 -07:00
5d40787856 Add a compiler-llvm CompilerFunctionKind for the whole module which can occur with the experimental API for engine-native.
Since it's no longer per-function, rename CompilerFunctionKind to CompilerKind.
2020-08-20 23:28:07 -07:00
91414df670 NFC. Import the inkwell::DLLStorageClass name. 2020-08-18 14:20:45 -07:00
9c5e682585 Export the wasmer metadata when building a DLL. 2020-08-18 14:18:07 -07:00
9e89ee9b7b Call a callback to emit the merged object file. 2020-08-17 23:21:36 -07:00
6e974b92cd Run cargo fmt 2020-08-13 18:12:43 -07:00
5049c543dc Rename wasm-common crate to wasmer-types 2020-08-13 17:59:26 -07:00
15b3a35e0c Don't clone function body data. 2020-08-07 14:31:36 -07:00