Commit Graph

299 Commits

Author SHA1 Message Date
Alex Beregszaszi
6f6bcdd526 [ewasm] Display custom sections as hex string in the text output 2020-11-10 23:48:24 +01:00
chriseth
da92fe548e Merge remote-tracking branch 'origin/develop' into breaking 2020-11-10 13:48:32 +01:00
Alex Beregszaszi
6e11754c8b [ewasm] Support compiling data subobjects 2020-11-09 17:47:12 +00:00
Alex Beregszaszi
e41700e5f7 [ewasm] Clarify custom section handling in BinaryTransform 2020-11-09 17:47:01 +00:00
Alex Beregszaszi
cd08dab4e6 [ewasm] Allow compiling Yul without "main" 2020-11-09 16:36:29 +00:00
chriseth
e93a84ccd4 Merge remote-tracking branch 'origin/develop' into HEAD 2020-10-28 18:19:31 +01:00
Alex Beregszaszi
13652bd4a9 [ewasm] Add assertion for datasize/dataoffset in BinaryTransform 2020-10-27 17:43:31 +00:00
Alex Beregszaszi
6d79a8885f [ewasm] Implement stop() in EVM->Ewasm translator 2020-10-27 17:09:30 +00:00
chriseth
bfd267459c Panic codes. 2020-10-22 19:25:55 +02:00
Daniel Kirchner
0dca223b45 Add another argument to setimmutable and the AssignImmutable opcode, allowing to modify code at any memory offset. 2020-10-15 18:14:41 +02:00
Alexander Arlt
b6e1415509 Add LEB128 encoding functions & tests. 2020-09-28 16:06:19 -05:00
Daniel Kirchner
f3c2d6cfdc Move memory load and store functions to the dialect. 2020-09-17 22:13:27 +02:00
Daniel Kirchner
f4b42d1c72 Add stack limit evader. 2020-09-17 22:13:27 +02:00
Harikrishnan Mulackal
d166c2540a Fix typo block 2020-09-07 17:24:03 +02:00
Alex Beregszaszi
dd44fc1f06 Use explicit yul namespace in WasmCodeTransform 2020-08-27 19:49:30 +01:00
Alex Beregszaszi
fdf68a9525 Add some asserts to WasmCodeTransform 2020-08-27 19:49:30 +01:00
Harikrishnan Mulackal
3cbe65e4f3 Refactor SideEffects struct 2020-08-18 14:53:59 +02:00
Alex Beregszaszi
f6a57af809 Add LiteralKind to Dialect.literalArguments
Co-authored-by: Daniel Kirchner <daniel@ekpyron.org>
2020-08-05 11:37:00 +01:00
Alex Beregszaszi
24bb6252ac Merge Parser::instructions() into EVMDialect 2020-07-29 13:15:54 +01:00
chriseth
b1f79072df Fix stack compressor wrt literal arguments. 2020-07-23 14:03:51 +02:00
chriseth
6bb6783d39 Merge remote-tracking branch 'origin/develop' into breaking 2020-07-22 15:26:44 +02:00
Djordje Mijovic
6f97e6153c [yul] Adding support for accessing subobjects via .
Co-authored-by: Kamil Śliwak <kamil.sliwak@codepoets.it>
2020-07-21 17:56:11 +02:00
chriseth
9be5ed1220 Merge remote-tracking branch 'origin/develop' into breaking 2020-07-21 11:35:28 +02:00
chriseth
1c9179683e
Merge pull request #9433 from ethereum/reportAllStackErrors
Report all stack errors
2020-07-20 15:44:51 +02:00
chriseth
f5d8636d28 Document variableHeightDiff. 2020-07-20 15:44:29 +02:00
Sachin Grover
b7adb2aa42 Add SPDX license identifier if not present already in source file
Fixes: #9220
2020-07-17 20:24:12 +05:30
Daniel Kirchner
92cd1ddb7d Add markAsInvalid to the various assemblies. 2020-07-16 17:38:13 +02:00
Daniel Kirchner
579e4b5a69 Report all stack errors in the EVM code transform. 2020-07-16 17:38:04 +02:00
chriseth
f945163909
Merge pull request #9432 from ethereum/develop
Merge develop into breaking.
2020-07-16 17:14:45 +02:00
Alex Beregszaszi
870ea98c21 Prefix EIP-615 opcodes with EIP615 in Instructions 2020-07-13 17:34:19 +01:00
Daniel Kirchner
def0ebbb3e Free variables directly after visiting RHS of Variable Declarations during EVMCodeTransform. 2020-07-13 17:36:15 +02:00
chriseth
8eee3ed3a2
Merge pull request #9388 from ethereum/develop
Merge develop into breaking.
2020-07-13 14:55:21 +02:00
Alex Beregszaszi
87557896ed Add ctz and popcnt to WasmDialect 2020-07-13 11:10:14 +01:00
Djordje Mijovic
547590b972 Fixing additional signedness errors after adding -Wsign-conversion flag
Co-authored-by: Kamil Śliwak <kamil.sliwak@codepoets.it>
2020-07-09 17:22:45 +02:00
chriseth
64b6524bdb Merge remote-tracking branch 'origin/develop' into breaking 2020-07-08 09:37:14 +02:00
chriseth
982a269b2b
Merge pull request #9325 from ethereum/develop
Merge develop into breaking.
2020-07-06 19:11:02 +02:00
chriseth
4d2b9cd38f Jump types for yul functions. 2020-07-06 18:12:54 +02:00
Alex Beregszaszi
60d4b1e8cc Rename drop to i64.drop in WasmDialect
Also properly implement support for both i32.drop and i64.drop in BinaryTransform, TextTransform, and YulInterpreter
2020-07-06 15:47:17 +01:00
Alex Beregszaszi
55e41b602a Explicitly check for jump instructions in EVMDialect 2020-07-06 14:46:24 +01:00
chriseth
ab68406006 Merge remote-tracking branch 'origin/develop' into breaking 2020-07-06 15:25:25 +02:00
Daniel Kirchner
8c5fce5b31
Merge pull request #9304 from ethereum/yul-assert
Only use yulAssert and not solAssert in libyul
2020-07-03 19:00:14 +02:00
Alex Beregszaszi
4c7c7c0270 Only use yulAssert and not solAssert in libyul 2020-07-03 15:46:50 +01:00
Kamil Śliwak
356b9a7904 Restrict linkersymbol builtin to object dialect of Yul 2020-07-02 14:41:40 +02:00
Bhargava Shastry
1a0391bceb Fuzzer: Add a specialized StackTooDeepError Exception that is caught in the fuzzing harness 2020-07-01 11:08:20 +02:00
chriseth
3e3f9a472f Merge remote-tracking branch 'origin/develop' into breaking 2020-06-30 18:56:51 +02:00
Kamil Śliwak
a331d4449d Add linkersymbol() builtin to Yul EVM dialect 2020-06-24 15:06:52 +02:00
chriseth
af0cd4ab98
Merge pull request #9252 from ethereum/develop
Merge develop into breaking.
2020-06-23 18:28:24 +02:00
Alexander Arlt
86be0fbc2f [ewasm] Fix infinite loops. 2020-06-23 12:35:03 +02:00
chriseth
71cb7551f4
Merge pull request #9208 from ethereum/develop
Merge develop into breaking.
2020-06-16 16:11:41 +02:00
Kamil Śliwak
06e1b38d1d WasmCodeTransform: Convert Yul 'if's with i32 argument directly to wasm 'if' without an extra comparison with zero 2020-06-16 15:36:47 +02:00
Kamil Śliwak
d9ca02b47a Enable translation of i32 Yul variables/literals to i32 wasm variables/literals
- Until now they were being translated to i64
2020-06-16 15:36:47 +02:00
chriseth
50e8d6850f Remove wasm type conversions. 2020-06-16 15:36:42 +02:00
chriseth
5fdbb5c3e3 Simplify inline assembly resolver. 2020-06-15 18:10:18 +02:00
chriseth
8155ad2187 Merge remote-tracking branch 'origin/develop' into breaking 2020-06-15 17:11:41 +02:00
Djordje Mijovic
33e7b24df0 Adding fixes for signedness conversion warnings in libyul
Co-authored-by: Kamil Śliwak <kamil.sliwak@codepoets.it>
2020-06-12 10:39:30 +02:00
Kamil Śliwak
e67f5072df Add support for generating code with i32 variables in text and binary wasm 2020-06-11 02:44:23 +02:00
Kamil Śliwak
6a82d32ef6 Add the ability to store variable types in wasm AST 2020-06-11 02:44:23 +02:00
Kamil Śliwak
840ff40263 Define wasm::Type enum and use it for import parameters and result 2020-06-11 02:44:23 +02:00
chriseth
6b3171c38b Merge remote-tracking branch 'origin/develop' into breaking 2020-06-10 11:30:50 +02:00
Kamil Śliwak
edfbae0167 was/BinaryTransform: Remove unnecessary std:: prefixes from the .cpp file 2020-06-09 17:34:32 +02:00
Kamil Śliwak
b9ecccdece wasm/BinaryTransform: Rename globals and functions to globalIDs and functionIDs 2020-06-09 17:29:34 +02:00
Kamil Śliwak
b2a8639c20 wasm/BinaryTransform: Make most of section generation stateless and pass global/function/type maps via parameters 2020-06-09 17:29:08 +02:00
Kamil Śliwak
adbd4be151 wasm/BinaryTransform: Make global/function/type maps constant 2020-06-09 17:26:00 +02:00
Kamil Śliwak
4b1ea93b41 wasm/BinaryTransform: Put code for enumerating globals/functions/types in separate functions 2020-06-09 17:26:00 +02:00
Christian Parpart
2af45c62c8 [Yul] Removed now disabled pc() from wasm backend. 2020-06-08 16:46:55 +02:00
Kamil Śliwak
fe0a0802b2 wasm/BinaryTransform: Fix wrong alignment for .load/.store with arguments smaller than 64-bits 2020-06-06 00:00:46 +02:00
Kamil Śliwak
976a0f9395 wasm/BinaryTransform: Don't add an empty local entry in binary wasm if there are no locals 2020-06-05 21:03:06 +02:00
Kamil Śliwak
c96196c346 Define constants to make flag meanings more apparent in binary wasm 2020-05-28 22:17:02 +02:00
chriseth
bd64e537cb Fix implementation of leave. 2020-05-26 10:24:01 +02:00
Alex Beregszaszi
cfdfa36065 Rename wasm::Break(If) to wasm::Branch(If) for clarity 2020-05-21 00:02:02 +01:00
chriseth
84092edc5d
Merge pull request #8914 from random-internet-cat/down-with-unique-ptr
Down with unique_ptr!
2020-05-20 13:22:06 +02:00
chriseth
4e9f6c3508 Fix webassembly loops by adding explicit break at the end. 2020-05-19 22:16:16 +02:00
Jason Cobb
899e6d7e2b
Use optional for FunctionImport::returnType 2020-05-18 10:24:38 -04:00
chriseth
6308ca4a22 Binary transform for br and br_if. 2020-05-14 11:30:19 +02:00
chriseth
7da453014d Fix source location of yul variable declarations without value. 2020-05-12 17:45:19 +02:00
Daniel Kirchner
c1ed5bbb0f Update Dockerfiles and CI scripts to Ubuntu 20.04 and simplify them. 2020-05-11 17:35:01 +02:00
chriseth
6fb112fa8e Remove some unneeded headers. 2020-05-07 01:49:46 +02:00
Mathias Baumann
debcc8c056 Add setimmutable and loadimmutable to dialect. 2020-05-04 15:00:50 +02:00
Alexander Arlt
aac7a1e434 Apply modernize-pass-by-value. 2020-04-14 10:32:13 -05:00
chriseth
a7a1feb1b8
Merge pull request #8626 from ethereum/immutable-functioncallgraph
Prepare literalArguments for immutable builtin functions
2020-04-09 15:46:02 +02:00
Mathias Baumann
5203503583 Allow for per-parameter literalValues builtin functions 2020-04-08 16:41:38 +02:00
chriseth
823a119117
Merge pull request #8570 from aarlt/clang-tidy-apply-modernize-use-emplace
clang-tidy: Apply modernize-use-emplace.
2020-04-07 17:28:50 +02:00
Alexander Arlt
cae6e7769f Apply modernize-use-override. 2020-04-02 18:00:44 -05:00
Alexander Arlt
90bb1d8a7c Apply modernize-use-emplace. 2020-04-02 17:35:48 -05:00
chriseth
a3d5af30c6 Mention ControlFlowSideEffects explicitly to ease the burden on MSVC. 2020-03-10 12:55:23 +01:00
Daniel Kirchner
809e3503ba Control flow analysis for inline assembly. 2020-03-09 16:23:10 +01:00
chriseth
bddbcbe6a4 Use bool type in word size transform. 2020-02-24 15:05:19 +01:00
chriseth
6b272faec0 Some wasm related type fixes. 2020-02-24 15:05:19 +01:00
chriseth
e728cd76b6 Introduce typed named functions to dialect. 2020-02-24 15:05:19 +01:00
chriseth
4644d4616f Fix builtin function types for typed evm dialect. 2020-02-11 17:17:41 +01:00
chriseth
48933df18d Add some missing wasm functions. 2020-02-04 22:44:08 +01:00
chriseth
c41ef15a86 Fix types for polyfill. 2020-02-04 22:44:08 +01:00
chriseth
8f546849f2 Add i32 functions to wasm dialect. 2020-02-04 22:44:08 +01:00
chriseth
d3739fe620 Fix WordSizeTransform to properly assign default types. 2020-02-04 18:13:37 +01:00
chriseth
9f0cef97c2 Specify default type for word size transform externally. 2020-02-04 18:13:37 +01:00
chriseth
7496598b5a
Merge pull request #8155 from ethereum/removeStackHeightChecks
Remove stack height checks.
2020-02-03 12:28:37 +01:00
chriseth
2bcdb24ebe Cause failing assertion for invalid u256 to bool conversion. 2020-01-29 19:01:28 +01:00
chriseth
db33ff6408 Clean up built-in instructions. 2020-01-29 19:01:28 +01:00
chriseth
fbe5bb0cce Parse default dialect and omit when printing. 2020-01-29 17:25:25 +01:00
chriseth
90c98a3289 Introduce typed EVM dialect. 2020-01-29 17:25:25 +01:00