Fix retval order #6
Open
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Normally, when invoking an ECALL, we first need to line up two arguments,
eid
andretval
, to obtain the result of the ECALL from an untrusted environment. However, the current definition of the macroenclave!
does not support using ECALL appropriately, effectively rendering the first argument other thaneid
andretval
unusable within the enclave.For example, consider the following function defined within the trusted block of
enclave.edl
:After macro expansion, the generated code running in the untrusted environment would incorrectly attempt to invoke this function as
ecall_test(eid, a, b, retval)
. The correct invocation should beecall_test(eid, retval, a, b)
.This issue did not manifest previously when ECALLs did not include any user-defined arguments, resulting in invocations such as
f(eid, retval)
.These suggested changes have been validated in my project based on sgx-scaffold.