tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

arm64e-hack.patch (1861B)


      1 Add hackish support for arm64e to LLD
      2 
      3 The current lld output is known as arm64e.old. This hack adds the right flag to
      4 make it appear as arm64e.
      5 
      6 An upstreamable solution would be more involved.
      7 
      8 diff --git a/lld/MachO/Driver.cpp b/lld/MachO/Driver.cpp
      9 index 14c111ce9685..45fa7c59c420 100644
     10 --- a/lld/MachO/Driver.cpp
     11 +++ b/lld/MachO/Driver.cpp
     12 @@ -773,8 +773,13 @@ static TargetInfo *createTargetInfo(InputArgList &args) {
     13   switch (cpuType) {
     14   case CPU_TYPE_X86_64:
     15     return createX86_64TargetInfo();
     16 -  case CPU_TYPE_ARM64:
     17 -    return createARM64TargetInfo();
     18 +  case CPU_TYPE_ARM64: {
     19 +    auto target = createARM64TargetInfo();
     20 +    if (cpuSubtype == CPU_SUBTYPE_ARM64E) {
     21 +      target->cpuSubtype = CPU_SUBTYPE_ARM64E | CPU_SUBTYPE_PTRAUTH_ABI;
     22 +    }
     23 +    return target;
     24 +  }
     25   case CPU_TYPE_ARM64_32:
     26     return createARM64_32TargetInfo();
     27   default:
     28 diff --git a/lldb/include/lldb/Host/SafeMachO.h b/lldb/include/lldb/Host/SafeMachO.h
     29 index 0540383b8c52..a7650f760305 100644
     30 --- a/lldb/include/lldb/Host/SafeMachO.h
     31 +++ b/lldb/include/lldb/Host/SafeMachO.h
     32 @@ -115,6 +115,8 @@
     33 #undef CPU_SUBTYPE_MC980000_ALL
     34 #undef CPU_SUBTYPE_MC98601
     35 
     36 +#undef CPU_SUBTYPE_PTRAUTH_ABI
     37 +
     38 #undef VM_PROT_READ
     39 #undef VM_PROT_WRITE
     40 #undef VM_PROT_EXECUTE
     41 diff --git a/llvm/include/llvm/BinaryFormat/MachO.h b/llvm/include/llvm/BinaryFormat/MachO.h
     42 index bef70f869520..7dfe5d031381 100644
     43 --- a/llvm/include/llvm/BinaryFormat/MachO.h
     44 +++ b/llvm/include/llvm/BinaryFormat/MachO.h
     45 @@ -1578,6 +1578,7 @@ enum : uint32_t {
     46   // Capability bits used in the definition of cpusubtype.
     47   CPU_SUBTYPE_MASK = 0xff000000,  // Mask for architecture bits
     48   CPU_SUBTYPE_LIB64 = 0x80000000, // 64 bit libraries
     49 +  CPU_SUBTYPE_PTRAUTH_ABI = 0x80000000, // pointer authentication with versioned ABI
     50 
     51   // Special CPU subtype constants.
     52   CPU_SUBTYPE_MULTIPLE = ~0u