One of the issues is that existentials of types defined in the standard library don't work: the value witness table pointer in the struct type metadata is null.
Here's a minimal reproducer:
$catcrash.swiftprotocolP {
funcsetValue()
}
extensionBool : P {
funcsetValue() {}
}
funczzz() {
varsomeP: P = truesomeP.setValue()
}
zzz()
Let me elaborate. I am working in a DARPA-funded project that is developing a system that depends on having Swift running on an aarch64-based hardware platform running 64-bit Ubuntu Linux 16.04. So far, after patching binutils on the system, we have been able to successfully build Swift, but see 40+ failing test cases (see swift-3.0.2-test.log) when running the Swift test suite. Our system relies on Swift Package Manager, so Swift 3.x is a requirement. Do you know of any way of getting this running on the target platform? We are currently trying to compile a 32-bit version, after seeing signs of success of doing so on a 64-bit RPi platform. Also, if you are aware of the state/perspective of adding support for this at Apple, that would be very helpful.
After a suggestion from @hpux735 that several of the failures seem related to reflection, we are planning to start looking at the 1_stdlib/Mirror.swift failure first.
Attachment: Download
Additional Detail from JIRA
md5: d82be33062357aafcd2b8854c9a7d6b9
Issue Description:
Swift builds on Linux aarch64. Here are the results of running the primary testsuite (`ninja check-swift`):
(full logs attached)
One of the issues is that existentials of types defined in the standard library don't work: the value witness table pointer in the struct type metadata is null.
Here's a minimal reproducer:
gdb:
What is strange though is that somehow the resulting binary tries to define metadata symbol, but in BSS (?!)
The definition does not exist in the IR.
The symbol looks fine in the library though:
I suspect a bug in binutils.
The text was updated successfully, but these errors were encountered: