Syrus
ae8dcfcb27
Make PIC optional for compilers
2020-05-19 16:56:56 -07:00
Nick Lewycky
88bc330761
Remove commented-out code.
2020-05-19 11:52:34 -07:00
Nick Lewycky
808cf9eb0d
Remove obsolete comment and variables.
...
Expound upon comment. Fix typo.
2020-05-19 11:23:53 -07:00
Nick Lewycky
ae6f0dadb2
Stop naming instructions with numbered names.
...
LLVM will number instructions if you don't provide a name, so we get %7 instead of %s7 from calling state.var_name(). LLVM doesn't assign the numbers until printing out the LLVM IR as text, which we never do in a normal run of wasmer.
If you're editing a .ll text by hand and you're worried about messing up the numbering, use `opt --instnamer` to assign autogenerated names to all numbered instructions.
2020-05-19 09:54:20 -07:00
nlewycky
976493c756
Merge pull request #31 from wasmerio/llvm-memorydefinition-cache
...
Cache lookup of VMMemoryDefinition.
2020-05-18 20:03:48 -07:00
Nick Lewycky
0df99b5dbc
Cache lookup of VMMemoryDefinition.
...
To add to the cache, mutability is required, so now `resolve_memory_ptr` must be `&mut self` which means that `translate_operator` may not hold those convenient immutable references across the whole function.
The search and replace to implement the above changes affected some commented out code, that code is removed.
MemoryStyle grows PartialEq and Eq so that we can check what the memory style is without a match expression.
2020-05-18 19:59:50 -07:00
Syrus
363dbb3b08
Fixed lint issues
2020-05-18 14:55:55 -07:00
Nick Lewycky
dff7cf28c9
Fix invalid LLVM IR for global.get/set of imported globals.
...
In passing, refactor global accesses and cache the address computations and values of const globals.
Also includes some cargo fmt fixes.
2020-05-18 14:35:23 -07:00
Syrus
f20d09fb2d
Fixed LLVM compilation
2020-05-18 13:23:19 -07:00
Nick Lewycky
f666a394c5
Fix LLVM type of load of table entry.
2020-05-18 13:17:44 -07:00
Syrus Akbary
9981a51f8f
Merge pull request #23 from wasmerio/host-trampolines
...
Improved trampolines adding support for Dynamic functions
2020-05-18 13:12:37 -07:00
Nick Lewycky
7783879ae2
Improve comment.
2020-05-18 12:44:49 -07:00
Nick Lewycky
be1754766e
Fix issue with GOT relocations being emitted on Mac.
2020-05-18 12:30:49 -07:00
Nick Lewycky
288cb46715
Give the main loop a big comment explaining it.
...
Remove some commented out duplicate code.
2020-05-18 11:08:33 -07:00
Nick Lewycky
cac3246b2e
Improve error handling around ElfSectionIndex a little.
2020-05-18 10:56:44 -07:00
Nick Lewycky
7e1f19eafe
Add an ElfSectionIndex type for type safety and code clarity.
2020-05-18 09:51:00 -07:00
Nick Lewycky
7e62e1f59b
Factor out building and pushing the Relocation. This if-else just computes the relocation target.
2020-05-18 09:21:09 -07:00
Nick Lewycky
a79a9b19f7
Remove name for unused variable.
2020-05-18 09:13:51 -07:00
Nick Lewycky
aa4aa65d0c
Remove some calls to clone() by using into_iter().
2020-05-18 09:08:33 -07:00
Nick Lewycky
fce8e32cf6
Don't make SectionBody's internal Vec public.
...
Add a new method to create a new section body. Remove unused methods. Improve implementation of is_empty().
2020-05-18 09:08:33 -07:00
Nick Lewycky
1ee5f27a3a
Simplify sort expression.
2020-05-18 09:08:33 -07:00
Nick Lewycky
ea05e16b6d
Parse relocations that apply to custom relocations.
...
This rewrites the whole relocation parsing to work properly.
* we no longer use LocalRelocation and simply assign a new SectionIndex as new sections are encountered.
* we no longer use string matching to determine what function applies relocations to what, instead we use the field in the elf section header that tells us
* we no longer merge sections, each section from every function is preserved as an independent custom section in the module.
* we now discover any new sections that need to be pulled in recursively as we parse each section
* many error cases are either handled, or report CompileErrors.
2020-05-18 09:08:33 -07:00
Syrus
5dfa9faafb
Improve compiler names for trampoline functions
2020-05-17 20:32:42 -07:00
Syrus
5f8f7a5dc1
Merge branch 'master' into host-trampolines
2020-05-15 20:07:40 -07:00
Nick Lewycky
9a0c2a76a3
Add a list of relocations to custom sections.
2020-05-14 12:22:32 -07:00
Nick Lewycky
73e97d95d7
Fix vmctx passed to direct calls of imported functions.
2020-05-14 11:53:10 -07:00
Syrus
52ac543690
Merge branch 'master' into host-trampolines
2020-05-14 11:18:21 -07:00
Syrus
1c21e4f927
Make host trampolines work (PoC)
2020-05-13 20:53:54 -07:00
Nick Lewycky
bddc174327
Add trap on indirect call with uninitialized table element.
2020-05-13 17:06:59 -07:00
Nick Lewycky
e3ac60da24
Fix invalid IR generation on imported memories and globals.
2020-05-13 15:57:41 -07:00
Nick Lewycky
d23dbaa3fa
When converting a float to an int, NaN produces bad conversion to integer, other out-of-bounds failures produce integer overflow. ¯\_(ツ)_/¯
2020-05-13 15:57:41 -07:00
Nick Lewycky
9d3162f578
Emit integer division by zero trap for all div/rem by zero, but not signed division of INT_MIN by -1.
2020-05-13 15:57:41 -07:00
Nick Lewycky
6ed52be637
Add an explicit error when there's a relocation against .rodata.
2020-05-13 15:57:41 -07:00
Nick Lewycky
486dedc601
Ignore multi-value errors on LLVM too, for now.
2020-05-13 15:57:41 -07:00
Mark McCaskey
2f1de920f0
Fix up master
...
This happened because we didn't use something like bors to ensure we
were merging into the latest master
2020-05-13 15:42:10 -07:00
nlewycky
ea90cadaf1
cargo fmt
...
https://github.com/wasmerio/wasmer-reborn/runs/672125543?check_suite_focus=true
2020-05-13 13:18:27 -07:00
Nick Lewycky
30a86db05b
Fix type of OOB reported on call indirect index outside table.
2020-05-13 13:02:24 -07:00
Nick Lewycky
fe42749002
Implement support for imported function calls. They need to be looked up from the vmctx at runtime.
...
In order to work with spectests, we need to change our function types to include a second fixed parameter, there are now two vmctx's (callee and caller) before any other arguments. Because we have a uniform call sequence for imported and local function calls (which we must have because we store both in the table and don't store what kind it is), we need to change the llvm function types for all our own functions and update how we call them and how we find our own arguments.
2020-05-13 12:49:26 -07:00
Nick Lewycky
119320603c
Sometimes we generate our own function names. Look up names in our name map, not the wasm module.
2020-05-13 11:50:23 -07:00
Nick Lewycky
26cea55e84
⛳ Use &x[y] instead of x.get(y).unwrap() on PrimaryMap and SecondaryMap.
2020-05-13 11:29:42 -07:00
Nick Lewycky
4e9bb35e41
We depend on llvm 10, fix build.rs. While at it, bump to latest inkwell.
2020-05-13 11:05:58 -07:00
Nick Lewycky
6871d327b1
Bounds check pointer accesses to dynamic memory plan memory.
2020-05-12 21:11:42 -07:00
Nick Lewycky
613e40ed79
The llvm compiler uses ELF under the hood, attempt to convert any Target to the same thing, but with ELF.
2020-05-12 21:11:42 -07:00
Syrus
3a991a7f59
Upgrade libc to 0.2.70. Removedd unnecessary trap shims
2020-05-12 17:43:43 -07:00
Nick Lewycky
af6a26381a
Disable local debugging code.
2020-05-12 15:03:54 -07:00
Nick Lewycky
3b23ab2146
Fix call_indirect.
2020-05-11 17:12:47 -07:00
Nick Lewycky
fce8dacc10
Reimplement table_prepare for new vmctx.
2020-05-11 16:06:02 -07:00
Mark McCaskey
d9ca668607
Merge pull request #6 from wasmerio/add-c-api
...
Add C API
2020-05-08 16:10:09 -07:00
Nick Lewycky
63d7df78fa
Implement load and store.
2020-05-07 18:30:30 -07:00
Mark McCaskey
480ecd2cda
Apply various fixes to get the C API working
...
24% of tests are passing now!
2020-05-07 14:02:13 -07:00