Skip to content

Commit 3243ab7

Browse files
fixup! Reuse code across functions
1 parent 9214bba commit 3243ab7

File tree

1 file changed

+19
-28
lines changed

1 file changed

+19
-28
lines changed

lldb/source/Plugins/ABI/AArch64/ABIMacOSX_arm64.cpp

Lines changed: 19 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -757,46 +757,37 @@ ValueObjectSP ABIMacOSX_arm64::GetReturnValueObjectImpl(
757757
return return_valobj_sp;
758758
}
759759

760-
addr_t ABIMacOSX_arm64::FixCodeAddress(addr_t pc) {
761-
ProcessSP process_sp = GetProcessSP();
760+
constexpr addr_t tbi_mask = 0xff80000000000000ULL;
761+
constexpr addr_t pac_sign_extension = 0x0080000000000000ULL;
762+
763+
static addr_t DoFixAddr(addr_t addr, bool is_code, ProcessSP process_sp) {
762764
if (!process_sp)
763-
return pc;
765+
return addr;
764766

765-
addr_t mask = process_sp->GetCodeAddressMask();
766-
addr_t tbi_mask = 0xff80000000000000ULL;
767+
addr_t mask = is_code ? process_sp->GetCodeAddressMask()
768+
: process_sp->GetDataAddressMask();
767769
if (mask == LLDB_INVALID_ADDRESS_MASK)
768770
mask = tbi_mask;
769771

770-
addr_t pac_sign_extension = 0x0080000000000000ULL;
771-
if (pc & pac_sign_extension) {
772-
addr_t highmem_mask = process_sp->GetHighmemCodeAddressMask();
772+
if (addr & pac_sign_extension) {
773+
addr_t highmem_mask = is_code ? process_sp->GetHighmemCodeAddressMask()
774+
: process_sp->GetHighmemCodeAddressMask();
773775
if (highmem_mask != LLDB_INVALID_ADDRESS_MASK)
774-
return pc | highmem_mask;
775-
return pc | mask;
776+
return addr | highmem_mask;
777+
return addr | mask;
776778
}
777779

778-
return pc & (~mask);
780+
return addr & (~mask);
779781
}
780782

781-
addr_t ABIMacOSX_arm64::FixDataAddress(addr_t pc) {
783+
addr_t ABIMacOSX_arm64::FixCodeAddress(addr_t pc) {
782784
ProcessSP process_sp = GetProcessSP();
783-
if (!process_sp)
784-
return pc;
785-
786-
addr_t mask = process_sp->GetDataAddressMask();
787-
addr_t tbi_mask = 0xff80000000000000ULL;
788-
if (mask == LLDB_INVALID_ADDRESS_MASK)
789-
mask = tbi_mask;
790-
791-
addr_t pac_sign_extension = 0x0080000000000000ULL;
792-
if (pc & pac_sign_extension) {
793-
addr_t highmem_mask = process_sp->GetHighmemDataAddressMask();
794-
if (highmem_mask != LLDB_INVALID_ADDRESS_MASK)
795-
return pc | highmem_mask;
796-
return pc | mask;
797-
}
785+
return DoFixAddr(pc, true /*is_code*/, GetProcessSP());
786+
}
798787

799-
return pc & (~mask);
788+
addr_t ABIMacOSX_arm64::FixDataAddress(addr_t addr) {
789+
ProcessSP process_sp = GetProcessSP();
790+
return DoFixAddr(addr, false /*is_code*/, GetProcessSP());
800791
}
801792

802793
void ABIMacOSX_arm64::Initialize() {

0 commit comments

Comments
 (0)