linux/tools/testing/selftests/sgx
Jo Van Bulck f7884e7328 selftests/sgx: Produce static-pie executable for test enclave
The current combination of -static and -fPIC creates a static executable
with position-dependent addresses for global variables. Use -static-pie
and -fPIE to create a proper static position independent executable that
can be loaded at any address without a dynamic linker.

When building the original "lea (encl_stack)(%rbx), %rax" assembly code
with -static-pie -fPIE, the linker complains about a relocation it cannot
resolve:

/usr/local/bin/ld: /tmp/cchIWyfG.o: relocation R_X86_64_32S against
`.data' can not be used when making a PIE object; recompile with -fPIE
collect2: error: ld returned 1 exit status

Thus, since only RIP-relative addressing is legit for local symbols, use
"encl_stack(%rip)" and declare an explicit "__encl_base" symbol at the
start of the linker script to be able to calculate the stack address
relative to the current TCS in the enclave assembly entry code.

Signed-off-by: Jo Van Bulck <jo.vanbulck@cs.kuleuven.be>
Signed-off-by: Dave Hansen <dave.hansen@linux.intel.com>
Reviewed-by: Jarkko Sakkinen <jarkko@kernel.org>
Acked-by: Kai Huang <kai.huang@intel.com>
Link: https://lore.kernel.org/all/f9c24d89-ed72-7d9e-c650-050d722c6b04@cs.kuleuven.be/
Link: https://lore.kernel.org/all/20231005153854.25566-8-jo.vanbulck%40cs.kuleuven.be
2023-12-08 10:05:27 -08:00
..
.gitignore
call.S selftests/sgx: Rename 'eenter' and 'sgx_call_vdso' 2021-06-15 16:21:23 -06:00
defines.h selftests/sgx: Introduce TCS initialization enclave operation 2022-07-07 10:13:04 -07:00
load.c selftests/sgx: Fix uninitialized pointer dereferences in encl_get_entry 2023-12-08 10:05:26 -08:00
main.c selftests/sgx: Page removal stress test 2022-07-07 10:13:05 -07:00
main.h selftests/sgx: Test complete changing of page type flow 2022-07-07 10:13:04 -07:00
Makefile selftests/sgx: Produce static-pie executable for test enclave 2023-12-08 10:05:27 -08:00
sign_key.pem
sign_key.S
sigstruct.c selftests/sgx: Fix uninitialized pointer dereference in error path 2023-12-08 10:05:26 -08:00
test_encl_bootstrap.S selftests/sgx: Produce static-pie executable for test enclave 2023-12-08 10:05:27 -08:00
test_encl.c selftests/sgx: Include memory clobber for inline asm in test enclave 2023-12-08 10:05:26 -08:00
test_encl.lds selftests/sgx: Produce static-pie executable for test enclave 2023-12-08 10:05:27 -08:00