[PATCH] [RFC] Compiler-RT on ARM via CMake
Saleem Abdulrasool
compnerd at compnerd.org
Thu Jan 23 20:56:41 PST 2014
On Thu, Jan 23, 2014 at 7:07 AM, Renato Golin <renato.golin at linaro.org>wrote:
> Hi samsonov, asl,
>
> First attempt to compile the RT library on ARM via CMake.
>
> The current changes builds:
> lib/clang/3.5/lib/linux/libclang_rt.arm.a
> lib/clang/3.5/lib/linux/libclang_rt.san-arm.a
>
> The UBSan tests are looking for:
> lib/clang/3.5/lib/linux/libclang_rt.san-armv7l.a
> lib/clang/3.5/lib/linux/libclang_rt.ubsan-armv7l.a
> lib/clang/3.5/lib/linux/libclang_rt.ubsan_cxx-armv7l.a
>
> So, not only it's looking for the wrong arch name (the libs should work on
> all ARM, so I don't think we should name it armv7), but it's also looking
> for the UBSan libraries, which weren't compiled. I'm not sure why not...
>
How would this deal with hard-fp vs soft-fp? (I assume that soft-float is
entirely pointless).
> http://llvm-reviews.chandlerc.com/D2604
>
> Files:
> CMakeLists.txt
> lib/CMakeLists.txt
> lib/dfsan/lit_tests/lit.cfg
> lib/ubsan/lit_tests/lit.common.cfg
>
> Index: CMakeLists.txt
> ===================================================================
> --- CMakeLists.txt
> +++ CMakeLists.txt
> @@ -98,6 +98,8 @@
> test_target_arch(i386 ${TARGET_32_BIT_CFLAGS})
> elseif("${LLVM_NATIVE_ARCH}" STREQUAL "PowerPC")
> test_target_arch(powerpc64 ${TARGET_64_BIT_CFLAGS})
> +elseif("${LLVM_NATIVE_ARCH}" STREQUAL "ARM")
> + test_target_arch(arm "")
> endif()
>
> # We only support running instrumented tests when we're not cross
> compiling
> @@ -210,7 +212,7 @@
> # Architectures supported by Sanitizer runtimes. Specific sanitizers may
> # support only subset of these (e.g. TSan works on x86_64 only).
> filter_available_targets(SANITIZER_COMMON_SUPPORTED_ARCH
> - x86_64 i386 powerpc64)
> + x86_64 i386 powerpc64 arm)
>
> add_subdirectory(include)
>
> Index: lib/CMakeLists.txt
> ===================================================================
> --- lib/CMakeLists.txt
> +++ lib/CMakeLists.txt
> @@ -195,8 +195,72 @@
> i386/umoddi3.S
> ${GENERIC_SOURCES})
>
> +set(arm_SOURCES
> + arm/adddf3vfp.S
> + arm/extendsfdf2vfp.S
> + arm/nedf2vfp.S
> + arm/addsf3vfp.S
> + arm/fixdfsivfp.S
> + arm/negdf2vfp.S
> + arm/aeabi_dcmp.S
> + arm/fixsfsivfp.S
> + arm/negsf2vfp.S
> + arm/aeabi_fcmp.S
> + arm/fixunsdfsivfp.S
> + arm/nesf2vfp.S
> + arm/aeabi_idivmod.S
> + arm/fixunssfsivfp.S
> + arm/restore_vfp_d8_d15_regs.S
> + arm/aeabi_ldivmod.S
> + arm/floatsidfvfp.S
> + arm/save_vfp_d8_d15_regs.S
> + arm/aeabi_memcmp.S
> + arm/floatsisfvfp.S
> + arm/aeabi_memcpy.S
> + arm/floatunssidfvfp.S
> + arm/subdf3vfp.S
> + arm/aeabi_memmove.S
> + arm/floatunssisfvfp.S
> + arm/subsf3vfp.S
> + arm/aeabi_memset.S
> + arm/gedf2vfp.S
> + arm/switch16.S
> + arm/aeabi_uidivmod.S
> + arm/gesf2vfp.S
> + arm/switch32.S
> + arm/aeabi_uldivmod.S
> + arm/gtdf2vfp.S
> + arm/switch8.S
> + arm/bswapdi2.S
> + arm/gtsf2vfp.S
> + arm/switchu8.S
> + arm/bswapsi2.S
> + arm/ledf2vfp.S
> + arm/sync_synchronize.S
> + arm/comparesf2.S
> + arm/lesf2vfp.S
> + arm/truncdfsf2vfp.S
> + arm/divdf3vfp.S
> + arm/ltdf2vfp.S
> + arm/udivmodsi4.S
> + arm/divmodsi4.S
> + arm/ltsf2vfp.S
> + arm/udivsi3.S
> + arm/divsf3vfp.S
> + arm/Makefile.mk
> + arm/umodsi3.S
> + arm/divsi3.S
> + arm/modsi3.S
> + arm/unorddf2vfp.S
> + arm/eqdf2vfp.S
> + arm/muldf3vfp.S
> + arm/unordsf2vfp.S
> + arm/eqsf2vfp.S
> + arm/mulsf3vfp.S
> + ${GENERIC_SOURCES})
> +
> if (NOT WIN32)
> - foreach(arch x86_64 i386)
> + foreach(arch x86_64 i386 arm)
> if(CAN_TARGET_${arch})
> add_compiler_rt_static_runtime(clang_rt.${arch} ${arch}
> SOURCES ${${arch}_SOURCES}
> Index: lib/dfsan/lit_tests/lit.cfg
> ===================================================================
> --- lib/dfsan/lit_tests/lit.cfg
> +++ lib/dfsan/lit_tests/lit.cfg
> @@ -67,3 +67,11 @@
> # DataFlowSanitizer tests are currently supported on Linux only.
> if config.host_os not in ['Linux']:
> config.unsupported = True
> +
> +# We're building the sanitizers on ARM, but the tests are looking for the
> +# wrong name of static objects, disable for now
> +if 'armv4' in config.root.target_triple or \
> + 'armv5' in config.root.target_triple or \
> + 'armv6' in config.root.target_triple or \
> + 'armv7' in config.root.target_triple:
> + config.unsupported = True
> Index: lib/ubsan/lit_tests/lit.common.cfg
> ===================================================================
> --- lib/ubsan/lit_tests/lit.common.cfg
> +++ lib/ubsan/lit_tests/lit.common.cfg
> @@ -28,4 +28,12 @@
> if config.host_os not in ['Linux', 'Darwin']:
> config.unsupported = True
>
> +# We're building the sanitizers on ARM, but the tests are looking for the
> +# wrong name of static objects, disable for now
> +if 'armv4' in config.root.target_triple or \
> + 'armv5' in config.root.target_triple or \
> + 'armv6' in config.root.target_triple or \
> + 'armv7' in config.root.target_triple:
> + config.unsupported = True
> +
> config.pipefail = False
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
>
>
--
Saleem Abdulrasool
compnerd (at) compnerd (dot) org
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20140123/5fda0fd4/attachment.html>
More information about the llvm-commits
mailing list