Skip to content

Conversation

@Sunbreak
Copy link

Signed-off-by: Sunbreak sunbreak.wang@gmail.com

Signed-off-by: Sunbreak <sunbreak.wang@gmail.com>
@Sunbreak
Copy link
Author

Building x64 version on Linux fails with libclang_rt.asan-x86_64-android.so and libclang_rt.asan_static-x86_64-android.a missing

$ NO_INTL=true ./scripts/build.sh android x64
ninja: Entering directory `v8/out.v8.x64'
[1/1] SOLINK_MODULE ./libv8android.so
FAILED: libv8android.so lib.unstripped/libv8android.so
../third_party/llvm-build/Release+Asserts/bin/clang++ -shared -fuse-ld=lld -Wl,--fatal-warnings -Wl,--build-id -fPIC -Wl,-z,noexecstack -Wl,-z,relro -Wl,-z,now -Wl,--color-diagnostics -Wl,--no-rosegment -Wl,--no-call-graph-profile-sort -Wl,--exclude-libs=libgcc.a -Wl,--exclude-libs=libvpx_assembly_arm.a --rtlib=libgcc --target=x86_64-linux-android23 -m64 -no-canonical-prefixes --sysroot=../android-ndk-r21e/toolchains/llvm/prebuilt/linux-x86_64/sysroot --gcc-toolchain=../android-ndk-r21e/toolchains/llvm/prebuilt/linux-x86_64 -Wl,--warn-shared-textrel -fsanitize=address -Wl,--warn-shared-textrel -Wl,-O2 -Wl,--gc-sections -Wl,-u_sanitizer_options_link_helper -fsanitize=address -o "./lib.unstripped/libv8android.so" -Wl,-soname="libv8android.so" @"./libv8android.so.rsp" && ../third_party/llvm-build/Release+Asserts/bin/llvm-strip -o "./libv8android.so" "./lib.unstripped/libv8android.so"
ld.lld: error: cannot open ../third_party/llvm-build/Release+Asserts/lib/clang/15.0.0/lib/linux/libclang_rt.asan-x86_64-android.so: No such file or directory
ld.lld: error: cannot open ../third_party/llvm-build/Release+Asserts/lib/clang/15.0.0/lib/linux/libclang_rt.asan_static-x86_64-android.a: No such file or directory
clang++: error: linker command failed with exit code 1 (use -v to see invocation)
ninja: build stopped: subcommand failed.

However x64 dependencies are missing while arm, x86 and arm64 are present

$ ls -al v8/third_party/llvm-build/Release+Asserts/lib/clang/15.0.0/lib/linux/libclang_rt.asan*android*
-rwxr-xr-x 1 ubuntu ubuntu 1390064 2月  13 16:34 v8/third_party/llvm-build/Release+Asserts/lib/clang/15.0.0/lib/linux/libclang_rt.asan-aarch64-android.so
-rwxr-xr-x 1 ubuntu ubuntu 1316764 2月  13 16:34 v8/third_party/llvm-build/Release+Asserts/lib/clang/15.0.0/lib/linux/libclang_rt.asan-arm-android.so
-rwxr-xr-x 1 ubuntu ubuntu 1385684 2月  13 16:34 v8/third_party/llvm-build/Release+Asserts/lib/clang/15.0.0/lib/linux/libclang_rt.asan-i686-android.so
-rw-r--r-- 1 ubuntu ubuntu    5576 2月  13 16:34 v8/third_party/llvm-build/Release+Asserts/lib/clang/15.0.0/lib/linux/libclang_rt.asan_static-aarch64-android.a
-rw-r--r-- 1 ubuntu ubuntu    4452 2月  13 16:34 v8/third_party/llvm-build/Release+Asserts/lib/clang/15.0.0/lib/linux/libclang_rt.asan_static-arm-android.a
-rw-r--r-- 1 ubuntu ubuntu    4536 2月  13 16:34 v8/third_party/llvm-build/Release+Asserts/lib/clang/15.0.0/lib/linux/libclang_rt.asan_static-i686-android.a

https://github.com/Sunbreak/v8-android-buildscripts/tree/7.8.1-asan has the same problem but a different clang version.

We'd better fix missing dependencies in llvm-build's asserts or use NDK's AddressSanitizer dependencies

$ ls v8/android-ndk-r21e/toolchains/llvm/prebuilt/linux-x86_64/lib64/clang/9.0.9/lib/linux/libclang_rt.asan*android*
v8/android-ndk-r21e/toolchains/llvm/prebuilt/linux-x86_64/lib64/clang/9.0.9/lib/linux/libclang_rt.asan-aarch64-android.a
v8/android-ndk-r21e/toolchains/llvm/prebuilt/linux-x86_64/lib64/clang/9.0.9/lib/linux/libclang_rt.asan-aarch64-android.a.syms
v8/android-ndk-r21e/toolchains/llvm/prebuilt/linux-x86_64/lib64/clang/9.0.9/lib/linux/libclang_rt.asan-aarch64-android.so
v8/android-ndk-r21e/toolchains/llvm/prebuilt/linux-x86_64/lib64/clang/9.0.9/lib/linux/libclang_rt.asan-arm-android.a
v8/android-ndk-r21e/toolchains/llvm/prebuilt/linux-x86_64/lib64/clang/9.0.9/lib/linux/libclang_rt.asan-arm-android.a.syms
v8/android-ndk-r21e/toolchains/llvm/prebuilt/linux-x86_64/lib64/clang/9.0.9/lib/linux/libclang_rt.asan-arm-android.so
v8/android-ndk-r21e/toolchains/llvm/prebuilt/linux-x86_64/lib64/clang/9.0.9/lib/linux/libclang_rt.asan_cxx-aarch64-android.a
v8/android-ndk-r21e/toolchains/llvm/prebuilt/linux-x86_64/lib64/clang/9.0.9/lib/linux/libclang_rt.asan_cxx-aarch64-android.a.syms
v8/android-ndk-r21e/toolchains/llvm/prebuilt/linux-x86_64/lib64/clang/9.0.9/lib/linux/libclang_rt.asan_cxx-arm-android.a
v8/android-ndk-r21e/toolchains/llvm/prebuilt/linux-x86_64/lib64/clang/9.0.9/lib/linux/libclang_rt.asan_cxx-arm-android.a.syms
v8/android-ndk-r21e/toolchains/llvm/prebuilt/linux-x86_64/lib64/clang/9.0.9/lib/linux/libclang_rt.asan_cxx-i686-android.a
v8/android-ndk-r21e/toolchains/llvm/prebuilt/linux-x86_64/lib64/clang/9.0.9/lib/linux/libclang_rt.asan_cxx-x86_64-android.a
v8/android-ndk-r21e/toolchains/llvm/prebuilt/linux-x86_64/lib64/clang/9.0.9/lib/linux/libclang_rt.asan_cxx-x86_64-android.a.syms
v8/android-ndk-r21e/toolchains/llvm/prebuilt/linux-x86_64/lib64/clang/9.0.9/lib/linux/libclang_rt.asan-i686-android.a
v8/android-ndk-r21e/toolchains/llvm/prebuilt/linux-x86_64/lib64/clang/9.0.9/lib/linux/libclang_rt.asan-i686-android.so
v8/android-ndk-r21e/toolchains/llvm/prebuilt/linux-x86_64/lib64/clang/9.0.9/lib/linux/libclang_rt.asan-preinit-aarch64-android.a
v8/android-ndk-r21e/toolchains/llvm/prebuilt/linux-x86_64/lib64/clang/9.0.9/lib/linux/libclang_rt.asan-preinit-arm-android.a
v8/android-ndk-r21e/toolchains/llvm/prebuilt/linux-x86_64/lib64/clang/9.0.9/lib/linux/libclang_rt.asan-preinit-i686-android.a
v8/android-ndk-r21e/toolchains/llvm/prebuilt/linux-x86_64/lib64/clang/9.0.9/lib/linux/libclang_rt.asan-preinit-x86_64-android.a
v8/android-ndk-r21e/toolchains/llvm/prebuilt/linux-x86_64/lib64/clang/9.0.9/lib/linux/libclang_rt.asan-x86_64-android.a
v8/android-ndk-r21e/toolchains/llvm/prebuilt/linux-x86_64/lib64/clang/9.0.9/lib/linux/libclang_rt.asan-x86_64-android.a.syms
v8/android-ndk-r21e/toolchains/llvm/prebuilt/linux-x86_64/lib64/clang/9.0.9/lib/linux/libclang_rt.asan-x86_64-android.so

Signed-off-by: wangkun <wangkun@xiaohongshu.com>
@Kudo
Copy link
Owner

Kudo commented Jul 4, 2022

hi there! thanks for your pr. could you share the insight of using asan libs in production apps?

@Sunbreak
Copy link
Author

Sunbreak commented Jul 4, 2022

hi there! thanks for your pr. could you share the insight of using asan libs in production apps?

ASan helps to debug but reduce the performance. We use it for local test only

@Kudo
Copy link
Owner

Kudo commented Jul 4, 2022

right, but the pr tends to change the release build. imo, if someone needs to turn on asan, we could just have a flag but comment out like the debug build flag

@Sunbreak
Copy link
Author

Sunbreak commented Jul 4, 2022

Yep. This PR is kind of draft. Feel free to change if you want

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants