Upgrade to evmc 10.1.0

This commit is contained in:
Alex Beregszaszi 2023-04-23 15:50:16 +02:00
parent b75bddbd11
commit ee92491aae
5 changed files with 38 additions and 17 deletions

View File

@ -1,5 +1,5 @@
# EVMC
This is an import of [EVMC](https://github.com/ethereum/evmc) version [10.0.0](https://github.com/ethereum/evmc/releases/tag/v10.0.0).
This is an import of [EVMC](https://github.com/ethereum/evmc) version [10.1.0](https://github.com/ethereum/evmc/releases/tag/v10.1.0).
Important: The `MockedAccount.storage` is changed to a map from unordered_map as ordering is important for fuzzing.
Important: The `MockedAccount.storage` is changed to a `map` from `unordered_map` as ordering is important for fuzzing.

View File

@ -412,20 +412,21 @@ struct evmc_result
/**
* The reference to output data.
*
* The output contains data coming from RETURN opcode (iff evmc_result::code
* field is ::EVMC_SUCCESS) or from REVERT opcode.
* The output contains data coming from RETURN opcode (iff evmc_result::code
* field is ::EVMC_SUCCESS) or from REVERT opcode.
*
* The memory containing the output data is owned by EVM and has to be
* freed with evmc_result::release().
* The memory containing the output data is owned by EVM and has to be
* freed with evmc_result::release().
*
* This MAY be NULL.
* This pointer MAY be NULL.
* If evmc_result::output_size is 0 this pointer MUST NOT be dereferenced.
*/
const uint8_t* output_data;
/**
* The size of the output data.
*
* If output_data is NULL this MUST be 0.
* If evmc_result::output_data is NULL this MUST be 0.
*/
size_t output_size;
@ -463,13 +464,13 @@ struct evmc_result
/**
* Reserved data that MAY be used by a evmc_result object creator.
*
* This reserved 4 bytes together with 20 bytes from create_address form
* 24 bytes of memory called "optional data" within evmc_result struct
* to be optionally used by the evmc_result object creator.
* This reserved 4 bytes together with 20 bytes from create_address form
* 24 bytes of memory called "optional data" within evmc_result struct
* to be optionally used by the evmc_result object creator.
*
* @see evmc_result_optional_data, evmc_get_optional_data().
* @see evmc_result_optional_data, evmc_get_optional_data().
*
* Also extends the size of the evmc_result to 64 bytes (full cache line).
* Also extends the size of the evmc_result to 64 bytes (full cache line).
*/
uint8_t padding[4];
};
@ -963,18 +964,26 @@ enum evmc_revision
* The Cancun revision.
*
* The future next revision after Shanghai.
* https://github.com/ethereum/execution-specs/blob/master/network-upgrades/mainnet-upgrades/cancun.md
*/
EVMC_CANCUN = 12,
/**
* The Prague revision.
*
* The future next revision after Cancun.
*/
EVMC_PRAGUE = 13,
/** The maximum EVM revision supported. */
EVMC_MAX_REVISION = EVMC_CANCUN,
EVMC_MAX_REVISION = EVMC_PRAGUE,
/**
* The latest known EVM revision with finalized specification.
*
* This is handy for EVM tools to always use the latest revision available.
*/
EVMC_LATEST_STABLE_REVISION = EVMC_LONDON
EVMC_LATEST_STABLE_REVISION = EVMC_SHANGHAI
};
@ -1111,7 +1120,7 @@ struct evmc_vm
/**
* Optional pointer to function modifying VM's options.
*
* If the VM does not support this feature the pointer can be NULL.
* If the VM does not support this feature the pointer can be NULL.
*/
evmc_set_option_fn set_option;
};

View File

@ -414,6 +414,12 @@ public:
return *this;
}
/// Access the result object as a referenced to ::evmc_result.
evmc_result& raw() noexcept { return *this; }
/// Access the result object as a const referenced to ::evmc_result.
const evmc_result& raw() const noexcept { return *this; }
/// Releases the ownership and returns the raw copy of evmc_result.
///
/// This method drops the ownership of the result

View File

@ -20,9 +20,11 @@
#ifdef __cplusplus
extern "C" {
#ifdef __GNUC__
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wold-style-cast"
#endif
#endif
/**
* Returns true if the VM has a compatible ABI version.
@ -297,6 +299,8 @@ static inline const char* evmc_revision_to_string(enum evmc_revision rev)
return "Shanghai";
case EVMC_CANCUN:
return "Cancun";
case EVMC_PRAGUE:
return "Prague";
}
return "<unknown>";
}
@ -304,6 +308,8 @@ static inline const char* evmc_revision_to_string(enum evmc_revision rev)
/** @} */
#ifdef __cplusplus
#ifdef __GNUC__
#pragma GCC diagnostic pop
#endif
} // extern "C"
#endif

View File

@ -6,8 +6,8 @@
#include <evmc/evmc.hpp>
#include <algorithm>
#include <cassert>
#include <string>
#include <map>
#include <string>
#include <unordered_map>
#include <vector>