selftests/sgx: Dump enclave memory map
authorJarkko Sakkinen <jarkko@kernel.org>
Thu, 10 Jun 2021 08:30:19 +0000 (11:30 +0300)
committerShuah Khan <skhan@linuxfoundation.org>
Tue, 15 Jun 2021 22:27:07 +0000 (16:27 -0600)
Often, it's useful to check whether /proc/self/maps looks sane when
dealing with memory mapped objects, especially when they are JIT'ish
dynamically constructed objects. Therefore, dump "/dev/sgx_enclave"
matching lines from the memory map in FIXTURE_SETUP().

Signed-off-by: Jarkko Sakkinen <jarkko@kernel.org>
Signed-off-by: Shuah Khan <skhan@linuxfoundation.org>
tools/testing/selftests/sgx/main.c

index 6da19b6..14030f8 100644 (file)
@@ -117,6 +117,8 @@ FIXTURE_SETUP(enclave)
        Elf64_Sym *sgx_enter_enclave_sym = NULL;
        struct vdso_symtab symtab;
        struct encl_segment *seg;
+       char maps_line[256];
+       FILE *maps_file;
        unsigned int i;
        void *addr;
 
@@ -167,6 +169,18 @@ FIXTURE_SETUP(enclave)
        memset(&self->run, 0, sizeof(self->run));
        self->run.tcs = self->encl.encl_base;
 
+       maps_file = fopen("/proc/self/maps", "r");
+       if (maps_file != NULL)  {
+               while (fgets(maps_line, sizeof(maps_line), maps_file) != NULL) {
+                       maps_line[strlen(maps_line) - 1] = '\0';
+
+                       if (strstr(maps_line, "/dev/sgx_enclave"))
+                               TH_LOG("%s", maps_line);
+               }
+
+               fclose(maps_file);
+       }
+
 err:
        if (!sgx_enter_enclave_sym)
                encl_delete(&self->encl);