diff options
author | chriseth <chris@ethereum.org> | 2017-06-15 14:39:11 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-06-15 14:39:11 +0800 |
commit | 71fea1e370dfb2d9cb812bcd40b2f8a63ed1d5e0 (patch) | |
tree | 7da1d2982ae3343ae8842bbf32b3aeaea99c8018 | |
parent | 42b61171d981ceccd5f79af5508db92b4f2ad54b (diff) | |
parent | 66881bd675ad483ae0bba813c79257fbc30ee941 (diff) | |
download | dexon-solidity-71fea1e370dfb2d9cb812bcd40b2f8a63ed1d5e0.tar dexon-solidity-71fea1e370dfb2d9cb812bcd40b2f8a63ed1d5e0.tar.gz dexon-solidity-71fea1e370dfb2d9cb812bcd40b2f8a63ed1d5e0.tar.bz2 dexon-solidity-71fea1e370dfb2d9cb812bcd40b2f8a63ed1d5e0.tar.lz dexon-solidity-71fea1e370dfb2d9cb812bcd40b2f8a63ed1d5e0.tar.xz dexon-solidity-71fea1e370dfb2d9cb812bcd40b2f8a63ed1d5e0.tar.zst dexon-solidity-71fea1e370dfb2d9cb812bcd40b2f8a63ed1d5e0.zip |
Merge pull request #2396 from ethereum/asm-aux
Display auxiliary data in assembly
-rw-r--r-- | Changelog.md | 1 | ||||
-rw-r--r-- | libevmasm/Assembly.cpp | 10 | ||||
-rw-r--r-- | test/libsolidity/StandardCompiler.cpp | 5 |
3 files changed, 13 insertions, 3 deletions
diff --git a/Changelog.md b/Changelog.md index eed7e258..b2e080a0 100644 --- a/Changelog.md +++ b/Changelog.md @@ -2,6 +2,7 @@ Features: * Assembly: renamed ``SHA3`` to ``KECCAK256``. + * Assembly: Display auxiliary data in the assembly output. * Assembly: Add ``CREATE2`` (EIP86), ``STATICCALL`` (EIP214), ``RETURNDATASIZE`` and ``RETURNDATACOPY`` (EIP211) instructions. * AST: export all attributes to JSON format. * Inline Assembly: Present proper error message when not supplying enough arguments to a functional diff --git a/libevmasm/Assembly.cpp b/libevmasm/Assembly.cpp index ea061a30..f2a292b0 100644 --- a/libevmasm/Assembly.cpp +++ b/libevmasm/Assembly.cpp @@ -216,6 +216,9 @@ ostream& Assembly::streamAsm(ostream& _out, string const& _prefix, StringMap con } } + if (m_auxiliaryData.size() > 0) + _out << endl << _prefix << "auxdata: 0x" << toHex(m_auxiliaryData) << endl; + return _out; } @@ -315,8 +318,13 @@ Json::Value Assembly::streamAsmJson(ostream& _out, StringMap const& _sourceCodes data[hexStr.str()] = m_subs[i]->stream(_out, "", _sourceCodes, true); } root[".data"] = data; - _out << root; } + + if (m_auxiliaryData.size() > 0) + root[".auxdata"] = toHex(m_auxiliaryData); + + _out << root; + return root; } diff --git a/test/libsolidity/StandardCompiler.cpp b/test/libsolidity/StandardCompiler.cpp index 92bb471b..35644a4d 100644 --- a/test/libsolidity/StandardCompiler.cpp +++ b/test/libsolidity/StandardCompiler.cpp @@ -201,11 +201,12 @@ BOOST_AUTO_TEST_CASE(basic_compilation) BOOST_CHECK(dev::test::bytecodeSansMetadata(contract["evm"]["bytecode"]["object"].asString()) == "60606040523415600b57fe5b5b60338060196000396000f30060606040525bfe00"); BOOST_CHECK(contract["evm"]["assembly"].isString()); - BOOST_CHECK(contract["evm"]["assembly"].asString() == + BOOST_CHECK(contract["evm"]["assembly"].asString().find( " /* \"fileA\":0:14 contract A { } */\n mstore(0x40, 0x60)\n jumpi(tag_1, iszero(callvalue))\n" " invalid\ntag_1:\ntag_2:\n dataSize(sub_0)\n dup1\n dataOffset(sub_0)\n 0x0\n codecopy\n 0x0\n" " return\nstop\n\nsub_0: assembly {\n /* \"fileA\":0:14 contract A { } */\n" - " mstore(0x40, 0x60)\n tag_1:\n invalid\n}\n"); + " mstore(0x40, 0x60)\n tag_1:\n invalid\n\n" + " auxdata: 0xa165627a7a72305820") != std::string::npos); BOOST_CHECK(contract["evm"]["gasEstimates"].isObject()); BOOST_CHECK(dev::jsonCompactPrint(contract["evm"]["gasEstimates"]) == "{\"creation\":{\"codeDepositCost\":\"10200\",\"executionCost\":\"62\",\"totalCost\":\"10262\"}}"); |