@@ -757,42 +757,39 @@ ValueObjectSP ABIMacOSX_arm64::GetReturnValueObjectImpl(
757
757
return return_valobj_sp;
758
758
}
759
759
760
- addr_t ABIMacOSX_arm64::FixCodeAddress (addr_t pc) {
761
- addr_t pac_sign_extension = 0x0080000000000000ULL ;
762
- addr_t tbi_mask = 0xff80000000000000ULL ;
763
- addr_t mask = 0 ;
764
-
765
- if (ProcessSP process_sp = GetProcessSP ()) {
766
- mask = process_sp->GetCodeAddressMask ();
767
- if (pc & pac_sign_extension) {
768
- addr_t highmem_mask = process_sp->GetHighmemCodeAddressMask ();
769
- if (highmem_mask != LLDB_INVALID_ADDRESS_MASK)
770
- mask = highmem_mask;
771
- }
772
- }
760
+ constexpr addr_t tbi_mask = 0xff80000000000000ULL ;
761
+ constexpr addr_t pac_sign_extension = 0x0080000000000000ULL ;
762
+
763
+ // / Consults the process for its {code, data} address masks and applies it to
764
+ // / `addr`.
765
+ static addr_t DoFixAddr (addr_t addr, bool is_code, ProcessSP process_sp) {
766
+ if (!process_sp)
767
+ return addr;
768
+
769
+ addr_t mask = is_code ? process_sp->GetCodeAddressMask ()
770
+ : process_sp->GetDataAddressMask ();
773
771
if (mask == LLDB_INVALID_ADDRESS_MASK)
774
772
mask = tbi_mask;
775
773
776
- return (pc & pac_sign_extension) ? pc | mask : pc & (~mask);
774
+ if (addr & pac_sign_extension) {
775
+ addr_t highmem_mask = is_code ? process_sp->GetHighmemCodeAddressMask ()
776
+ : process_sp->GetHighmemCodeAddressMask ();
777
+ if (highmem_mask != LLDB_INVALID_ADDRESS_MASK)
778
+ return addr | highmem_mask;
779
+ return addr | mask;
780
+ }
781
+
782
+ return addr & (~mask);
777
783
}
778
784
779
- addr_t ABIMacOSX_arm64::FixDataAddress (addr_t pc) {
780
- addr_t pac_sign_extension = 0x0080000000000000ULL ;
781
- addr_t tbi_mask = 0xff80000000000000ULL ;
782
- addr_t mask = 0 ;
783
-
784
- if (ProcessSP process_sp = GetProcessSP ()) {
785
- mask = process_sp->GetDataAddressMask ();
786
- if (pc & pac_sign_extension) {
787
- addr_t highmem_mask = process_sp->GetHighmemDataAddressMask ();
788
- if (highmem_mask != LLDB_INVALID_ADDRESS_MASK)
789
- mask = highmem_mask;
790
- }
791
- }
792
- if (mask == LLDB_INVALID_ADDRESS_MASK)
793
- mask = tbi_mask;
785
+ addr_t ABIMacOSX_arm64::FixCodeAddress (addr_t pc) {
786
+ ProcessSP process_sp = GetProcessSP ();
787
+ return DoFixAddr (pc, true /* is_code*/ , GetProcessSP ());
788
+ }
794
789
795
- return (pc & pac_sign_extension) ? pc | mask : pc & (~mask);
790
+ addr_t ABIMacOSX_arm64::FixDataAddress (addr_t addr) {
791
+ ProcessSP process_sp = GetProcessSP ();
792
+ return DoFixAddr (addr, false /* is_code*/ , GetProcessSP ());
796
793
}
797
794
798
795
void ABIMacOSX_arm64::Initialize () {
0 commit comments