Android application type
Classic Xamarin.Android (MonoAndroid12.0, etc.)
Affected platform version
Android NDK 23.2.8568313
Description
Error message [aot-compiler stderr] ... invalid character in input.
This seems to result from using unicode characters in identifiers, including σ and Ѫ. Both of these are letter characters.
There was a breaking change in C++ and/or LLVM llvm/llvm-project#54732 which reduced the allowable identifiers, but every indication there is that letter characters are still supported, so that issue wouldn't seem to explain this problem, unless some implementation removed not only unicode non-letters but all non-ascii unicode letters by mistake.
Non-working Android NDKs:
23.2.8568313
24.0.8215888
25.1.8937393
Working Android NDKs:
22.1.7171670
Currently this is blocking compilation of our app on Azure Devops, which has the non-working versions. But we can build in a VS locally which has the older working version.
This is in a dotnet Xamarin.Forms app with full mono AOT/LLVM on.
If this is the wrong repo for the bug report please let me know.
Steps to Reproduce
Build https://github.com/FoggyFinder/XFAMCVE7336
The main branch displays the build failure in the simplest way (without specifying NDK), and the consistency branch has it fail only with newer NDKs.
Did you find any workaround?
No response
Relevant log output
[aot-compiler stdout] Executing the native linker: "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Xamarin\Android\binutils\bin\x86_64-linux-android-ld.CMD" -Bsymbolic -shared -o obj\Release\130\aot\x86_64\libaot-40AppStorage.dll.so.tmp "obj\Release\130\aot\x86_64\40AppStorage.dll\temp-llvm.o" obj\Release\130\aot\x86_64\40AppStorage.dll\temp.s.o "-LC:\Program Files (x86)\Android\android-sdk
dk\25.1.8937393\toolchains\llvm\prebuilt\windows-x86_64\sysroot\usr\lib\x86_64-linux-android\21" "C:\Program Files (x86)\Android\android-sdk
dk\25.1.8937393\toolchains\llvm\prebuilt\windows-x86_64\sysroot\usr\lib\x86_64-linux-android\21\libc.so" "C:\Program Files (x86)\Android\android-sdk
dk\25.1.8937393\toolchains\llvm\prebuilt\windows-x86_64\sysroot\usr\lib\x86_64-linux-android\21\libm.so" -s
[aot-compiler stdout] JIT time: 141 ms, Generation time: 1321 ms, Assembly+Link time: 525 ms.
[aot-compiler stderr] obj\\Release\\130\\aot\\x86_64\\40AppStorage.dll\\temp.s:2446:40: error: invalid character in input
Android application type
Classic Xamarin.Android (MonoAndroid12.0, etc.)
Affected platform version
Android NDK 23.2.8568313
Description
Error message
[aot-compiler stderr] ... invalid character in input.This seems to result from using unicode characters in identifiers, including σ and Ѫ. Both of these are letter characters.
There was a breaking change in C++ and/or LLVM llvm/llvm-project#54732 which reduced the allowable identifiers, but every indication there is that letter characters are still supported, so that issue wouldn't seem to explain this problem, unless some implementation removed not only unicode non-letters but all non-ascii unicode letters by mistake.
Non-working Android NDKs:
23.2.8568313
24.0.8215888
25.1.8937393
Working Android NDKs:
22.1.7171670
Currently this is blocking compilation of our app on Azure Devops, which has the non-working versions. But we can build in a VS locally which has the older working version.
This is in a dotnet Xamarin.Forms app with full mono AOT/LLVM on.
If this is the wrong repo for the bug report please let me know.
Steps to Reproduce
Build https://github.com/FoggyFinder/XFAMCVE7336
The main branch displays the build failure in the simplest way (without specifying NDK), and the
consistencybranch has it fail only with newer NDKs.Did you find any workaround?
No response
Relevant log output