Browse Source

[Pal/Linux-SGX] Don't get PAL load address and name from urts

Part of issue #509.
Simon Gaiser 6 years ago
parent
commit
d11ad5e809

+ 2 - 2
Pal/src/host/Linux-SGX/db_main.c

@@ -133,8 +133,8 @@ void pal_linux_main(const char ** arguments, const char ** environments,
     int rv;
 
     /* relocate PAL itself */
-    pal_map.l_addr = (ElfW(Addr)) sec_info->enclave_addr;
-    pal_map.l_name = sec_info->enclave_image;
+    pal_map.l_addr = elf_machine_load_address();
+    pal_map.l_name = ENCLAVE_FILENAME;
     elf_get_dynamic_info((void *) pal_map.l_addr + elf_machine_dynamic(),
                          pal_map.l_info, pal_map.l_addr);
 

+ 2 - 0
Pal/src/host/Linux-SGX/pal_linux.h

@@ -35,6 +35,8 @@
 # include "sysdep-x86_64.h"
 #endif
 
+#define ENCLAVE_FILENAME RUNTIME_FILE("libpal-Linux-SGX.so")
+
 #define IS_ERR INTERNAL_SYSCALL_ERROR
 #define IS_ERR_P INTERNAL_SYSCALL_ERROR_P
 #define ERRNO INTERNAL_SYSCALL_ERRNO

+ 0 - 4
Pal/src/host/Linux-SGX/pal_security.h

@@ -30,10 +30,6 @@ struct pal_sec {
     PAL_NUM         instance_id;
     PAL_IDX         ppid, pid, uid, gid;
 
-    /* file name of enclave image */
-    PAL_PTR         enclave_addr;
-    PAL_SEC_STR     enclave_image;
-
     /* enclave information */
     sgx_arch_hash_t         mrenclave;
     sgx_arch_hash_t         mrsigner;

+ 0 - 7
Pal/src/host/Linux-SGX/sgx_main.c

@@ -18,8 +18,6 @@
 #include <sysdep.h>
 #include <sysdeps/generic/ldsodefs.h>
 
-#define ENCLAVE_FILENAME RUNTIME_FILE("libpal-Linux-SGX.so")
-
 unsigned long pagesize  = PRESET_PAGESIZE;
 unsigned long pagemask  = ~(PRESET_PAGESIZE - 1);
 unsigned long pageshift = PRESET_PAGESIZE - 1;
@@ -467,8 +465,6 @@ int initialize_enclave (struct pal_enclave * enclave)
 
     struct pal_sec * pal_sec = &enclave->pal_sec;
 
-    pal_sec->enclave_addr = (PAL_PTR) (enclave_secs.baseaddr + pal_area->addr);
-
     pal_sec->heap_min = (void *) enclave_secs.baseaddr + heap_min;
     pal_sec->heap_max = (void *) enclave_secs.baseaddr + pal_area->addr - MEMORY_GAP;
 
@@ -771,9 +767,6 @@ static int load_enclave (struct pal_enclave * enclave,
     if (ret < 0)
         return ret;
 
-    snprintf(pal_sec->enclave_image,  sizeof(PAL_SEC_STR), "%s",
-             ENCLAVE_FILENAME);
-
     if (!pal_sec->instance_id)
         create_instance(&enclave->pal_sec);