Skip to content
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion llvm/test/ExecutionEngine/MCJIT/stubs-sm-pic.ll
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
; RUN: %lli -jit-kind=mcjit -disable-lazy-compilation=false -relocation-model=pic -code-model=small %s
; XFAIL: target={{(mips|mipsel)-.*}}, target={{(i686|i386).*}}, target={{(aarch64|arm).*}}
; XFAIL: target={{(mips|mipsel)-.*}}, target={{(i686|i386).*}}, target={{(aarch64|arm).*}}, target={{.*-(cygwin|windows-cygnus)}}
; This test segfaults on cygwin, but succeeds with cygwin-elf. Unfortunately,
; cygwin-elf breaks the remote tests due to lack of __register_frame.

define i32 @main() nounwind {
entry:
Expand Down
14 changes: 10 additions & 4 deletions llvm/test/lit.cfg.py
Original file line number Diff line number Diff line change
Expand Up @@ -107,7 +107,12 @@ def get_asan_rtlib():
# we don't support COFF in MCJIT well enough for the tests, force ELF format on
# Windows. FIXME: the process target triple should be used here, but this is
# difficult to obtain on Windows.
if re.search(r"cygwin|windows-gnu|windows-msvc", config.host_triple):
# Cygwin is excluded from this workaround, even though it is COFF, because this
# breaks remote tests due to not having a __register_frame function. The only
# test that succeeds with cygwin-elf but fails with cygwin is
# test/ExecutionEngine/MCJIT/stubs-sm-pic.ll so this test is marked as XFAIL
# for cygwin targets
if re.search(r"windows-gnu|windows-msvc", config.host_triple):
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm not so sure about this one in particular - for the (rather odd) JIT cases where we construct an ELF file in memory and map that, I would think that it should work the same on cygwin as on regular Windows?

lli_args = ["-mtriple=" + config.host_triple + "-elf"]

llc_args = []
Expand Down Expand Up @@ -385,10 +390,11 @@ def version_int(ver):
else:
config.available_features.add("target-byteorder-little-endian")

if sys.platform in ["win32"]:
if sys.platform in ["win32", "cygwin"]:
# ExecutionEngine, no weak symbols in COFF.
config.available_features.add("uses_COFF")
else:

if sys.platform not in ["win32"]:
# Others/can-execute.txt
config.available_features.add("can-execute")

Expand Down Expand Up @@ -659,7 +665,7 @@ def host_unwind_supports_jit():

# .debug_frame is not emitted for targeting Windows x64, aarch64/arm64, AIX, or Apple Silicon Mac.
if not re.match(
r"^(x86_64|aarch64|arm64|powerpc|powerpc64).*-(windows-gnu|windows-msvc|aix)",
r"^(x86_64|aarch64|arm64|powerpc|powerpc64).*-(windows-cygnus|windows-gnu|windows-msvc|aix)",
config.target_triple,
) and not re.match(r"^arm64(e)?-apple-(macos|darwin)", config.target_triple):
config.available_features.add("debug_frame")
Expand Down