Modify build_mem_region to support an unaligned starting address. This
makes it symmetrical with regard to starting and ending partial pages;
previously, build_mem_region only support partial pages at the end of a
section (caller was responsible for handling the first page). Remove
the edge case handling of the first page from build_sections now that
build_mem_region does not have alignment restrictions.
Change the section_info_t parameter in build_mem_region to be a const
reference to eliminate any need to check for a null pointer.
Make the raw_data pointer in section_info_t const, as the source file's
data should never be modified. This is currently cast away via GET_PTR
in build_pages when calling into add_enclave_page; the add_enclave_page
flow can be modified by a future commit to retain the const modifier.
Add two utilities, is_relocation_page and build_partial_page, to reduce
copy-paste code.
Add PAGE_OFFSET macro to calculate the offset within a page.
Assert on address/size alignment in build_pages and build_context to
document expected alignment and catch any related code bugs.
Signed-off-by: Sean Christopherson <sean.j.christopherson@intel.com>
This release is used in conjunction with the linux-sgx-driver Intial release:
https://github.com/01org/linux-sgx-driver
commit-id: 0e865ce5e6b297a787bcdc12d98bada8174be6d7
Intel-id: 33399
Signed-off-by: Angie Chinchilla <angie.v.chinchilla@intel.com>