ENTRY(_start) PHDRS { rodata PT_LOAD FILEHDR PHDRS; data PT_LOAD; text PT_LOAD; dynamic PT_DYNAMIC; note PT_NOTE; stk0 PT_LOAD; tcs0 PT_LOAD FLAGS(1 << 20); /* sallyport::elf::pf::sgx::TCS */ ssa0 PT_LOAD; exec 0x63400000 FLAGS(0); /* sallyport::elf::pt::EXEC */ } SECTIONS { HIDDEN(ENARX_SHIM_ADDRESS = .); . = SIZEOF_HEADERS; . = ALIGN(4K); .rodata : { *(.rodata .rodata.*) } :rodata .dynsym : { *(.dynsym) } :rodata .dynstr : { *(.dynstr) } :rodata .gnu.hash : { *(.gnu.hash) } :rodata .hash : { *(.hash) } :rodata .note : { *(.note) } :rodata :note . = ALIGN(4K); .data.rel.ro : { *(.data.rel.ro .data.rel.ro.*) } :data .dynamic : { *(.dynamic) } :data :dynamic .data : { *(.data .data.*) } :data .rela.dyn : { *(.rela.*) } :data .got : { *(.got) } :data .bss : { *(.bss .bss.*) } :data . = ALIGN(4K); .text : { *(.text .text.*) } :text /DISCARD/ : { *(.eh_frame*) *(.note.GNU-stack) *(.gnu_debuglink) *(.interp) *(.comment) *(COMMON) *(.note.gnu.build-id) } /* THREAD */ . = ALIGN(2M); . += 4K; /* Guard Page */ .enarx.stk0 (NOLOAD) : { . += 2M - 4K * 5; } :stk0 =0 .enarx.tcs0 : { . += 16; QUAD(ADDR(.enarx.ssa0)) /* OSSA */ LONG(0) /* CSSA */ LONG(3) /* NSSA */ QUAD(_start) /* OENTRY */ . = ALIGN(4K); } :tcs0 =0 .enarx.ssa0 (NOLOAD) : { . += 4K * 3; } :ssa0 =0 /* EXEC */ . = ALIGN(1M); HIDDEN(ENARX_EXEC_START = .); .enarx.exec (NOLOAD) : { . = ALIGN(128M); } :exec =0 . = ALIGN(4K); HIDDEN(ENARX_EXEC_END = .); }