Domain/Android
Android NDK binary built with aarch64-llvm doesn't detect 'divide by zero'!
yhcting
2023. 9. 18. 22:32
The title says it all (surprisingly).
This is my test.
Test source code - a.c
#include <stdio.h>
int main() {
int a = 0;
printf("%d\n", 1 / a);
printf("Done\n");
return 0;
}
Build it for x64 (ubuntu 22.04).
$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 22.04.3 LTS
Release: 22.04
Codename: jammy
$ gcc --version
gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0
$ gcc a.c
$ ./a.out
Floating point exception (core dumped)
However, built it for aarch64 with android-ndk toolchain.
$ android/ndk/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android33-clang a.c
$ adb push a.out /data/a.out
$ adb shell /data/a.out
0
Done
No error! Just gives ZERO!!