@@ -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
802793void ABIMacOSX_arm64::Initialize () {
0 commit comments