[compiler-rt] 7524fe9 - [libFuzzer] Use the compiler to link the relocatable object
Petr Hosek via llvm-commits
llvm-commits at lists.llvm.org
Wed Jun 15 00:16:53 PDT 2022
Author: Petr Hosek
Date: 2022-06-15T07:16:40Z
New Revision: 7524fe962e479416fd6318407eff4eed5b96a40b
URL: https://github.com/llvm/llvm-project/commit/7524fe962e479416fd6318407eff4eed5b96a40b
DIFF: https://github.com/llvm/llvm-project/commit/7524fe962e479416fd6318407eff4eed5b96a40b.diff
LOG: [libFuzzer] Use the compiler to link the relocatable object
Rather than invoking the linker directly, let the compiler driver
handle it. This ensures that we use the correct linker in the case
of cross-compiling.
Differential Revision: https://reviews.llvm.org/D127828
Added:
Modified:
compiler-rt/lib/fuzzer/CMakeLists.txt
Removed:
################################################################################
diff --git a/compiler-rt/lib/fuzzer/CMakeLists.txt b/compiler-rt/lib/fuzzer/CMakeLists.txt
index d51de53f5accd..856cd732d5175 100644
--- a/compiler-rt/lib/fuzzer/CMakeLists.txt
+++ b/compiler-rt/lib/fuzzer/CMakeLists.txt
@@ -138,15 +138,15 @@ if(OS_NAME MATCHES "Linux|Fuchsia" AND
COMPILER_RT_LIBCXX_PATH AND
COMPILER_RT_LIBCXXABI_PATH)
macro(partially_link_libcxx name dir arch)
- if(${arch} MATCHES "i386")
- set(EMULATION_ARGUMENT "-m" "elf_i386")
- else()
- set(EMULATION_ARGUMENT "")
+ get_target_flags_for_arch(${arch} target_cflags)
+ if(CMAKE_CXX_COMPILER_ID MATCHES Clang)
+ get_compiler_rt_target(${arch} target)
+ set(target_cflags "--target=${target} ${target_cflags}")
endif()
set(cxx_${arch}_merge_dir "${CMAKE_CURRENT_BINARY_DIR}/cxx_${arch}_merge.dir")
file(MAKE_DIRECTORY ${cxx_${arch}_merge_dir})
add_custom_command(TARGET clang_rt.${name}-${arch} POST_BUILD
- COMMAND ${CMAKE_LINKER} ${EMULATION_ARGUMENT} --whole-archive "$<TARGET_LINKER_FILE:clang_rt.${name}-${arch}>" --no-whole-archive ${dir}/lib/libc++.a -r -o ${name}.o
+ COMMAND ${CMAKE_CXX_COMPILER} ${target_cflags} -Wl,--whole-archive "$<TARGET_LINKER_FILE:clang_rt.${name}-${arch}>" -Wl,--no-whole-archive ${dir}/lib/libc++.a -r -o ${name}.o
COMMAND ${CMAKE_OBJCOPY} --localize-hidden ${name}.o
COMMAND ${CMAKE_COMMAND} -E remove "$<TARGET_LINKER_FILE:clang_rt.${name}-${arch}>"
COMMAND ${CMAKE_AR} qcs "$<TARGET_LINKER_FILE:clang_rt.${name}-${arch}>" ${name}.o
More information about the llvm-commits
mailing list