selftests/sgx: Add EXPECT_EEXIT() macro
authorJarkko Sakkinen <jarkko@kernel.org>
Thu, 10 Jun 2021 08:30:20 +0000 (11:30 +0300)
committerShuah Khan <skhan@linuxfoundation.org>
Tue, 15 Jun 2021 22:27:16 +0000 (16:27 -0600)
Add EXPECT_EEXIT() macro, which will conditionally print the exception
information, in addition to

  EXPECT_EQ(self->run.function, EEXIT);

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

index 14030f8..bcd0257 100644 (file)
@@ -205,6 +205,14 @@ FIXTURE_TEARDOWN(enclave)
                ret; \
        })
 
+#define EXPECT_EEXIT(run) \
+       do { \
+               EXPECT_EQ((run)->function, EEXIT); \
+               if ((run)->function != EEXIT) \
+                       TH_LOG("0x%02x 0x%02x 0x%016llx", (run)->exception_vector, \
+                              (run)->exception_error_code, (run)->exception_addr); \
+       } while (0)
+
 TEST_F(enclave, unclobbered_vdso)
 {
        uint64_t result = 0;
@@ -212,7 +220,7 @@ TEST_F(enclave, unclobbered_vdso)
        EXPECT_EQ(ENCL_CALL(&MAGIC, &result, &self->run, false), 0);
 
        EXPECT_EQ(result, MAGIC);
-       EXPECT_EQ(self->run.function, EEXIT);
+       EXPECT_EEXIT(&self->run);
        EXPECT_EQ(self->run.user_data, 0);
 }
 
@@ -223,7 +231,7 @@ TEST_F(enclave, clobbered_vdso)
        EXPECT_EQ(ENCL_CALL(&MAGIC, &result, &self->run, true), 0);
 
        EXPECT_EQ(result, MAGIC);
-       EXPECT_EQ(self->run.function, EEXIT);
+       EXPECT_EEXIT(&self->run);
        EXPECT_EQ(self->run.user_data, 0);
 }
 
@@ -245,7 +253,7 @@ TEST_F(enclave, clobbered_vdso_and_user_function)
        EXPECT_EQ(ENCL_CALL(&MAGIC, &result, &self->run, true), 0);
 
        EXPECT_EQ(result, MAGIC);
-       EXPECT_EQ(self->run.function, EEXIT);
+       EXPECT_EEXIT(&self->run);
        EXPECT_EQ(self->run.user_data, 0);
 }