Skip to content

wild: error: unrecognized option(s): --use-android-relr-tags, --pack-dyn-relocs=relr #1561

@agrieve

Description

@agrieve

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

gn gen out/Debug --args 'target_os="android" is_component_build=false experimental_linker_path="/code/wild/ld"'
autoninja -C out/Debug libchrome.so

This fails with:

"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)

Note that it's clang++ that adds these flags, based on --target=x86_64-linux-android29

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.

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions