[ExecutionEngine] Re-enable JIT tests on PowerPC.
authorLang Hames <lhames@gmail.com>
Fri, 19 May 2023 00:23:05 +0000 (17:23 -0700)
committerLang Hames <lhames@gmail.com>
Sun, 21 May 2023 23:12:06 +0000 (16:12 -0700)
These were previously re-enabled in d771f54107c, but had to be disabled again
in 2060a72b4d7 due to test failures.

This is a next step to landing https://reviews.llvm.org/D148192, which adds
a skeleton JITLink backend for PowerPC.

The fixes for those failures were (1) to explicitly specify IsLittleEndian =
true for the MachO YAML testcases, (2) disable some example tests for examples
that aren't supported on PowerPC yet, and (3) fixing the endianness of a
relocation read/write (for ELF R_AARCH64_TSTBR14) in RuntimeDyldELF.

llvm/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldELF.cpp
llvm/test/Examples/OrcV2Examples/lljit-with-remote-debugging.test
llvm/test/Examples/OrcV2Examples/lljit-with-thinlto-summaries.test
llvm/test/Examples/OrcV2Examples/orcv2-cbindings-lazy.test
llvm/test/ExecutionEngine/JITLink/x86-64/MachO-duplicate-local.test
llvm/test/ExecutionEngine/JITLink/x86-64/MachO_ehframe_bad_fde_cie-ptr_out-of-range.test
llvm/test/ExecutionEngine/JITLink/x86-64/MachO_ehframe_bad_fde_pc-begin_out-of-range.test
llvm/test/ExecutionEngine/lit.local.cfg

index 762f51f..d439b1b 100644 (file)
@@ -479,7 +479,9 @@ void RuntimeDyldELF::resolveAArch64Relocation(const SectionEntry &Section,
 
     assert(isInt<16>(BranchImm));
 
-    *TargetPtr &= 0xfff8001fU;
+    uint32_t RawInstr = *(support::little32_t *)TargetPtr;
+    *(support::little32_t *)TargetPtr = RawInstr & 0xfff8001fU;
+
     // Immediate:15:2 goes in bits 18:5 of TBZ, TBNZ
     or32le(TargetPtr, (BranchImm & 0x0000FFFC) << 3);
     break;
index d342081..b0b3350 100644 (file)
@@ -2,6 +2,7 @@
 # Instructions for debugging can be found in LLJITWithRemoteDebugging.cpp
 
 # REQUIRES: default_triple
+# UNSUPPORTED: target=powerpc64{{.*}}
 
 # RUN: LLJITWithRemoteDebugging %p/Inputs/argc_sub1_elf.ll | FileCheck --check-prefix=CHECK0 %s
 # CHECK0: Parsing input IR code from: {{.*}}/Inputs/argc_sub1_elf.ll
index ec4c8dd..b97f8ab 100644 (file)
@@ -3,6 +3,7 @@
 # RUN: opt -module-summary %p/Inputs/bar-mod.ll -o %T/bar-mod.bc
 
 # REQUIRES: default_triple
+# UNSUPPORTED: target=powerpc64{{.*}}
 
 # RUN: llvm-lto -thinlto -o %T/main-foo-bar %T/main-mod.bc %T/foo-mod.bc %T/bar-mod.bc
 
index b8e8f53..e34551c 100644 (file)
@@ -1,5 +1,7 @@
 # RUN: OrcV2CBindingsLazy 2>&1 | FileCheck -check-prefix=THIS %s
 # RUN: OrcV2CBindingsLazy 0 2>&1 | FileCheck -check-prefix=OTHER %s
 
+# UNSUPPORTED: target=powerpc64{{.*}}
+
 # THIS: entry(1) = 1
 # OTHER: entry(2) = 2
index c82e852..5860f1b 100644 (file)
@@ -12,6 +12,7 @@
 # CHECK-NEXT:   target = _foo
 
 --- !mach-o
+IsLittleEndian:    true
 FileHeader:
   magic:           0xFEEDFACF
   cputype:         0x1000007
index 1bd01e1..21dc093 100644 (file)
@@ -6,6 +6,7 @@
 # CHECK: llvm-jitlink error: No CIE found at address
 
 --- !mach-o
+IsLittleEndian:    true
 FileHeader:
   magic:           0xFEEDFACF
   cputype:         0x1000007
index 0a845c9..8c082e6 100644 (file)
@@ -6,6 +6,7 @@
 # CHECK: llvm-jitlink error: No symbol or block covering address
 
 --- !mach-o
+IsLittleEndian:    true
 FileHeader:
   magic:           0xFEEDFACF
   cputype:         0x1000007
index 59f7cdb..c748de1 100644 (file)
@@ -1,4 +1,4 @@
-if config.root.native_target in ["Sparc", "PowerPC", "SystemZ", "Hexagon", "RISCV"]:
+if config.root.native_target in ['Sparc', 'SystemZ', 'Hexagon', 'RISCV']:
     config.unsupported = True
 
 # ExecutionEngine tests are not expected to pass in a cross-compilation setup.