dotnet / runtime

.NET is a cross-platform runtime for cloud, mobile, desktop, and IoT apps.
https://docs.microsoft.com/dotnet/core/
MIT License
15.25k stars 4.73k forks source link

Enable Int128/UInt128 interop tests for Mono #69531

Open tannergooding opened 2 years ago

tannergooding commented 2 years ago

https://github.com/dotnet/runtime/pull/69204 introduced the Int128 and UInt128 types and included interop tests validating they are passed correctly to/from native.

However, they are currently disabled for Mono as are a large number of the Interop/PInvoke/* tests. These tests need to be enabled for Mono to ensure that these types work correctly in Interop scenarios.

The other Interop/PInvoke/* tests should likely be looked at as well since a majority of them currently appear to be disabled. See https://github.com/dotnet/runtime/blob/main/src/tests/issues.targets#L1716-L1772 under https://github.com/dotnet/runtime/blob/main/src/tests/issues.targets#L1446-L1447

dotnet-issue-labeler[bot] commented 2 years ago

I couldn't figure out the best area label to add to this issue. If you have write-permissions please help me learn by adding exactly one area label.

tannergooding commented 2 years ago

The android tests in particular were failing because they can't find the corresponding native library: System.DllNotFoundException: Int128Native.

The iOS and tvOS tests didn't run as the jobs hit other more general issues, such as timeouts at 240 minutes.

BrzVlad commented 2 years ago

@tannergooding do you remember if this issue is caused by https://github.com/dotnet/runtime/issues/69399

tannergooding commented 2 years ago

That's the main issue AFAIK, but there may be other issues.

Int128/UInt128 in particular are the "ABI primitive" types and so they may need special handling in the LLVM/Mono backend (same goes for Vector64/128/256<T>).