Thanks for fixing my previous Chrome bug! I've made it easier to try out non-lld linkers when building chrome with target_os="android"
gn gen out/Debug --args 'target_os="android" is_component_build=false experimental_linker_path="/code/wild/ld"'
autoninja -C out/Debug libchrome.so
"python3" "../../build/toolchain/gcc_link_wrapper.py" --output="./devil_util_bin" --strip="../../third_party/llvm-build/Release+Asserts/bin/llvm-strip" --unstripped-file="./exe.unstripped/devil_util_bin" -- ../../third_party/llvm-build/Release+Asserts/bin/clang++ -Werror -fPIC -Wl,--exclude-libs=libvpx_assembly_arm.a -Wl,-z,max-page-size=16384 --target=x86_64-linux-android29 -m64 -no-canonical-prefixes -Wl,--gc-sections -Wl,-z,defs -Wl,--as-needed --unwindlib=none -nostdlib++ --sysroot=../../third_party/android_toolchain/ndk/toolchains/llvm/prebuilt/linux-x86_64/sysroot --ld-path=../../../../wild/ld -Wl,--fatal-warnings -Wl,--build-id -Wl,-z,noexecstack -Wl,-z,relro -Wl,-z,now -pie -Bdynamic -Wl,-z,nocopyreloc -Wl,-wrap,aligned_alloc -Wl,-wrap,calloc -Wl,-wrap,free -Wl,-wrap,malloc -Wl,-wrap,memalign -Wl,-wrap,posix_memalign -Wl,-wrap,pvalloc -Wl,-wrap,realloc -Wl,-wrap,valloc -Wl,-wrap,malloc_usable_size -Wl,-wrap,realpath -Wl,-wrap,strdup -Wl,-wrap,strndup -Wl,-wrap,getcwd -Wl,-wrap,asprintf -Wl,-wrap,vasprintf -o "./exe.unstripped/devil_util_bin" -Wl,--start-group @"./devil_util_bin.rsp" -Wl,--end-group ../../third_party/llvm-build/Release+Asserts/lib/clang/23/lib/linux/libclang_rt.builtins-x86_64-android.a -ldl -lm -landroid -llog -lbinder_ndk -Wl,--start-group obj/third_party/rust/cxx/v1/lib/libcxx_lib.rlib obj/third_party/rust/foldhash/v0_2/lib/libfoldhash_lib.rlib local_rustc_sysroot/lib/rustlib/x86_64-linux-android/lib/libstd_std.rlib local_rustc_sysroot/lib/rustlib/x86_64-linux-android/lib/liballoc_alloc.rlib local_rustc_sysroot/lib/rustlib/x86_64-linux-android/lib/libcompiler_builtins_compiler_builtins.rlib local_rustc_sysroot/lib/rustlib/x86_64-linux-android/lib/libcore_core.rlib local_rustc_sysroot/lib/rustlib/x86_64-linux-android/lib/libprofiler_builtins_profiler_builtins.rlib local_rustc_sysroot/lib/rustlib/x86_64-linux-android/lib/libcfg_if_cfg_if.rlib local_rustc_sysroot/lib/rustlib/x86_64-linux-android/lib/librustc_std_workspace_core_rustc_std_workspace_core.rlib local_rustc_sysroot/lib/rustlib/x86_64-linux-android/lib/libhashbrown_hashbrown.rlib local_rustc_sysroot/lib/rustlib/x86_64-linux-android/lib/librustc_std_workspace_alloc_rustc_std_workspace_alloc.rlib local_rustc_sysroot/lib/rustlib/x86_64-linux-android/lib/libpanic_abort_panic_abort.rlib local_rustc_sysroot/lib/rustlib/x86_64-linux-android/lib/liblibc_libc.rlib local_rustc_sysroot/lib/rustlib/x86_64-linux-android/lib/libpanic_unwind_panic_unwind.rlib local_rustc_sysroot/lib/rustlib/x86_64-linux-android/lib/libunwind_unwind.rlib local_rustc_sysroot/lib/rustlib/x86_64-linux-android/lib/librustc_demangle_rustc_demangle.rlib local_rustc_sysroot/lib/rustlib/x86_64-linux-android/lib/libstd_detect_std_detect.rlib local_rustc_sysroot/lib/rustlib/x86_64-linux-android/lib/libaddr2line_addr2line.rlib local_rustc_sysroot/lib/rustlib/x86_64-linux-android/lib/libgimli_gimli.rlib local_rustc_sysroot/lib/rustlib/x86_64-linux-android/lib/libminiz_oxide_miniz_oxide.rlib local_rustc_sysroot/lib/rustlib/x86_64-linux-android/lib/libadler2_adler2.rlib local_rustc_sysroot/lib/rustlib/x86_64-linux-android/lib/libobject_object.rlib local_rustc_sysroot/lib/rustlib/x86_64-linux-android/lib/libmemchr_memchr.rlib local_rustc_sysroot/lib/rustlib/x86_64-linux-android/lib/libgetopts_getopts.rlib local_rustc_sysroot/lib/rustlib/x86_64-linux-android/lib/librustc_std_workspace_std_rustc_std_workspace_std.rlib local_rustc_sysroot/lib/rustlib/x86_64-linux-android/lib/libtest_test.rlib obj/build/rust/allocator/liballocator_6ead5877.rlib obj/build/rust/allocator/liballoc_error_handler_impl_ffi.rlib obj/build/rust/allocator/liballocator_impls_ffi.rlib obj/base/librust_logger_40cec81c.rlib obj/base/liblogging_log_severity_bindgen_40cec81c.rlib obj/third_party/rust/log/v0_4/lib/liblog_lib.rlib obj/build/rust/chromium_prelude/libchromium.rlib obj/third_party/rust/serde_json_lenient/v0_2/wrapper/libwrapper_a1515e45.rlib obj/third_party/rust/serde/v1/lib/libserde_lib.rlib obj/third_party/rust/serde_core/v1/lib/libserde_core_lib.rlib obj/third_party/rust/serde_json_lenient/v0_2/lib/libserde_json_lenient_lib.rlib obj/third_party/rust/itoa/v1/lib/libitoa_lib.rlib obj/third_party/rust/memchr/v2/lib/libmemchr_lib.rlib obj/third_party/rust/ryu/v1/lib/libryu_lib.rlib -Wl,--end-group
build step: link "./devil_util_bin"
siso_rule: clang/link
stderr:
wild: error: unrecognized option(s): --use-android-relr-tags, --pack-dyn-relocs=relr
clang++: error: linker command failed with exit code 255 (use -v to see invocation)
It would be great if wild supported RELR relocations, but in the very least, if it could at least add support for parsing these flags and have them be warnings instead of errors.
Thanks for fixing my previous Chrome bug! I've made it easier to try out non-lld linkers when building chrome with target_os="android"
With a chromium checkout
This fails with:
Note that it's clang++ that adds these flags, based on
--target=x86_64-linux-android29It would be great if wild supported RELR relocations, but in the very least, if it could at least add support for parsing these flags and have them be warnings instead of errors.