Skip to content

Unicode letter identifiers cause compilation failures in recent AOT toolchains #7336

Description

@charlesroddie

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

Metadata

Metadata

Labels

Area: App+Library BuildIssues when building Library projects or Application projects.possibly-staleIssues that are potentially no longer relevant.

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions