Processed review comments
diff --git a/src/librustc_target/spec/x86_64_fortanix_unknown_sgx.rs b/src/librustc_target/spec/x86_64_fortanix_unknown_sgx.rs
index 3d590a5..2c9ba9f 100644
--- a/src/librustc_target/spec/x86_64_fortanix_unknown_sgx.rs
+++ b/src/librustc_target/spec/x86_64_fortanix_unknown_sgx.rs
@@ -29,7 +29,6 @@
];
const EXPORT_SYMBOLS: &[&str] = &[
- "elf_entry",
"sgx_entry",
"HEAP_BASE",
"HEAP_SIZE",
diff --git a/src/libstd/sys/sgx/abi/entry.S b/src/libstd/sys/sgx/abi/entry.S
index a11eb18..ca2848c 100644
--- a/src/libstd/sys/sgx/abi/entry.S
+++ b/src/libstd/sys/sgx/abi/entry.S
@@ -109,19 +109,29 @@
.section .text_no_sgx, "ax"
.Lelf_entry_error_msg:
.ascii "Error: This file is an SGX enclave which cannot be executed as a standard Linux binary.\nSee the installation guide at https://edp.fortanix.com/docs/installation/guide/ on how to use 'cargo run' or follow the steps at https://edp.fortanix.com/docs/tasks/deployment/ for manual deployment.\n"
+.Lelf_entry_error_msg_end:
+
.global elf_entry
.type elf_entry,function
elf_entry:
/* print error message */
- movq $1, %rax /* write() syscall */
- movq $2, %rdi /* write to stderr */
- lea .Lelf_entry_error_msg(%rip), %rsi
- movq $288, %rdx /* num chars to write */
+ movq $1,%rax /* write() syscall */
+ movq $2,%rdi /* write to stderr (fd 2) */
+ lea .Lelf_entry_error_msg(%rip),%rsi
+ movq $.Lelf_entry_error_msg_end-.Lelf_entry_error_msg,%rdx
+.Lelf_entry_call:
syscall
-
- movq $60, %rax /* exit() syscall */
- movq $0, %rdi /* error code */
+ test %rax,%rax
+ jle .Lelf_exit /* exit on error */
+ add %rax,%rsi
+ sub %rax,%rdx /* all chars written? */
+ jnz .Lelf_entry_call
+
+.Lelf_exit:
+ movq $60,%rax /* exit() syscall */
+ movq $1,%rdi /* exit code 1 */
syscall
+ ud2 /* should not be reached */
/* end elf_entry */
.text