generated-offsets.c 7.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172
  1. #include <stddef.h>
  2. #include <asm/errno.h>
  3. #include "ecall_types.h"
  4. #include "ocall_types.h"
  5. #include "pal.h"
  6. #include "pal_linux.h"
  7. #include "pal_linux_defs.h"
  8. #include "pal_security.h"
  9. #include "sgx_arch.h"
  10. #include "sgx_tls.h"
  11. #include <generated-offsets-build.h>
  12. void dummy(void)
  13. {
  14. /* defines in sgx_arch.h */
  15. DEFINE(SGX_FLAGS_DEBUG, SGX_FLAGS_DEBUG);
  16. DEFINE(SGX_FLAGS_MODE64BIT, SGX_FLAGS_MODE64BIT);
  17. DEFINE(SGX_XFRM_LEGACY, SGX_XFRM_LEGACY);
  18. DEFINE(SGX_XFRM_AVX, SGX_XFRM_AVX);
  19. DEFINE(SGX_XFRM_MPX, SGX_XFRM_MPX);
  20. DEFINE(SGX_XFRM_AVX512, SGX_XFRM_AVX512);
  21. DEFINE(SGX_MISCSELECT_EXINFO, SGX_MISCSELECT_EXINFO);
  22. DEFINE(SE_KEY_SIZE, SE_KEY_SIZE);
  23. /* sgx_measurement_t */
  24. DEFINE(SGX_HASH_SIZE, sizeof(sgx_measurement_t));
  25. /* sgx_pal_gpr_t */
  26. OFFSET_T(SGX_GPR_RAX, sgx_pal_gpr_t, rax);
  27. OFFSET_T(SGX_GPR_RCX, sgx_pal_gpr_t, rcx);
  28. OFFSET_T(SGX_GPR_RDX, sgx_pal_gpr_t, rdx);
  29. OFFSET_T(SGX_GPR_RBX, sgx_pal_gpr_t, rbx);
  30. OFFSET_T(SGX_GPR_RSP, sgx_pal_gpr_t, rsp);
  31. OFFSET_T(SGX_GPR_RBP, sgx_pal_gpr_t, rbp);
  32. OFFSET_T(SGX_GPR_RSI, sgx_pal_gpr_t, rsi);
  33. OFFSET_T(SGX_GPR_RDI, sgx_pal_gpr_t, rdi);
  34. OFFSET_T(SGX_GPR_R8, sgx_pal_gpr_t, r8);
  35. OFFSET_T(SGX_GPR_R9, sgx_pal_gpr_t, r9);
  36. OFFSET_T(SGX_GPR_R10, sgx_pal_gpr_t, r10);
  37. OFFSET_T(SGX_GPR_R11, sgx_pal_gpr_t, r11);
  38. OFFSET_T(SGX_GPR_R12, sgx_pal_gpr_t, r12);
  39. OFFSET_T(SGX_GPR_R13, sgx_pal_gpr_t, r13);
  40. OFFSET_T(SGX_GPR_R14, sgx_pal_gpr_t, r14);
  41. OFFSET_T(SGX_GPR_R15, sgx_pal_gpr_t, r15);
  42. OFFSET_T(SGX_GPR_RFLAGS, sgx_pal_gpr_t, rflags);
  43. OFFSET_T(SGX_GPR_RIP, sgx_pal_gpr_t, rip);
  44. OFFSET_T(SGX_GPR_EXITINFO, sgx_pal_gpr_t, exitinfo);
  45. DEFINE(SGX_GPR_SIZE, sizeof(sgx_pal_gpr_t));
  46. /* sgx_cpu_context_t */
  47. OFFSET_T(SGX_CPU_CONTEXT_RAX, sgx_cpu_context_t, rax);
  48. OFFSET_T(SGX_CPU_CONTEXT_RCX, sgx_cpu_context_t, rcx);
  49. OFFSET_T(SGX_CPU_CONTEXT_RDX, sgx_cpu_context_t, rdx);
  50. OFFSET_T(SGX_CPU_CONTEXT_RBX, sgx_cpu_context_t, rbx);
  51. OFFSET_T(SGX_CPU_CONTEXT_RSP, sgx_cpu_context_t, rsp);
  52. OFFSET_T(SGX_CPU_CONTEXT_RBP, sgx_cpu_context_t, rbp);
  53. OFFSET_T(SGX_CPU_CONTEXT_RSI, sgx_cpu_context_t, rsi);
  54. OFFSET_T(SGX_CPU_CONTEXT_RDI, sgx_cpu_context_t, rdi);
  55. OFFSET_T(SGX_CPU_CONTEXT_R8, sgx_cpu_context_t, r8);
  56. OFFSET_T(SGX_CPU_CONTEXT_R9, sgx_cpu_context_t, r9);
  57. OFFSET_T(SGX_CPU_CONTEXT_R10, sgx_cpu_context_t, r10);
  58. OFFSET_T(SGX_CPU_CONTEXT_R11, sgx_cpu_context_t, r11);
  59. OFFSET_T(SGX_CPU_CONTEXT_R12, sgx_cpu_context_t, r12);
  60. OFFSET_T(SGX_CPU_CONTEXT_R13, sgx_cpu_context_t, r13);
  61. OFFSET_T(SGX_CPU_CONTEXT_R14, sgx_cpu_context_t, r14);
  62. OFFSET_T(SGX_CPU_CONTEXT_R15, sgx_cpu_context_t, r15);
  63. OFFSET_T(SGX_CPU_CONTEXT_RFLAGS, sgx_cpu_context_t, rflags);
  64. OFFSET_T(SGX_CPU_CONTEXT_RIP, sgx_cpu_context_t, rip);
  65. DEFINE(SGX_CPU_CONTEXT_SIZE, sizeof(sgx_cpu_context_t));
  66. DEFINE(SGX_CPU_CONTEXT_XSTATE_ALIGN_SUB,
  67. sizeof(sgx_cpu_context_t) % PAL_XSTATE_ALIGN);
  68. /* struct enclave_tls */
  69. OFFSET(SGX_COMMON_SELF, enclave_tls, common.self);
  70. OFFSET(SGX_ENCLAVE_SIZE, enclave_tls, enclave_size);
  71. OFFSET(SGX_TCS_OFFSET, enclave_tls, tcs_offset);
  72. OFFSET(SGX_INITIAL_STACK_OFFSET, enclave_tls, initial_stack_offset);
  73. OFFSET(SGX_TMP_RIP, enclave_tls, tmp_rip);
  74. OFFSET(SGX_ECALL_RETURN_ADDR, enclave_tls, ecall_return_addr);
  75. OFFSET(SGX_SIG_STACK_LOW, enclave_tls, sig_stack_low);
  76. OFFSET(SGX_SIG_STACK_HIGH, enclave_tls, sig_stack_high);
  77. OFFSET(SGX_SSA, enclave_tls, ssa);
  78. OFFSET(SGX_GPR, enclave_tls, gpr);
  79. OFFSET(SGX_EXIT_TARGET, enclave_tls, exit_target);
  80. OFFSET(SGX_FSBASE, enclave_tls, fsbase);
  81. OFFSET(SGX_PRE_OCALL_STACK, enclave_tls, pre_ocall_stack);
  82. OFFSET(SGX_USTACK_TOP, enclave_tls, ustack_top);
  83. OFFSET(SGX_USTACK, enclave_tls, ustack);
  84. OFFSET(SGX_THREAD, enclave_tls, thread);
  85. OFFSET(SGX_OCALL_EXIT_CALLED, enclave_tls, ocall_exit_called);
  86. OFFSET(SGX_THREAD_STARTED, enclave_tls, thread_started);
  87. OFFSET(SGX_READY_FOR_EXCEPTIONS, enclave_tls, ready_for_exceptions);
  88. OFFSET(SGX_MANIFEST_SIZE, enclave_tls, manifest_size);
  89. OFFSET(SGX_HEAP_MIN, enclave_tls, heap_min);
  90. OFFSET(SGX_HEAP_MAX, enclave_tls, heap_max);
  91. OFFSET(SGX_EXEC_ADDR, enclave_tls, exec_addr);
  92. OFFSET(SGX_EXEC_SIZE, enclave_tls, exec_size);
  93. OFFSET(SGX_CLEAR_CHILD_TID, enclave_tls, clear_child_tid);
  94. /* struct pal_tcb_urts aka PAL_TCB_URTS */
  95. OFFSET(PAL_TCB_URTS_TCS, pal_tcb_urts, tcs);
  96. /* sgx_arch_tcs_t */
  97. OFFSET_T(TCS_FLAGS, sgx_arch_tcs_t, flags);
  98. OFFSET_T(TCS_OSSA, sgx_arch_tcs_t, ossa);
  99. OFFSET_T(TCS_CSSA, sgx_arch_tcs_t, cssa);
  100. OFFSET_T(TCS_NSSA, sgx_arch_tcs_t, nssa);
  101. OFFSET_T(TCS_OENTRY, sgx_arch_tcs_t, oentry);
  102. OFFSET_T(TCS_OFS_BASE, sgx_arch_tcs_t, ofs_base);
  103. OFFSET_T(TCS_OGS_BASE, sgx_arch_tcs_t, ogs_base);
  104. OFFSET_T(TCS_OFS_LIMIT, sgx_arch_tcs_t, ofs_limit);
  105. OFFSET_T(TCS_OGS_LIMIT, sgx_arch_tcs_t, ogs_limit);
  106. DEFINE(TCS_SIZE, sizeof(sgx_arch_tcs_t));
  107. /* sgx_attributes_t */
  108. OFFSET_T(SGX_ATTRIBUTES_XFRM, sgx_attributes_t, xfrm);
  109. /* sgx_arch_enclave_css_t */
  110. OFFSET_T(SGX_ARCH_ENCLAVE_CSS_HEADER, sgx_arch_enclave_css_t, header.header);
  111. OFFSET_T(SGX_ARCH_ENCLAVE_CSS_TYPE, sgx_arch_enclave_css_t, header.type);
  112. OFFSET_T(SGX_ARCH_ENCLAVE_CSS_MODULE_VENDOR, sgx_arch_enclave_css_t, header.module_vendor);
  113. OFFSET_T(SGX_ARCH_ENCLAVE_CSS_DATE, sgx_arch_enclave_css_t, header.date);
  114. OFFSET_T(SGX_ARCH_ENCLAVE_CSS_HEADER2, sgx_arch_enclave_css_t, header.header2);
  115. OFFSET_T(SGX_ARCH_ENCLAVE_CSS_HW_VERSION, sgx_arch_enclave_css_t, header.hw_version);
  116. OFFSET_T(SGX_ARCH_ENCLAVE_CSS_MODULUS, sgx_arch_enclave_css_t, key.modulus);
  117. OFFSET_T(SGX_ARCH_ENCLAVE_CSS_EXPONENT, sgx_arch_enclave_css_t, key.exponent);
  118. OFFSET_T(SGX_ARCH_ENCLAVE_CSS_SIGNATURE, sgx_arch_enclave_css_t, key.signature);
  119. OFFSET_T(SGX_ARCH_ENCLAVE_CSS_MISC_SELECT, sgx_arch_enclave_css_t, body.misc_select);
  120. OFFSET_T(SGX_ARCH_ENCLAVE_CSS_MISC_MASK, sgx_arch_enclave_css_t, body.misc_mask);
  121. OFFSET_T(SGX_ARCH_ENCLAVE_CSS_ISV_FAMILY_ID, sgx_arch_enclave_css_t, body.isv_family_id);
  122. OFFSET_T(SGX_ARCH_ENCLAVE_CSS_ATTRIBUTES, sgx_arch_enclave_css_t, body.attributes);
  123. OFFSET_T(SGX_ARCH_ENCLAVE_CSS_ATTRIBUTE_MASK, sgx_arch_enclave_css_t, body.attribute_mask);
  124. OFFSET_T(SGX_ARCH_ENCLAVE_CSS_ENCLAVE_HASH, sgx_arch_enclave_css_t, body.enclave_hash);
  125. OFFSET_T(SGX_ARCH_ENCLAVE_CSS_ISVEXT_PROD_ID, sgx_arch_enclave_css_t, body.isvext_prod_id);
  126. OFFSET_T(SGX_ARCH_ENCLAVE_CSS_ISV_PROD_ID, sgx_arch_enclave_css_t, body.isv_prod_id);
  127. OFFSET_T(SGX_ARCH_ENCLAVE_CSS_ISV_SVN, sgx_arch_enclave_css_t, body.isv_svn);
  128. OFFSET_T(SGX_ARCH_ENCLAVE_CSS_Q1, sgx_arch_enclave_css_t, buffer.q1);
  129. OFFSET_T(SGX_ARCH_ENCLAVE_CSS_Q2, sgx_arch_enclave_css_t, buffer.q2);
  130. DEFINE(SGX_ARCH_ENCLAVE_CSS_SIZE, sizeof(sgx_arch_enclave_css_t));
  131. /* struct pal_sec */
  132. OFFSET(PAL_SEC_ENCLAVE_ATTRIBUTES, pal_sec, enclave_attributes);
  133. /* pal_linux_def.h */
  134. DEFINE(ENCLAVE_HIGH_ADDRESS, ENCLAVE_HIGH_ADDRESS);
  135. DEFINE(SSAFRAMENUM, SSAFRAMENUM);
  136. DEFINE(MEMORY_GAP, MEMORY_GAP);
  137. DEFINE(ENCLAVE_STACK_SIZE, ENCLAVE_STACK_SIZE);
  138. DEFINE(ENCLAVE_SIG_STACK_SIZE, ENCLAVE_SIG_STACK_SIZE);
  139. DEFINE(DEFAULT_HEAP_MIN, DEFAULT_HEAP_MIN);
  140. /* pal_linux.h */
  141. DEFINE(PAGESIZE, PRESET_PAGESIZE);
  142. /* errno */
  143. DEFINE(EINTR, EINTR);
  144. /* Ecall numbers */
  145. DEFINE(ECALL_ENCLAVE_START, ECALL_ENCLAVE_START);
  146. DEFINE(ECALL_THREAD_START, ECALL_THREAD_START);
  147. DEFINE(ECALL_THREAD_RESET, ECALL_THREAD_RESET);
  148. /* Ocall Index */
  149. DEFINE(OCALL_EXIT, OCALL_EXIT);
  150. /* fp regs */
  151. OFFSET_T(XSAVE_HEADER_OFFSET, PAL_XREGS_STATE, header);
  152. DEFINE(PAL_XSTATE_ALIGN, PAL_XSTATE_ALIGN);
  153. DEFINE(PAL_FP_XSTATE_MAGIC2_SIZE, PAL_FP_XSTATE_MAGIC2_SIZE);
  154. }