aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--generated/darwin-inject-asm.S2
-rw-r--r--generated/manual-mach.inc.h2
-rw-r--r--lib/arm64/jump-patch.h2
-rw-r--r--lib/darwin/execmem.c4
-rw-r--r--lib/darwin/manual-syscall.h9
-rw-r--r--lib/jump-dis.h2
-rw-r--r--lib/transform-dis.h2
7 files changed, 15 insertions, 8 deletions
diff --git a/generated/darwin-inject-asm.S b/generated/darwin-inject-asm.S
index 6a89f62..5a06a2b 100644
--- a/generated/darwin-inject-asm.S
+++ b/generated/darwin-inject-asm.S
@@ -25,4 +25,4 @@ _inject_start_arm:
.align 2
.globl _inject_start_arm64
_inject_start_arm64:
-.byte 0xf4, 0x4f, 0xbe, 0xa9, 0xfd, 0x7b, 0x01, 0xa9, 0xfd, 0x43, 0x00, 0x91, 0xff, 0x43, 0x00, 0xd1, 0xf3, 0x03, 0x00, 0xaa, 0xff, 0x0f, 0x00, 0xb9, 0x68, 0x02, 0x40, 0xf9, 0x01, 0x00, 0x80, 0xd2, 0x22, 0x03, 0x00, 0x10, 0x1f, 0x20, 0x03, 0xd5, 0xe0, 0x33, 0x00, 0x91, 0xe3, 0x03, 0x13, 0xaa, 0x00, 0x01, 0x3f, 0xd6, 0x68, 0x06, 0x40, 0xf9, 0xe0, 0x0f, 0x40, 0xb9, 0x00, 0x01, 0x3f, 0xd6, 0x63, 0x32, 0x40, 0xb9, 0x00, 0x00, 0x80, 0xd2, 0x01, 0x00, 0x80, 0xd2, 0x02, 0x00, 0x80, 0x52, 0x07, 0x00, 0x00, 0x94, 0xa8, 0x75, 0x81, 0xd2, 0x00, 0x01, 0x3f, 0xd6, 0xbf, 0x43, 0x00, 0xd1, 0xfd, 0x7b, 0x41, 0xa9, 0xf4, 0x4f, 0xc2, 0xa8, 0xc0, 0x03, 0x5f, 0xd6, 0x2c, 0x2d, 0x80, 0xd2, 0x01, 0x10, 0x00, 0xd4, 0xc0, 0x03, 0x5f, 0xd6, 0x6c, 0x04, 0x80, 0x92, 0x01, 0x10, 0x00, 0xd4, 0xc0, 0x03, 0x5f, 0xd6, 0xf4, 0x4f, 0xbe, 0xa9, 0xfd, 0x7b, 0x01, 0xa9, 0xfd, 0x43, 0x00, 0x91, 0xf3, 0x03, 0x00, 0xaa, 0x68, 0x0a, 0x40, 0xf9, 0x60, 0x16, 0x40, 0xf9, 0x01, 0x00, 0x80, 0x52, 0x00, 0x01, 0x3f, 0xd6, 0x40, 0x01, 0x00, 0xb4, 0x68, 0x0e, 0x40, 0xf9, 0x01, 0x02, 0x00, 0x10, 0x1f, 0x20, 0x03, 0xd5, 0x00, 0x01, 0x3f, 0xd6, 0xe8, 0x03, 0x00, 0xaa, 0x88, 0x00, 0x00, 0xb4, 0x60, 0x02, 0x01, 0x91, 0x61, 0x1e, 0x40, 0xf9, 0x00, 0x01, 0x3f, 0xd6, 0x60, 0x32, 0x40, 0xb9, 0xea, 0xff, 0xff, 0x97, 0x60, 0xc6, 0x72, 0x92, 0x62, 0x12, 0x40, 0xf9, 0xe1, 0x03, 0x73, 0xb2, 0xfd, 0x7b, 0x41, 0xa9, 0xf4, 0x4f, 0xc2, 0xa8, 0x40, 0x00, 0x1f, 0xd6, 0x73, 0x75, 0x62, 0x73, 0x74, 0x69, 0x74, 0x75, 0x74, 0x65, 0x5f, 0x69, 0x6e, 0x69, 0x74, 0x00
+.byte 0xf4, 0x4f, 0xbe, 0xa9, 0xfd, 0x7b, 0x01, 0xa9, 0xfd, 0x43, 0x00, 0x91, 0xff, 0x43, 0x00, 0xd1, 0xf3, 0x03, 0x00, 0xaa, 0xff, 0x0f, 0x00, 0xb9, 0x68, 0x02, 0x40, 0xf9, 0x01, 0x00, 0x80, 0xd2, 0x22, 0x03, 0x00, 0x10, 0x1f, 0x20, 0x03, 0xd5, 0xe0, 0x33, 0x00, 0x91, 0xe3, 0x03, 0x13, 0xaa, 0x00, 0x01, 0x3f, 0xd6, 0x68, 0x06, 0x40, 0xf9, 0xe0, 0x0f, 0x40, 0xb9, 0x00, 0x01, 0x3f, 0xd6, 0x63, 0x32, 0x40, 0xb9, 0x00, 0x00, 0x80, 0xd2, 0x01, 0x00, 0x80, 0xd2, 0x02, 0x00, 0x80, 0x52, 0x07, 0x00, 0x00, 0x94, 0xa8, 0x75, 0x81, 0xd2, 0x00, 0x01, 0x3f, 0xd6, 0xbf, 0x43, 0x00, 0xd1, 0xfd, 0x7b, 0x41, 0xa9, 0xf4, 0x4f, 0xc2, 0xa8, 0xc0, 0x03, 0x5f, 0xd6, 0x30, 0x2d, 0x80, 0xd2, 0x01, 0x10, 0x00, 0xd4, 0xc0, 0x03, 0x5f, 0xd6, 0x70, 0x04, 0x80, 0x92, 0x01, 0x10, 0x00, 0xd4, 0xc0, 0x03, 0x5f, 0xd6, 0xf4, 0x4f, 0xbe, 0xa9, 0xfd, 0x7b, 0x01, 0xa9, 0xfd, 0x43, 0x00, 0x91, 0xf3, 0x03, 0x00, 0xaa, 0x68, 0x0a, 0x40, 0xf9, 0x60, 0x16, 0x40, 0xf9, 0x01, 0x00, 0x80, 0x52, 0x00, 0x01, 0x3f, 0xd6, 0x40, 0x01, 0x00, 0xb4, 0x68, 0x0e, 0x40, 0xf9, 0x01, 0x02, 0x00, 0x10, 0x1f, 0x20, 0x03, 0xd5, 0x00, 0x01, 0x3f, 0xd6, 0xe8, 0x03, 0x00, 0xaa, 0x88, 0x00, 0x00, 0xb4, 0x60, 0x02, 0x01, 0x91, 0x61, 0x1e, 0x40, 0xf9, 0x00, 0x01, 0x3f, 0xd6, 0x60, 0x32, 0x40, 0xb9, 0xea, 0xff, 0xff, 0x97, 0x60, 0xc6, 0x72, 0x92, 0x62, 0x12, 0x40, 0xf9, 0xe1, 0x03, 0x73, 0xb2, 0xfd, 0x7b, 0x41, 0xa9, 0xf4, 0x4f, 0xc2, 0xa8, 0x40, 0x00, 0x1f, 0xd6, 0x73, 0x75, 0x62, 0x73, 0x74, 0x69, 0x74, 0x75, 0x74, 0x65, 0x5f, 0x69, 0x6e, 0x69, 0x74, 0x00
diff --git a/generated/manual-mach.inc.h b/generated/manual-mach.inc.h
index ddf31bc..c48e545 100644
--- a/generated/manual-mach.inc.h
+++ b/generated/manual-mach.inc.h
@@ -1,6 +1,6 @@
/*
* IDENTIFICATION:
- * stub generated Sun Feb 22 22:43:07 2015
+ * stub generated Tue Feb 24 20:19:24 2015
* with a MiG generated by bootstrap_cmds-91
* OPTIONS:
*/
diff --git a/lib/arm64/jump-patch.h b/lib/arm64/jump-patch.h
index 0a276ba..5a44174 100644
--- a/lib/arm64/jump-patch.h
+++ b/lib/arm64/jump-patch.h
@@ -22,5 +22,5 @@ static inline void make_jump_patch(void **codep, uintptr_t pc, uintptr_t dpc,
MOVi64(codep, reg, dpc);
else
ADRP_ADD(codep, reg, pc, dpc);
- BR(codep, reg);
+ BR(codep, reg, false);
}
diff --git a/lib/darwin/execmem.c b/lib/darwin/execmem.c
index 0155b1f..b142aff 100644
--- a/lib/darwin/execmem.c
+++ b/lib/darwin/execmem.c
@@ -115,7 +115,7 @@ static bool apply_one_pcp_with_state(native_thread_state *state,
uintptr_t old = *pcp;
#ifdef __arm__
/* thumb */
- if (state.cpsr & 0x20)
+ if (state->__cpsr & 0x20)
old |= 1;
#endif
uintptr_t new = callback(ctx, *pcp);
@@ -123,7 +123,7 @@ static bool apply_one_pcp_with_state(native_thread_state *state,
*pcp = new;
#ifdef __arm__
*pcp &= ~1;
- state.cpsr = (state.cpsr & ~0x20) | ((new & 1) * 0x20);
+ state->__cpsr = (state->__cpsr & ~0x20) | ((new & 1) * 0x20);
#endif
return changed;
}
diff --git a/lib/darwin/manual-syscall.h b/lib/darwin/manual-syscall.h
index 88ac179..f16ec54 100644
--- a/lib/darwin/manual-syscall.h
+++ b/lib/darwin/manual-syscall.h
@@ -3,10 +3,12 @@
#define GEN_SYSCALL(name, num) \
__asm__(".globl _manual_" #name "\n" \
".pushsection __TEXT,__text,regular,pure_instructions\n" \
+ GEN_SYSCALL_PRE(name) \
"_manual_" #name ":\n" \
".set num, " #num "\n" \
GEN_SYSCALL_INNER() \
".popsection\n")
+#define GEN_SYSCALL_PRE(name)
#if defined(__x86_64__)
/* Look at me, I'm different! */
@@ -30,13 +32,18 @@
"sysenter\n" \
"1: ret\n"
#elif defined(__arm__)
+#ifdef __thumb__
+#undef GEN_SYSCALL_PRE
+#define GEN_SYSCALL_PRE(name) \
+ ".thumb_func _manual_" #name "\n"
+#endif
#define GEN_SYSCALL_INNER() \
"mov r12, #num\n" \
"svc #0x80\n" \
"bx lr\n"
#elif defined(__arm64__)
#define GEN_SYSCALL_INNER() \
- "mov x12, #num\n" \
+ "mov x16, #num\n" \
"svc #0x80\n" \
"ret\n"
#else
diff --git a/lib/jump-dis.h b/lib/jump-dis.h
index fccd1a6..d82c4a8 100644
--- a/lib/jump-dis.h
+++ b/lib/jump-dis.h
@@ -1,7 +1,7 @@
#pragma once
#include <stdint.h>
#include <stdbool.h>
-#include stringify(TARGET_DIR/arch-dis.h)
+#include "dis.h"
bool jump_dis_main(void *code_ptr, uintptr_t pc_patch_start, uintptr_t pc_patch_end,
struct arch_dis_ctx initial_dis_ctx);
diff --git a/lib/transform-dis.h b/lib/transform-dis.h
index e8969a8..90156af 100644
--- a/lib/transform-dis.h
+++ b/lib/transform-dis.h
@@ -1,7 +1,7 @@
#pragma once
#include <stdint.h>
#include <stdbool.h>
-#include stringify(TARGET_DIR/arch-dis.h)
+#include "dis.h"
#define TRANSFORM_DIS_BAN_CALLS 1