 +    local:
 +        *;
 +};
-diff -Nur /dev/null runtime_support/rts_config.h
---- /dev/null
-+++ runtime_support/rts_config.h
-@@ -0,0 +1,23 @@
-+#ifndef _RUNTIME_SUPPORT_RTS_CONFIG_H_
-+#define _RUNTIME_SUPPORT_RTS_CONFIG_H_
-+
-+#include <string.h>
-+
-+#ifndef _ERNNO_T_DEFINED
-+#define _ERRNO_T_DEFINED
-+typedef int errno_t;
-+#endif
-+
-+#ifdef __cplusplus
-+extern "C" {
-+#endif
-+
-+errno_t memset_s(void *s, size_t smax, int c, size_t n);
-+
-+int consttime_memequal(const void *b1, const void *b2, size_t len);
-+
-+#ifdef __cplusplus
-+}
-+#endif
-+
-+#endif  // _RUNTIME_SUPPORT_RTS_CONFIG_H_
-diff -Nur /dev/null runtime_support/sgx_init_string_lib.c
---- /dev/null
-+++ runtime_support/sgx_init_string_lib.c
-@@ -0,0 +1,8 @@
-+
-+#include <stdint.h>
-+
-+int __NR_rt_sigprocmask;
-+
-+int sgx_init_string_lib(uint64_t cpu_feature_indicator) {
-+  return 0;
-+}
-diff -Nur /dev/null runtime_support/sgx_init_crypto_lib.c
---- /dev/null
-+++ runtime_support/sgx_init_crypto_lib.c
-@@ -0,0 +1,10 @@
-+
-+#include <stdint.h>
-+
-+#include "sgx_error.h"
-+
-+sgx_status_t sgx_init_crypto_lib(uint64_t cpu_feature_indicator,
-+                                 uint32_t *cpuid_table) {
-+  return SGX_SUCCESS;
-+}
-+
 diff -Nur /dev/null include/global_data.h
 --- /dev/null
 +++ include/global_data.h

+#include "common/inc/sgx_urts.h"  // IWYU pragma: export
+
+#endif  // _INCLUDE_SGX_URTS_H_
diff -Nur /dev/null external/rdrand/src/config.h
--- /dev/null
+++ external/rdrand/src/config.h

+    unsigned_enclave = sgx_unsigned_enclave,
+    signed_enclave = sgx_signed_enclave,
+)
diff -Nur /dev/null debug_key_mrsigner.cc
--- /dev/null
+++ debug_key_mrsigner.cc
@@ -0,0 +1,18 @@
+#include "debug_key_mrsigner.h"
+
+namespace linux_sgx {
+
+// To generate this constant from enclave_test_private.pem, run the following
+// command:
+// openssl rsa -in enclave_test_private.pem -modulus -noout \
+// | sed -e 's/Modulus=//' | xxd -r -p - \
+// | perl -077e 'print scalar reverse <>' \
+// | sha256sum
+const char *const kDebugKeyMrsignerHex =
+    "83d719e77deaca1470f6baf62a4d774303c899db69020f9c70ee1dfc08c7ce9e";
+
+const char *const kDebugKeyMrsignerTextProto = R"pb(
+  hash: "\x83\xd7\x19\xe7\x7d\xea\xca\x14\x70\xf6\xba\xf6\x2a\x4d\x77\x43\x03\xc8\x99\xdb\x69\x02\x0f\x9c\x70\xee\x1d\xfc\x08\xc7\xce\x9e"
+)pb";
+
+}  // namespace linux_sgx
diff -Nur /dev/null debug_key_mrsigner.h
--- /dev/null
+++ debug_key_mrsigner.h
@@ -0,0 +1,14 @@
+#ifndef _DEBUG_KEY_MRSIGNER_H_
+#define _DEBUG_KEY_MRSIGNER_H_
+
+namespace linux_sgx {
+
+// Hex-encoded constant representing the MRSIGNER value for enclaves signed
+// using the debug signing key.
+extern const char *const kDebugKeyMrsignerHex;
+
+extern const char *const kDebugKeyMrsignerTextProto;
+
+}  // namespace linux_sgx
+
+#endif  // _DEBUG_KEY_MRSIGNER_H_
diff -Nur /dev/null enclave_sim.lds
--- /dev/null
+++ enclave_sim.lds
