Fix Wrong Arithmetic When Computing Guest Code Size #99
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.
Description
This PR closes #98
The
ElfInfo::get_va_size()
function is used for determining the size of thegest_code
slot during the construction of the sand memory layout.This function calculates the size based on the loadable program headers, which represent the size of the ELF binary when loaded into memory.
Although the current implementation works, it does not account for guest binaries that have non-loadable segments which still occupy memory at runtime, such as the BSS segment. As a result, the size computation for these binaries will be incorrect.
To fix this, we should consider arithmetic on sections that are tagged as
SHF_ALLOC
. From the ELF Specification [1]: