I am trying to enable NativeAOT on OSX arm64. With this patch main...am11:feature/nativeaot/osx-arm64 (tested with both @GOTPAGE and @PAGE assembler directives), it builds the nupkg. Consuming that package results in the following errors during the ilc step:
# with `<add key="TestSource" value="/Users/am11/projects/runtime/artifacts/packages/Release/Shipping" />`# in NuGet.config
$ dotnet nuget locals all --clear && rm -rf obj bin && dotnet publish --use-current-runtime -v:diag ...
... snip ...
21:06:05.007 1:7>Target "IlcCompile: (TargetId:181)"in file "/Users/am11/.nuget/packages/microsoft.dotnet.ilcompiler/7.0.0-dev/build/Microsoft.NETCore.Native.targets" from project "/Users/am11/projects/naot1/naot1.csproj" (target "LinkNative" depends on it):
Building target "IlcCompile" completely.
Output file "obj/release/net7.0/osx-arm64/native/naot1.o" does not exist.
Task "Message" skipped, due to false condition; ($(_BuildingInCompatibleMode)!= 'true') was evaluated as (true != 'true').
Task "Message" (TaskId:126)
Task Parameter:Text=Generating compatible native code. To optimize for size or speed, visit https://aka.ms/OptimizeCoreRT (TaskId:126)
Task Parameter:Importance=high (TaskId:126)
Generating compatible native code. To optimize for size or speed, visit https://aka.ms/OptimizeCoreRT (TaskId:126)
Done executing task "Message". (TaskId:126)
Task "Exec" (TaskId:127)
Task Parameter:Command="/Users/am11/.nuget/packages/runtime.osx-arm64.microsoft.dotnet.ilcompiler/7.0.0-dev/tools/ilc" @"obj/release/net7.0/osx-arm64/native/naot1.ilc.rsp" (TaskId:127)
"/Users/am11/.nuget/packages/runtime.osx-arm64.microsoft.dotnet.ilcompiler/7.0.0-dev/tools/ilc" @"obj/release/net7.0/osx-arm64/native/naot1.ilc.rsp" (TaskId:127)
<unknown>:0: error: ADR/ADRP relocations must be GOT relative (TaskId:127)
<unknown>:0: error: unknown AArch64 fixup kind! (TaskId:127)
<unknown>:0: error: unknown AArch64 fixup kind! (TaskId:127)
<unknown>:0: error: fixup value out of range (TaskId:127)
<unknown>:0: error: ADR/ADRP relocations must be GOT relative (TaskId:127)
<unknown>:0: error: unknown AArch64 fixup kind! (TaskId:127)
<unknown>:0: error: unknown AArch64 fixup kind! (TaskId:127)
<unknown>:0: error: fixup value out of range (TaskId:127)
... repeats 1000s of times ...
somewhere after the objwriter has succeeded:
and before the
clang command is executed. While the ilc task does not fail, MSBuild fails on the clang step:
Set Property: _IgnoreLinkerWarnings=false
Set Property: _IgnoreLinkerWarnings=true
Task "Exec" (TaskId:129)
Task Parameter:IgnoreStandardErrorWarningFormat=True (TaskId:129)
Task Parameter:Command=clang "obj/release/net7.0/osx-arm64/native/naot1.o" -o "bin/release/net7.0/osx-arm64/native/naot1" /Users/am11/.nuget/packages/runtime.osx-arm64.microsoft.dotnet.ilcompiler/7.0.0-dev/sdk/libbootstrapper.a /Users/am11/.nuget/packages/runtime.osx-arm64.microsoft.dotnet.ilcompiler/7.0.0-dev/sdk/libRuntime.WorkstationGC.a /Users/am11/.nuget/packages/runtime.osx-arm64.microsoft.dotnet.ilcompiler/7.0.0-dev/framework/libSystem.Native.a /Users/am11/.nuget/packages/runtime.osx-arm64.microsoft.dotnet.ilcompiler/7.0.0-dev/framework/libSystem.Globalization.Native.a /Users/am11/.nuget/packages/runtime.osx-arm64.microsoft.dotnet.ilcompiler/7.0.0-dev/framework/libSystem.IO.Compression.Native.a /Users/am11/.nuget/packages/runtime.osx-arm64.microsoft.dotnet.ilcompiler/7.0.0-dev/framework/libSystem.Net.Security.Native.a /Users/am11/.nuget/packages/runtime.osx-arm64.microsoft.dotnet.ilcompiler/7.0.0-dev/framework/libSystem.Security.Cryptography.Native.Apple.a -g -Wl,-rpath,'@executable_path' -lstdc++ -ldl -lm -lz -licucore -framework CoreFoundation -framework Foundation -framework Security -framework GSS (TaskId:129)
clang "obj/release/net7.0/osx-arm64/native/naot1.o" -o "bin/release/net7.0/osx-arm64/native/naot1" /Users/am11/.nuget/packages/runtime.osx-arm64.microsoft.dotnet.ilcompiler/7.0.0-dev/sdk/libbootstrapper.a /Users/am11/.nuget/packages/runtime.osx-arm64.microsoft.dotnet.ilcompiler/7.0.0-dev/sdk/libRuntime.WorkstationGC.a /Users/am11/.nuget/packages/runtime.osx-arm64.microsoft.dotnet.ilcompiler/7.0.0-dev/framework/libSystem.Native.a /Users/am11/.nuget/packages/runtime.osx-arm64.microsoft.dotnet.ilcompiler/7.0.0-dev/framework/libSystem.Globalization.Native.a /Users/am11/.nuget/packages/runtime.osx-arm64.microsoft.dotnet.ilcompiler/7.0.0-dev/framework/libSystem.IO.Compression.Native.a /Users/am11/.nuget/packages/runtime.osx-arm64.microsoft.dotnet.ilcompiler/7.0.0-dev/framework/libSystem.Net.Security.Native.a /Users/am11/.nuget/packages/runtime.osx-arm64.microsoft.dotnet.ilcompiler/7.0.0-dev/framework/libSystem.Security.Cryptography.Native.Apple.a -g -Wl,-rpath,'@executable_path' -lstdc++ -ldl -lm -lz -licucore -framework CoreFoundation -framework Foundation -framework Security -framework GSS (TaskId:129)
ld: malformed __LD,__compact_unwind section, bad length file 'obj/release/net7.0/osx-arm64/native/naot1.o' (TaskId:129)
clang: error: linker command failed with exit code 1 (use -v to see invocation) (TaskId:129)
21:06:12.873 1:7>/Users/am11/.nuget/packages/microsoft.dotnet.ilcompiler/7.0.0-dev/build/Microsoft.NETCore.Native.targets(337,5): error MSB3073: The command "clang "obj/release/net7.0/osx-arm64/native/naot1.o" -o "bin/release/net7.0/osx-arm64/native/naot1" /Users/am11/.nuget/packages/runtime.osx-arm64.microsoft.dotnet.ilcompiler/7.0.0-dev/sdk/libbootstrapper.a /Users/am11/.nuget/packages/runtime.osx-arm64.microsoft.dotnet.ilcompiler/7.0.0-dev/sdk/libRuntime.WorkstationGC.a /Users/am11/.nuget/packages/runtime.osx-arm64.microsoft.dotnet.ilcompiler/7.0.0-dev/framework/libSystem.Native.a /Users/am11/.nuget/packages/runtime.osx-arm64.microsoft.dotnet.ilcompiler/7.0.0-dev/framework/libSystem.Globalization.Native.a /Users/am11/.nuget/packages/runtime.osx-arm64.microsoft.dotnet.ilcompiler/7.0.0-dev/framework/libSystem.IO.Compression.Native.a /Users/am11/.nuget/packages/runtime.osx-arm64.microsoft.dotnet.ilcompiler/7.0.0-dev/framework/libSystem.Net.Security.Native.a /Users/am11/.nuget/packages/runtime.osx-arm64.microsoft.dotnet.ilcompiler/7.0.0-dev/framework/libSystem.Security.Cryptography.Native.Apple.a -g -Wl,-rpath,'@executable_path' -lstdc++ -ldl -lm -lz -licucore -framework CoreFoundation -framework Foundation -framework Security -framework GSS" exited with code 1. [/Users/am11/projects/naot1/naot1.csproj]
Done executing task "Exec" -- FAILED. (TaskId:129)
21:06:12.873 1:7>Done building target "LinkNative"in project "naot1.csproj" -- FAILED.: (TargetId:182)
With objdump, that __LD,__compact_unwind section looks like:
Disassembly of section __LD,__compact_unwind:00000000003b2858 <ltmp8>: 3b2858: 40 4b 0000 udf #19264 3b285c: 00000000 udf #0 3b2860: 74000000 udf #116 3b2864: 00000003 <unknown> ... 3b2874: c0 4b 0000 udf #19392 3b2878: 00000000 udf #0 3b287c: 74000000 udf #116 3b2880: 00000003 <unknown> ... 3b2890: 40 4c 0000 udf #19520 3b2894: 00000000 udf #0 3b2898: 74000000 udf #116 3b289c: 00000003 <unknown> ... 3b28ac: c0 4c 0000 udf #19648 3b28b0: 00000000 udf #0 3b28b4: 74000000 udf #116 3b28b8: 00000003 <unknown>... repeats ...
I am trying to enable NativeAOT on OSX arm64. With this patch main...am11:feature/nativeaot/osx-arm64 (tested with both
@GOTPAGEand@PAGEassembler directives), it builds the nupkg. Consuming that package results in the following errors during theilcstep:somewhere after the objwriter has succeeded:
runtime/src/coreclr/tools/aot/ILCompiler.Compiler/Compiler/DependencyAnalysis/ObjectWriter.cs
Line 1183 in 071e772
clangcommand is executed. While the ilc task does not fail, MSBuild fails on the clang step:With objdump, that
__LD,__compact_unwindsection looks like: