[builtins] Better Fuchsia support

Add Fuchsia support to some builtings and avoid building builtins
that are not and will never be used on Fuchsia.

Differential Revision: https://reviews.llvm.org/D34075

llvm-svn: 307832
This commit is contained in:
Petr Hosek 2017-07-12 19:33:30 +00:00
parent c855c72829
commit 969518b442
2 changed files with 19 additions and 4 deletions

View File

@ -44,7 +44,6 @@ set(GENERIC_SOURCES
ashrti3.c ashrti3.c
bswapdi2.c bswapdi2.c
bswapsi2.c bswapsi2.c
clear_cache.c
clzdi2.c clzdi2.c
clzsi2.c clzsi2.c
clzti2.c clzti2.c
@ -68,7 +67,6 @@ set(GENERIC_SOURCES
divti3.c divti3.c
divtf3.c divtf3.c
divxc3.c divxc3.c
eprintf.c
extendsfdf2.c extendsfdf2.c
extendhfsf2.c extendhfsf2.c
ffsdi2.c ffsdi2.c
@ -191,11 +189,12 @@ option(COMPILER_RT_EXCLUDE_ATOMIC_BUILTIN
"Skip the atomic builtin (this may be needed if system headers are unavailable)" "Skip the atomic builtin (this may be needed if system headers are unavailable)"
Off) Off)
if(NOT COMPILER_RT_BAREMETAL_BUILD) if(NOT FUCHSIA AND NOT COMPILER_RT_BAREMETAL_BUILD)
set(GENERIC_SOURCES set(GENERIC_SOURCES
${GENERIC_SOURCES} ${GENERIC_SOURCES}
emutls.c emutls.c
enable_execute_stack.c) enable_execute_stack.c
eprintf.c)
endif() endif()
if(COMPILER_RT_HAS_ATOMIC_KEYWORD AND NOT COMPILER_RT_EXCLUDE_ATOMIC_BUILTIN) if(COMPILER_RT_HAS_ATOMIC_KEYWORD AND NOT COMPILER_RT_EXCLUDE_ATOMIC_BUILTIN)
@ -221,6 +220,12 @@ if (HAVE_UNWIND_H)
gcc_personality_v0.c) gcc_personality_v0.c)
endif () endif ()
if (NOT FUCHSIA)
set(GENERIC_SOURCES
${GENERIC_SOURCES}
clear_cache.c)
endif()
if (NOT MSVC) if (NOT MSVC)
set(x86_64_SOURCES set(x86_64_SOURCES
x86_64/chkstk.S x86_64/chkstk.S

View File

@ -45,6 +45,16 @@ void compilerrt_abort_impl(const char *file, int line, const char *function) {
__assert_rtn(function, file, line, "libcompiler_rt abort"); __assert_rtn(function, file, line, "libcompiler_rt abort");
} }
#elif __Fuchsia__
#ifndef _WIN32
__attribute__((weak))
__attribute__((visibility("hidden")))
#endif
void compilerrt_abort_impl(const char *file, int line, const char *function) {
__builtin_trap();
}
#else #else
/* Get the system definition of abort() */ /* Get the system definition of abort() */