Skip to content

Commit

Permalink
Clean up the code and use __DARWIN_OPAQUE_ARM_THREAD_STATE64
Browse files Browse the repository at this point in the history
  • Loading branch information
Benjamin Scholtysik (Reimold) committed Nov 6, 2018
1 parent ff7274e commit d65fa61
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 32 deletions.
40 changes: 9 additions & 31 deletions Source/PLCrashAsyncThread_arm.c
Original file line number Diff line number Diff line change
Expand Up @@ -33,26 +33,6 @@
#import <stdlib.h>
#import <assert.h>

// The code below does not work because it will try to redefine the reg. for non-arm64e archs...which does NOT make sense!
//#if defined(__DARWIN_OPAQUE_ARM_THREAD_STATE64) && __DARWIN_OPAQUE_ARM_THREAD_STATE64 == 1
//#ifndef __lp
//#define __lp __opaque_lp
//#endif
//#ifndef __fp
//#define __fp __opaque_fp
//#endif
//#ifndef __sp
//#define __sp __opaque_sp
//#endif
//#ifndef __lr
//#define __lr __opaque_lr
//#endif
//#ifndef __pc
//#define __pc __opaque_pc
//#endif
//
//#endif

#if defined(__arm__) || defined(__arm64__)

#define RETGEN(name, type, ts) {\
Expand Down Expand Up @@ -343,34 +323,32 @@ plcrash_greg_t plcrash_async_thread_state_get_reg (const plcrash_async_thread_st
RETGEN(x[28], thread.ts_64, ts);

case PLCRASH_ARM64_FP:
#if defined(__DARWIN_OPAQUE_ARM_THREAD_STATE64) && __DARWIN_OPAQUE_ARM_THREAD_STATE64 == 1
#if __DARWIN_OPAQUE_ARM_THREAD_STATE64
RETGEN(opaque_fp, thread.ts_64, ts);
#else
RETGEN(fp, thread.ts_64, ts);
#endif

case PLCRASH_ARM64_SP:
#if defined(__DARWIN_OPAQUE_ARM_THREAD_STATE64) && __DARWIN_OPAQUE_ARM_THREAD_STATE64 == 1
#if __DARWIN_OPAQUE_ARM_THREAD_STATE64
RETGEN(opaque_sp, thread.ts_64, ts);
#else
RETGEN(sp, thread.ts_64, ts);
#endif
// RETGEN(sp, thread.ts_64, ts);

case PLCRASH_ARM64_LR:
#if defined(__DARWIN_OPAQUE_ARM_THREAD_STATE64) && __DARWIN_OPAQUE_ARM_THREAD_STATE64 == 1
#if __DARWIN_OPAQUE_ARM_THREAD_STATE64
RETGEN(opaque_lr, thread.ts_64, ts);
#else
RETGEN(lr, thread.ts_64, ts);
#endif
// RETGEN(lr, thread.ts_64, ts);

case PLCRASH_ARM64_PC:
#if defined(__DARWIN_OPAQUE_ARM_THREAD_STATE64) && __DARWIN_OPAQUE_ARM_THREAD_STATE64 == 1
#if __DARWIN_OPAQUE_ARM_THREAD_STATE64
RETGEN(opaque_pc, thread.ts_64, ts);
#else
RETGEN(pc, thread.ts_64, ts);
#endif
// RETGEN(pc, thread.ts_64, ts);

case PLCRASH_ARM64_CPSR:
RETGEN(cpsr, thread.ts_64, ts);
Expand Down Expand Up @@ -535,28 +513,28 @@ void plcrash_async_thread_state_set_reg (plcrash_async_thread_state_t *thread_st
SETGEN(x[28], thread.ts_64, ts, regnum, reg);

case PLCRASH_ARM64_FP:
#if defined(__DARWIN_OPAQUE_ARM_THREAD_STATE64) && __DARWIN_OPAQUE_ARM_THREAD_STATE64 == 1
#if __DARWIN_OPAQUE_ARM_THREAD_STATE64
SETGEN(opaque_fp, thread.ts_64, ts, regnum, reg);
#else
SETGEN(fp, thread.ts_64, ts, regnum, reg);
#endif

case PLCRASH_ARM64_SP:
#if defined(__DARWIN_OPAQUE_ARM_THREAD_STATE64) && __DARWIN_OPAQUE_ARM_THREAD_STATE64 == 1
#if __DARWIN_OPAQUE_ARM_THREAD_STATE64
SETGEN(opaque_sp, thread.ts_64, ts, regnum, reg);
#else
SETGEN(sp, thread.ts_64, ts, regnum, reg);
#endif

case PLCRASH_ARM64_LR:
#if defined(__DARWIN_OPAQUE_ARM_THREAD_STATE64) && __DARWIN_OPAQUE_ARM_THREAD_STATE64 == 1
#if __DARWIN_OPAQUE_ARM_THREAD_STATE64
SETGEN(opaque_lr, thread.ts_64, ts, regnum, reg);
#else
SETGEN(lr, thread.ts_64, ts, regnum, reg);
#endif

case PLCRASH_ARM64_PC:
#if defined(__DARWIN_OPAQUE_ARM_THREAD_STATE64) && __DARWIN_OPAQUE_ARM_THREAD_STATE64 == 1
#if __DARWIN_OPAQUE_ARM_THREAD_STATE64
SETGEN(opaque_pc, thread.ts_64, ts, regnum, reg);
#else
SETGEN(pc, thread.ts_64, ts, regnum, reg);
Expand Down
2 changes: 1 addition & 1 deletion Source/PLCrashAsyncThread_current.c
Original file line number Diff line number Diff line change
Expand Up @@ -133,7 +133,7 @@ VOFF(ss, gs, 72);

VOFF(es, trapno, 0);

#elif defined(__arm64e__)
#elif __DARWIN_OPAQUE_ARM_THREAD_STATE64

/* There's a hard-coded dependency on this size in the trampoline assembly, so we explicitly validate it here. */
PLCR_ASSERT_STATIC(MCONTEXT_SIZE, sizeof(pl_mcontext_t) == 816);
Expand Down

0 comments on commit d65fa61

Please sign in to comment.