Index: core/arch/arm/arm.asm |
diff --git a/core/arch/arm/arm.asm b/core/arch/arm/arm.asm |
index 5586d40688680a9abe75b7b930168b132a993649..b8401f150ad488fcd1e4c73ec67ea0a503365337 100644 |
--- a/core/arch/arm/arm.asm |
+++ b/core/arch/arm/arm.asm |
@@ -56,6 +56,23 @@ GLOBAL_LABEL(FUNCNAME:) |
# error AArch64 is not supported |
#endif |
+/****************************************************************************/ |
+#ifndef NOT_DYNAMORIO_CORE_PROPER |
+/****************************************************************************/ |
+ |
+#ifdef UNIX |
+# if !defined(STANDALONE_UNIT_TEST) && !defined(STATIC_LIBRARY) |
+ DECLARE_FUNC(_start) |
+GLOBAL_LABEL(_start:) |
+ bl GLOBAL_REF(unexpected_return) |
+ END_FUNC(_start) |
+# endif /* !STANDALONE_UNIT_TEST && !STATIC_LIBRARY */ |
+#endif /* UNIX */ |
+ |
+/****************************************************************************/ |
+#endif /* !NOT_DYNAMORIO_CORE_PROPER */ |
+/****************************************************************************/ |
+ |
/* To avoid libc wrappers we roll our own syscall here. |
* Hardcoded to use svc/swi for 32-bit -- FIXME: use something like do_syscall |
* signature: dynamorio_syscall(sys_num, num_args, arg1, arg2, ...) |
@@ -165,8 +182,11 @@ GLOBAL_LABEL(global_do_syscall_int:) |
svc #0 |
END_FUNC(global_do_syscall_int) |
+DECLARE_GLOBAL(safe_read_asm_recover) |
+ |
DECLARE_FUNC(safe_read_asm) |
GLOBAL_LABEL(safe_read_asm:) |
+ADDRTAKEN_LABEL(safe_read_asm_recover:) |
bl GLOBAL_REF(unexpected_return) |
END_FUNC(safe_read_asm) |
@@ -207,7 +227,27 @@ GLOBAL_LABEL(our_cpuid:) |
#endif /* CLIENT_INTERFACE */ |
+#ifdef UNIX |
+ DECLARE_FUNC(client_int_syscall) |
+GLOBAL_LABEL(client_int_syscall:) |
+ svc #0 |
+ blx lr |
+ END_FUNC(client_int_syscall) |
+ |
+ DECLARE_FUNC(native_plt_call) |
+GLOBAL_LABEL(native_plt_call:) |
+ bl GLOBAL_REF(unexpected_return) |
+ END_FUNC(native_plt_call) |
+ |
+ DECLARE_FUNC(_dynamorio_runtime_resolve) |
+GLOBAL_LABEL(_dynamorio_runtime_resolve:) |
+ bl GLOBAL_REF(unexpected_return) |
+ END_FUNC(_dynamorio_runtime_resolve) |
+ |
+#endif /* UNIX */ |
+ |
#ifdef LINUX |
+ |
DECLARE_FUNC(dynamorio_clone) |
GLOBAL_LABEL(dynamorio_clone:) |
mov r0, #0 |
@@ -239,4 +279,16 @@ GLOBAL_LABEL(hashlookup_null_handler:) |
bl GLOBAL_REF(unexpected_return) |
END_FUNC(hashlookup_null_handler) |
+ DECLARE_FUNC(back_from_native_retstubs) |
+GLOBAL_LABEL(back_from_native_retstubs:) |
+DECLARE_GLOBAL(back_from_native_retstubs_end) |
+ADDRTAKEN_LABEL(back_from_native_retstubs_end:) |
+ bl GLOBAL_REF(unexpected_return) |
+ END_FUNC(back_from_native_retstubs) |
+ |
+ DECLARE_FUNC(back_from_native) |
+GLOBAL_LABEL(back_from_native:) |
+ bl GLOBAL_REF(unexpected_return) |
+ END_FUNC(back_from_native) |
+ |
END_FILE |