-
Notifications
You must be signed in to change notification settings - Fork 5.2k
Open
Milestone
Description
Description
Attempting to link the .NET for Android NAOT sample breaks when NDK r29 is installed, with the following error (output broken up into lines to make it easier to read):
Android (13989888, +pgo, +bolt, +lto, +mlgo, based on r563880c) clang version 21.0.0 (https://android.googlesource.com/toolchain/llvm-project 5e96669f06077099aa41290cdb4c5e6fa0f59349)
Target: aarch64-unknown-linux-android21
Thread model: posix
InstalledDir: ~/android-toolchain/ndk/toolchains/llvm/prebuilt/linux-x86_64/bin
"~/android-toolchain/ndk/toolchains/llvm/prebuilt/linux-x86_64/bin/ld.lld" -EL
--fix-cortex-a53-843419 -z now -z relro -z max-page-size=16384 --no-rosegment --hash-style=both
--eh-frame-hdr -m aarch64linux -shared
-o bin/Release/net10.0-android/android-arm64/native/NativeAOT.so
~/android-toolchain/ndk/toolchains/llvm/prebuilt/linux-x86_64/bin/../sysroot/usr/lib/aarch64-linux-android/21/crtbegin_so.o
-L~/android-toolchain/ndk/toolchains/llvm/prebuilt/linux-x86_64/lib/clang/21/lib/linux/aarch64
-L~/android-toolchain/ndk/toolchains/llvm/prebuilt/linux-x86_64/bin/../sysroot/usr/lib/aarch64-linux-android/21
-L~/android-toolchain/ndk/toolchains/llvm/prebuilt/linux-x86_64/bin/../sysroot/usr/lib/aarch64-linux-android
-L~/android-toolchain/ndk/toolchains/llvm/prebuilt/linux-x86_64/bin/../sysroot/usr/lib
--compress-debug-sections=zlib obj/Release/net10.0-android/android-arm64/native/NativeAOT.o
--version-script=obj/Release/net10.0-android/android-arm64/native/NativeAOT.exports
--export-dynamic
~/.nuget/packages/microsoft.netcore.app.runtime.nativeaot.android-arm64/10.0.0/runtimes/android-arm64/native/libSystem.Native.a
~/.nuget/packages/microsoft.netcore.app.runtime.nativeaot.android-arm64/10.0.0/runtimes/android-arm64/native/libSystem.Globalization.Native.a
~/.nuget/packages/microsoft.netcore.app.runtime.nativeaot.android-arm64/10.0.0/runtimes/android-arm64/native/libSystem.IO.Compression.Native.a
~/.nuget/packages/microsoft.netcore.app.runtime.nativeaot.android-arm64/10.0.0/runtimes/android-arm64/native/libSystem.Security.Cryptography.Native.Android.a
~/.nuget/packages/microsoft.netcore.app.runtime.nativeaot.android-arm64/10.0.0/runtimes/android-arm64/native/libbootstrapperdll.o
~/.nuget/packages/microsoft.netcore.app.runtime.nativeaot.android-arm64/10.0.0/runtimes/android-arm64/native/libRuntime.WorkstationGC.a
~/.nuget/packages/microsoft.netcore.app.runtime.nativeaot.android-arm64/10.0.0/runtimes/android-arm64/native/libeventpipe-disabled.a
~/.nuget/packages/microsoft.netcore.app.runtime.nativeaot.android-arm64/10.0.0/runtimes/android-arm64/native/libstandalonegc-disabled.a
~/.nuget/packages/microsoft.netcore.app.runtime.nativeaot.android-arm64/10.0.0/runtimes/android-arm64/native/libaotminipal.a
~/.nuget/packages/microsoft.netcore.app.runtime.nativeaot.android-arm64/10.0.0/runtimes/android-arm64/native/libbrotlienc.a
~/.nuget/packages/microsoft.netcore.app.runtime.nativeaot.android-arm64/10.0.0/runtimes/android-arm64/native/libbrotlidec.a
~/.nuget/packages/microsoft.netcore.app.runtime.nativeaot.android-arm64/10.0.0/runtimes/android-arm64/native/libbrotlicommon.a
--build-id=sha1 --as-needed -e 0x0 -ldl -lz -llog -lm -z relro -z now --eh-frame-hdr -z
max-page-size=16384 -soname libNativeAOT.so --error-unresolved-symbols --no-undefined
~/vc/xamarin/xamarin-android-worktrees/ndk-r29/bin/Debug/lib/packs/Microsoft.Android.Runtime.NativeAOT.36.android-arm64/36.1.99/runtimes/android-arm64/native/libnaot-android.release-static-release.a
~/android-toolchain/ndk/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib/aarch64-linux-android/libc++_static.a
~/android-toolchain/ndk/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib/aarch64-linux-android/libc++abi.a
obj/Release/net10.0-android/android-arm64/android/jni_init_funcs.arm64-v8a.o
obj/Release/net10.0-android/android-arm64/android/environment.arm64-v8a.o --discard-all
--gc-sections -T obj/Release/net10.0-android/android-arm64/native/sections.ld
~/android-toolchain/ndk/toolchains/llvm/prebuilt/linux-x86_64/lib/clang/21/lib/linux/libclang_rt.builtins-aarch64-android.a
-l:libunwind.a -ldl -lc
~/android-toolchain/ndk/toolchains/llvm/prebuilt/linux-x86_64/lib/clang/21/lib/linux/libclang_rt.builtins-aarch64-android.a
-l:libunwind.a -ldl
~/android-toolchain/ndk/toolchains/llvm/prebuilt/linux-x86_64/bin/../sysroot/usr/lib/aarch64-linux-android/21/crtend_so.o
ld.lld: error: duplicate symbol: __unw_init_local
>>> defined at libunwind.cpp:44 (/__w/1/s/src/runtime/src/native/external/llvm-libunwind/src/libunwind.cpp:44)
>>> libunwind.cpp.o:(__unw_init_local) in archive ~/.nuget/packages/microsoft.netcore.app.runtime.nativeaot.android-arm64/10.0.0/runtimes/android-arm64/native/libRuntime.WorkstationGC.a
>>> defined at libunwind.cpp
>>> libunwind.cpp.o:(.text.__unw_init_local+0x0) in archive ~/android-toolchain/ndk/toolchains/llvm/prebuilt/linux-x86_64/lib/clang/21/lib/linux/aarch64/libunwind.a
ld.lld: error: duplicate symbol: libunwind::LocalAddressSpace::sThisAddressSpace
>>> defined at libunwind.cpp
>>> libunwind.cpp.o:(libunwind::LocalAddressSpace::sThisAddressSpace) in archive ~/.nuget/packages/microsoft.netcore.app.runtime.nativeaot.android-arm64/10.0.0/runtimes/android-arm64/native/libRuntime.WorkstationGC.a
>>> defined at libunwind.cpp
>>> libunwind.cpp.o:(.bss._ZN9libunwind17LocalAddressSpace17sThisAddressSpaceE+0x0) in archive ~/android-toolchain/ndk/toolchains/llvm/prebuilt/linux-x86_64/lib/clang/21/lib/linux/aarch64/libunwind.a
ld.lld: error: duplicate symbol: __unw_get_reg
>>> defined at libunwind.cpp:99 (/__w/1/s/src/runtime/src/native/external/llvm-libunwind/src/libunwind.cpp:99)
>>> libunwind.cpp.o:(__unw_get_reg) in archive ~/.nuget/packages/microsoft.netcore.app.runtime.nativeaot.android-arm64/10.0.0/runtimes/android-arm64/native/libRuntime.WorkstationGC.a
>>> defined at libunwind.cpp
>>> libunwind.cpp.o:(.text.__unw_get_reg+0x0) in archive ~/android-toolchain/ndk/toolchains/llvm/prebuilt/linux-x86_64/lib/clang/21/lib/linux/aarch64/libunwind.a
ld.lld: error: duplicate symbol: __unw_set_reg
>>> defined at libunwind.cpp:114 (/__w/1/s/src/runtime/src/native/external/llvm-libunwind/src/libunwind.cpp:114)
>>> libunwind.cpp.o:(__unw_set_reg) in archive ~/.nuget/packages/microsoft.netcore.app.runtime.nativeaot.android-arm64/10.0.0/runtimes/android-arm64/native/libRuntime.WorkstationGC.a
>>> defined at libunwind.cpp
>>> libunwind.cpp.o:(.text.__unw_set_reg+0x0) in archive ~/android-toolchain/ndk/toolchains/llvm/prebuilt/linux-x86_64/lib/clang/21/lib/linux/aarch64/libunwind.a
ld.lld: error: duplicate symbol: __unw_get_fpreg
>>> defined at libunwind.cpp:146 (/__w/1/s/src/runtime/src/native/external/llvm-libunwind/src/libunwind.cpp:146)
>>> libunwind.cpp.o:(__unw_get_fpreg) in archive ~/.nuget/packages/microsoft.netcore.app.runtime.nativeaot.android-arm64/10.0.0/runtimes/android-arm64/native/libRuntime.WorkstationGC.a
>>> defined at libunwind.cpp
>>> libunwind.cpp.o:(.text.__unw_get_fpreg+0x0) in archive ~/android-toolchain/ndk/toolchains/llvm/prebuilt/linux-x86_64/lib/clang/21/lib/linux/aarch64/libunwind.a
ld.lld: error: duplicate symbol: __unw_set_fpreg
>>> defined at libunwind.cpp:161 (/__w/1/s/src/runtime/src/native/external/llvm-libunwind/src/libunwind.cpp:161)
>>> libunwind.cpp.o:(__unw_set_fpreg) in archive ~/.nuget/packages/microsoft.netcore.app.runtime.nativeaot.android-arm64/10.0.0/runtimes/android-arm64/native/libRuntime.WorkstationGC.a
>>> defined at libunwind.cpp
>>> libunwind.cpp.o:(.text.__unw_set_fpreg+0x0) in archive ~/android-toolchain/ndk/toolchains/llvm/prebuilt/linux-x86_64/lib/clang/21/lib/linux/aarch64/libunwind.a
ld.lld: error: duplicate symbol: __unw_step
>>> defined at libunwind.cpp:197 (/__w/1/s/src/runtime/src/native/external/llvm-libunwind/src/libunwind.cpp:197)
>>> libunwind.cpp.o:(__unw_step) in archive ~/.nuget/packages/microsoft.netcore.app.runtime.nativeaot.android-arm64/10.0.0/runtimes/android-arm64/native/libRuntime.WorkstationGC.a
>>> defined at libunwind.cpp
>>> libunwind.cpp.o:(.text.__unw_step+0x0) in archive ~/android-toolchain/ndk/toolchains/llvm/prebuilt/linux-x86_64/lib/clang/21/lib/linux/aarch64/libunwind.a
ld.lld: error: duplicate symbol: __unw_step_stage2
>>> defined at libunwind.cpp:207 (/__w/1/s/src/runtime/src/native/external/llvm-libunwind/src/libunwind.cpp:207)
>>> libunwind.cpp.o:(__unw_step_stage2) in archive ~/.nuget/packages/microsoft.netcore.app.runtime.nativeaot.android-arm64/10.0.0/runtimes/android-arm64/native/libRuntime.WorkstationGC.a
>>> defined at libunwind.cpp
>>> libunwind.cpp.o:(.text.__unw_step_stage2+0x0) in archive ~/android-toolchain/ndk/toolchains/llvm/prebuilt/linux-x86_64/lib/clang/21/lib/linux/aarch64/libunwind.a
ld.lld: error: duplicate symbol: __unw_get_proc_info
>>> defined at libunwind.cpp:212 (/__w/1/s/src/runtime/src/native/external/llvm-libunwind/src/libunwind.cpp:212)
>>> libunwind.cpp.o:(__unw_get_proc_info) in archive ~/.nuget/packages/microsoft.netcore.app.runtime.nativeaot.android-arm64/10.0.0/runtimes/android-arm64/native/libRuntime.WorkstationGC.a
>>> defined at libunwind.cpp
>>> libunwind.cpp.o:(.text.__unw_get_proc_info+0x0) in archive ~/android-toolchain/ndk/toolchains/llvm/prebuilt/linux-x86_64/lib/clang/21/lib/linux/aarch64/libunwind.a
ld.lld: error: duplicate symbol: __unw_resume
>>> defined at libunwind.cpp:224 (/__w/1/s/src/runtime/src/native/external/llvm-libunwind/src/libunwind.cpp:224)
>>> libunwind.cpp.o:(__unw_resume) in archive ~/.nuget/packages/microsoft.netcore.app.runtime.nativeaot.android-arm64/10.0.0/runtimes/android-arm64/native/libRuntime.WorkstationGC.a
>>> defined at libunwind.cpp
>>> libunwind.cpp.o:(.text.__unw_resume+0x0) in archive ~/android-toolchain/ndk/toolchains/llvm/prebuilt/linux-x86_64/lib/clang/21/lib/linux/aarch64/libunwind.a
ld.lld: error: duplicate symbol: __unw_get_proc_name
>>> defined at libunwind.cpp:238 (/__w/1/s/src/runtime/src/native/external/llvm-libunwind/src/libunwind.cpp:238)
>>> libunwind.cpp.o:(__unw_get_proc_name) in archive ~/.nuget/packages/microsoft.netcore.app.runtime.nativeaot.android-arm64/10.0.0/runtimes/android-arm64/native/libRuntime.WorkstationGC.a
>>> defined at libunwind.cpp
>>> libunwind.cpp.o:(.text.__unw_get_proc_name+0x0) in archive ~/android-toolchain/ndk/toolchains/llvm/prebuilt/linux-x86_64/lib/clang/21/lib/linux/aarch64/libunwind.a
ld.lld: error: duplicate symbol: __unw_is_fpreg
>>> defined at libunwind.cpp:251 (/__w/1/s/src/runtime/src/native/external/llvm-libunwind/src/libunwind.cpp:251)
>>> libunwind.cpp.o:(__unw_is_fpreg) in archive ~/.nuget/packages/microsoft.netcore.app.runtime.nativeaot.android-arm64/10.0.0/runtimes/android-arm64/native/libRuntime.WorkstationGC.a
>>> defined at libunwind.cpp
>>> libunwind.cpp.o:(.text.__unw_is_fpreg+0x0) in archive ~/android-toolchain/ndk/toolchains/llvm/prebuilt/linux-x86_64/lib/clang/21/lib/linux/aarch64/libunwind.a
ld.lld: error: duplicate symbol: __unw_regname
>>> defined at libunwind.cpp:265 (/__w/1/s/src/runtime/src/native/external/llvm-libunwind/src/libunwind.cpp:265)
>>> libunwind.cpp.o:(__unw_regname) in archive ~/.nuget/packages/microsoft.netcore.app.runtime.nativeaot.android-arm64/10.0.0/runtimes/android-arm64/native/libRuntime.WorkstationGC.a
>>> defined at libunwind.cpp
>>> libunwind.cpp.o:(.text.__unw_regname+0x0) in archive ~/android-toolchain/ndk/toolchains/llvm/prebuilt/linux-x86_64/lib/clang/21/lib/linux/aarch64/libunwind.a
ld.lld: error: duplicate symbol: __unw_is_signal_frame
>>> defined at libunwind.cpp:270 (/__w/1/s/src/runtime/src/native/external/llvm-libunwind/src/libunwind.cpp:270)
>>> libunwind.cpp.o:(__unw_is_signal_frame) in archive ~/.nuget/packages/microsoft.netcore.app.runtime.nativeaot.android-arm64/10.0.0/runtimes/android-arm64/native/libRuntime.WorkstationGC.a
>>> defined at libunwind.cpp
>>> libunwind.cpp.o:(.text.__unw_is_signal_frame+0x0) in archive ~/android-toolchain/ndk/toolchains/llvm/prebuilt/linux-x86_64/lib/clang/21/lib/linux/aarch64/libunwind.a
ld.lld: error: duplicate symbol: __unw_iterate_dwarf_unwind_cache
>>> defined at libunwind.cpp:303 (/__w/1/s/src/runtime/src/native/external/llvm-libunwind/src/libunwind.cpp:303)
>>> libunwind.cpp.o:(__unw_iterate_dwarf_unwind_cache) in archive ~/.nuget/packages/microsoft.netcore.app.runtime.nativeaot.android-arm64/10.0.0/runtimes/android-arm64/native/libRuntime.WorkstationGC.a
>>> defined at libunwind.cpp
>>> libunwind.cpp.o:(.text.__unw_iterate_dwarf_unwind_cache+0x0) in archive ~/android-toolchain/ndk/toolchains/llvm/prebuilt/linux-x86_64/lib/clang/21/lib/linux/aarch64/libunwind.a
ld.lld: error: duplicate symbol: __unw_add_dynamic_fde
>>> defined at libunwind.cpp:312 (/__w/1/s/src/runtime/src/native/external/llvm-libunwind/src/libunwind.cpp:312)
>>> libunwind.cpp.o:(__unw_add_dynamic_fde) in archive ~/.nuget/packages/microsoft.netcore.app.runtime.nativeaot.android-arm64/10.0.0/runtimes/android-arm64/native/libRuntime.WorkstationGC.a
>>> defined at libunwind.cpp
>>> libunwind.cpp.o:(.text.__unw_add_dynamic_fde+0x0) in archive ~/android-toolchain/ndk/toolchains/llvm/prebuilt/linux-x86_64/lib/clang/21/lib/linux/aarch64/libunwind.a
ld.lld: error: duplicate symbol: __unw_remove_dynamic_fde
>>> defined at libunwind.cpp:331 (/__w/1/s/src/runtime/src/native/external/llvm-libunwind/src/libunwind.cpp:331)
>>> libunwind.cpp.o:(__unw_remove_dynamic_fde) in archive ~/.nuget/packages/microsoft.netcore.app.runtime.nativeaot.android-arm64/10.0.0/runtimes/android-arm64/native/libRuntime.WorkstationGC.a
>>> defined at libunwind.cpp
>>> libunwind.cpp.o:(.text.__unw_remove_dynamic_fde+0x0) in archive ~/android-toolchain/ndk/toolchains/llvm/prebuilt/linux-x86_64/lib/clang/21/lib/linux/aarch64/libunwind.a
ld.lld: error: duplicate symbol: __unw_add_dynamic_eh_frame_section
>>> defined at libunwind.cpp:336 (/__w/1/s/src/runtime/src/native/external/llvm-libunwind/src/libunwind.cpp:336)
>>> libunwind.cpp.o:(__unw_add_dynamic_eh_frame_section) in archive ~/.nuget/packages/microsoft.netcore.app.runtime.nativeaot.android-arm64/10.0.0/runtimes/android-arm64/native/libRuntime.WorkstationGC.a
>>> defined at libunwind.cpp
>>> libunwind.cpp.o:(.text.__unw_add_dynamic_eh_frame_section+0x0) in archive ~/android-toolchain/ndk/toolchains/llvm/prebuilt/linux-x86_64/lib/clang/21/lib/linux/aarch64/libunwind.a
ld.lld: error: duplicate symbol: __unw_remove_dynamic_eh_frame_section
>>> defined at libunwind.cpp:358 (/__w/1/s/src/runtime/src/native/external/llvm-libunwind/src/libunwind.cpp:358)
>>> libunwind.cpp.o:(__unw_remove_dynamic_eh_frame_section) in archive ~/.nuget/packages/microsoft.netcore.app.runtime.nativeaot.android-arm64/10.0.0/runtimes/android-arm64/native/libRuntime.WorkstationGC.a
>>> defined at libunwind.cpp
>>> libunwind.cpp.o:(.text.__unw_remove_dynamic_eh_frame_section+0x0) in archive ~/android-toolchain/ndk/toolchains/llvm/prebuilt/linux-x86_64/lib/clang/21/lib/linux/aarch64/libunwind.a
ld.lld: error: duplicate symbol: unw_local_addr_space
>>> defined at libunwind.cpp:38 (/__w/1/s/src/runtime/src/native/external/llvm-libunwind/src/libunwind.cpp:38)
>>> libunwind.cpp.o:(unw_local_addr_space) in archive ~/.nuget/packages/microsoft.netcore.app.runtime.nativeaot.android-arm64/10.0.0/runtimes/android-arm64/native/libRuntime.WorkstationGC.a
>>> defined at libunwind.cpp
>>> libunwind.cpp.o:(.data.unw_local_addr_space+0x0) in archive ~/android-toolchain/ndk/toolchains/llvm/prebuilt/linux-x86_64/lib/clang/21/lib/linux/aarch64/libunwind.a
I hoped that passing -unwindlib=none would make linking work, but unfortunately, it causes the following error:
Android (13989888, +pgo, +bolt, +lto, +mlgo, based on r563880c) clang version 21.0.0 (https://android.googlesource.com/toolchain/llvm-project 5e96669f06077099aa41290cdb4c5e6fa0f59349)
Target: aarch64-unknown-linux-android21
Thread model: posix
InstalledDir: ~/android-toolchain/ndk/toolchains/llvm/prebuilt/linux-x86_64/bin
"~/android-toolchain/ndk/toolchains/llvm/prebuilt/linux-x86_64/bin/ld.lld" -EL
--fix-cortex-a53-843419 -z now -z relro -z max-page-size=16384 --no-rosegment --hash-style=both
--eh-frame-hdr -m aarch64linux -shared -o
bin/Release/net10.0-android/android-arm64/native/NativeAOT.so
~/android-toolchain/ndk/toolchains/llvm/prebuilt/linux-x86_64/bin/../sysroot/usr/lib/aarch64-linux-android/21/crtbegin_so.o
-L~/android-toolchain/ndk/toolchains/llvm/prebuilt/linux-x86_64/lib/clang/21/lib/linux/aarch64
-L~/android-toolchain/ndk/toolchains/llvm/prebuilt/linux-x86_64/bin/../sysroot/usr/lib/aarch64-linux-android/21
-L~/android-toolchain/ndk/toolchains/llvm/prebuilt/linux-x86_64/bin/../sysroot/usr/lib/aarch64-linux-android
-L~/android-toolchain/ndk/toolchains/llvm/prebuilt/linux-x86_64/bin/../sysroot/usr/lib
--compress-debug-sections=zlib obj/Release/net10.0-android/android-arm64/native/NativeAOT.o
--version-script=obj/Release/net10.0-android/android-arm64/native/NativeAOT.exports
--export-dynamic
~/.nuget/packages/microsoft.netcore.app.runtime.nativeaot.android-arm64/10.0.0/runtimes/android-arm64/native/libSystem.Native.a
~/.nuget/packages/microsoft.netcore.app.runtime.nativeaot.android-arm64/10.0.0/runtimes/android-arm64/native/libSystem.Globalization.Native.a
~/.nuget/packages/microsoft.netcore.app.runtime.nativeaot.android-arm64/10.0.0/runtimes/android-arm64/native/libSystem.IO.Compression.Native.a
~/.nuget/packages/microsoft.netcore.app.runtime.nativeaot.android-arm64/10.0.0/runtimes/android-arm64/native/libSystem.Security.Cryptography.Native.Android.a
~/.nuget/packages/microsoft.netcore.app.runtime.nativeaot.android-arm64/10.0.0/runtimes/android-arm64/native/libbootstrapperdll.o
~/.nuget/packages/microsoft.netcore.app.runtime.nativeaot.android-arm64/10.0.0/runtimes/android-arm64/native/libRuntime.WorkstationGC.a
~/.nuget/packages/microsoft.netcore.app.runtime.nativeaot.android-arm64/10.0.0/runtimes/android-arm64/native/libeventpipe-disabled.a
~/.nuget/packages/microsoft.netcore.app.runtime.nativeaot.android-arm64/10.0.0/runtimes/android-arm64/native/libstandalonegc-disabled.a
~/.nuget/packages/microsoft.netcore.app.runtime.nativeaot.android-arm64/10.0.0/runtimes/android-arm64/native/libaotminipal.a
~/.nuget/packages/microsoft.netcore.app.runtime.nativeaot.android-arm64/10.0.0/runtimes/android-arm64/native/libbrotlienc.a
~/.nuget/packages/microsoft.netcore.app.runtime.nativeaot.android-arm64/10.0.0/runtimes/android-arm64/native/libbrotlidec.a
~/.nuget/packages/microsoft.netcore.app.runtime.nativeaot.android-arm64/10.0.0/runtimes/android-arm64/native/libbrotlicommon.a
--build-id=sha1 --as-needed -e 0x0 -ldl -lz -llog -lm -z relro -z now --eh-frame-hdr -z
max-page-size=16384 -soname libNativeAOT.so --error-unresolved-symbols --no-undefined
~/vc/xamarin/xamarin-android-worktrees/ndk-r29/bin/Debug/lib/packs/Microsoft.Android.Runtime.NativeAOT.36.android-arm64/36.1.99/runtimes/android-arm64/native/libnaot-android.release-static-release.a
~/android-toolchain/ndk/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib/aarch64-linux-android/libc++_static.a
~/android-toolchain/ndk/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib/aarch64-linux-android/libc++abi.a
obj/Release/net10.0-android/android-arm64/android/jni_init_funcs.arm64-v8a.o
obj/Release/net10.0-android/android-arm64/android/environment.arm64-v8a.o --discard-all
--gc-sections -T obj/Release/net10.0-android/android-arm64/native/sections.ld
~/android-toolchain/ndk/toolchains/llvm/prebuilt/linux-x86_64/lib/clang/21/lib/linux/libclang_rt.builtins-aarch64-android.a
-ldl -lc
~/android-toolchain/ndk/toolchains/llvm/prebuilt/linux-x86_64/lib/clang/21/lib/linux/libclang_rt.builtins-aarch64-android.a
-ldl
~/android-toolchain/ndk/toolchains/llvm/prebuilt/linux-x86_64/bin/../sysroot/usr/lib/aarch64-linux-android/21/crtend_so.o
ld.lld: error: undefined symbol: _Unwind_Resume
>>> referenced by stdexcept:0 (out/lib/device-libcxx-aarch64-ndk-cxx/include/c++/v1/stdexcept:0)
>>> hash.cpp.o:(std::__ndk1::__throw_overflow_error[abi:ne210000](char const*)) in archive ~/android-toolchain/ndk/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib/aarch64-linux-android/libc++_static.a
>>> referenced by thread.cpp:0 (out/llvm-project/libcxx/src/thread.cpp:0)
>>> thread.cpp.o:(std::__ndk1::__thread_local_data()) in archive ~/android-toolchain/ndk/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib/aarch64-linux-android/libc++_static.a
>>> referenced by call_once.cpp:0 (out/llvm-project/libcxx/src/call_once.cpp:0)
>>> call_once.cpp.o:(std::__ndk1::__call_once(unsigned long volatile&, void*, void (*)(void*))) in archive ~/android-toolchain/ndk/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib/aarch64-linux-android/libc++_static.a
>>> referenced 198 more times
ld.lld: error: undefined symbol: _Unwind_RaiseException
>>> referenced by cxa_exception.cpp:295 (out/llvm-project/libcxxabi/src/cxa_exception.cpp:295)
>>> cxa_exception.cpp.o:(__cxa_throw) in archive ~/android-toolchain/ndk/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib/aarch64-linux-android/libc++abi.a
ld.lld: error: undefined symbol: _Unwind_SetGR
>>> referenced by cxa_personality.cpp:556 (out/llvm-project/libcxxabi/src/cxa_personality.cpp:556)
>>> cxa_personality.cpp.o:(__gxx_personality_v0) in archive ~/android-toolchain/ndk/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib/aarch64-linux-android/libc++abi.a
>>> referenced by cxa_personality.cpp:558 (out/llvm-project/libcxxabi/src/cxa_personality.cpp:558)
>>> cxa_personality.cpp.o:(__gxx_personality_v0) in archive ~/android-toolchain/ndk/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib/aarch64-linux-android/libc++abi.a
>>> referenced by cxa_personality.cpp:556 (out/llvm-project/libcxxabi/src/cxa_personality.cpp:556)
>>> cxa_personality.cpp.o:(__gxx_personality_v0) in archive ~/android-toolchain/ndk/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib/aarch64-linux-android/libc++abi.a
>>> referenced 1 more times
ld.lld: error: undefined symbol: _Unwind_SetIP
>>> referenced by cxa_personality.cpp:560 (out/llvm-project/libcxxabi/src/cxa_personality.cpp:560)
>>> cxa_personality.cpp.o:(__gxx_personality_v0) in archive ~/android-toolchain/ndk/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib/aarch64-linux-android/libc++abi.a
>>> referenced by cxa_personality.cpp:560 (out/llvm-project/libcxxabi/src/cxa_personality.cpp:560)
>>> cxa_personality.cpp.o:(__gxx_personality_v0) in archive ~/android-toolchain/ndk/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib/aarch64-linux-android/libc++abi.a
ld.lld: error: undefined symbol: _Unwind_GetLanguageSpecificData
>>> referenced by cxa_personality.cpp:626 (out/llvm-project/libcxxabi/src/cxa_personality.cpp:626)
>>> cxa_personality.cpp.o:(__gxx_personality_v0) in archive ~/android-toolchain/ndk/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib/aarch64-linux-android/libc++abi.a
ld.lld: error: undefined symbol: _Unwind_GetIP
>>> referenced by cxa_personality.cpp:641 (out/llvm-project/libcxxabi/src/cxa_personality.cpp:641)
>>> cxa_personality.cpp.o:(__gxx_personality_v0) in archive ~/android-toolchain/ndk/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib/aarch64-linux-android/libc++abi.a
ld.lld: error: undefined symbol: _Unwind_GetRegionStart
>>> referenced by cxa_personality.cpp:644 (out/llvm-project/libcxxabi/src/cxa_personality.cpp:644)
>>> cxa_personality.cpp.o:(__gxx_personality_v0) in archive ~/android-toolchain/ndk/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib/aarch64-linux-android/libc++abi.a
ld.lld: error: undefined symbol: _Unwind_DeleteException
>>> referenced by cxa_exception.cpp:586 (out/llvm-project/libcxxabi/src/cxa_exception.cpp:586)
>>> cxa_exception.cpp.o:(__cxa_end_catch) in archive ~/android-toolchain/ndk/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib/aarch64-linux-android/libc++abi.a
The problem, I think, stems from the fact that libRuntime.WorkstationGC.a exports libunwind symbols where it should keep them hidden:
microsoft.netcore.app.runtime.nativeaot.android-arm64/10.0.0/runtimes/android-arm64/native$ nm -C libRuntime.WorkstationGC.a | grep __unw
0000000000000000 T __unw_add_dynamic_eh_frame_section
0000000000000000 T __unw_add_dynamic_fde
0000000000000000 T __unw_get_fpreg
0000000000000000 T __unw_get_proc_info
0000000000000000 T __unw_get_proc_name
0000000000000000 T __unw_get_reg
0000000000000000 T __unw_get_save_loc
0000000000000000 T __unw_init_local
0000000000000000 T __unw_is_fpreg
0000000000000000 T __unw_is_signal_frame
0000000000000000 T __unw_iterate_dwarf_unwind_cache
0000000000000000 T __unw_regname
0000000000000000 T __unw_remove_dynamic_eh_frame_section
0000000000000000 T __unw_remove_dynamic_fde
0000000000000000 T __unw_resume
0000000000000000 T __unw_set_fpreg
0000000000000000 T __unw_set_reg
0000000000000000 T __unw_step
0000000000000000 T __unw_step_stage2
0000000000000000 T __unw_getcontextNDK r29 uses LLVM 21
Reproduction Steps
- Check out the https://github.com/dotnet/android/
dev/grendel/ndk-r29branch locally (from this PR) - Go to the checked-out directory and run:
- On Linux/macOS:
make prepare all - On Windows:
build.cmd
- On Linux/macOS:
- After the build completes, go to the
samples/NativeAOTdirectory and run- On Linux/macOS:
../../dotnet-local.sh build -c Release -bl - On Windows:
..\..\dotnet-local.cmd build -c Release -bl
- On Linux/macOS:
Expected behavior
Application should be linked without errors
Actual behavior
Application linking fails with errors
Regression?
No response
Known Workarounds
No known workarounds
Configuration
- .NET version: 10.0.100
- OS: not dependent on the operating system
- Architecture: not dependent on the architecture
- Specific to building a .NET for Android app using NativeAOT with NDK r29
Other information
No response
Metadata
Metadata
Assignees
Type
Projects
Status
No status