diff --git a/stackwalk/src/aarch64-swk.C b/stackwalk/src/aarch64-swk.C index 64a38bfff8..5963f365e1 100644 --- a/stackwalk/src/aarch64-swk.C +++ b/stackwalk/src/aarch64-swk.C @@ -45,9 +45,9 @@ using namespace Dyninst; using namespace Dyninst::Stackwalker; #if defined(os_linux) || defined(os_bg) -#define GET_FRAME_BASE(spr) __asm__("mov x0, x29;" : "=r"(spr)) -#define GET_RET_ADDR(spr) __asm__("mov x0, x30;" : "=r"(spr)) -#define GET_STACK_POINTER(spr) __asm__("mov x0, sp;" : "=r"(spr)) +#define GET_FRAME_POINTER(spr) __asm__("mov %0, x29;" : "=r"(spr)) +#define GET_RET_ADDR(spr) __asm__("mov %0, x30;" : "=r"(spr)) +#define GET_STACK_POINTER(spr) __asm__("mov %0, sp;" : "=r"(spr)) #else #error Unknown platform #endif @@ -69,6 +69,8 @@ bool ProcSelf::getRegValue(Dyninst::MachRegister reg, THR_ID, Dyninst::MachRegis GET_STACK_POINTER(sp); framePointer = (ra_fp_pair_t *) sp; + if(!framePointer) return false; + if(!framePointer->FP) return false; thisFramePair = *framePointer; stackWalkFramePair = *( (ra_fp_pair_t*) (thisFramePair.FP)); diff --git a/symtabAPI/src/relocationEntry-elf-aarch64.C b/symtabAPI/src/relocationEntry-elf-aarch64.C index 231c7f5df7..91e4501eaa 100644 --- a/symtabAPI/src/relocationEntry-elf-aarch64.C +++ b/symtabAPI/src/relocationEntry-elf-aarch64.C @@ -160,13 +160,13 @@ const char *relocationEntry::relType2Str(unsigned long r, unsigned /*addressWidt CASE_RETURN_STR(R_AARCH64_GLOB_DAT); CASE_RETURN_STR(R_AARCH64_JUMP_SLOT); CASE_RETURN_STR(R_AARCH64_RELATIVE); - CASE_RETURN_STR(R_AARCH64_TLS_DTPMOD ); - CASE_RETURN_STR(R_AARCH64_TLS_DTPREL); - CASE_RETURN_STR(R_AARCH64_TLS_TPREL); + // CASE_RETURN_STR(R_AARCH64_TLS_DTPMOD ); + // CASE_RETURN_STR(R_AARCH64_TLS_DTPREL); + // CASE_RETURN_STR(R_AARCH64_TLS_TPREL); CASE_RETURN_STR(R_AARCH64_TLSDESC ); CASE_RETURN_STR(R_AARCH64_IRELATIVE); default: - return "?"; + return "Unknown relocation type"; } return "?"; }