Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

OpenCilk/beta2 Darwin build fixes #7

Merged
merged 3 commits into from
Jul 2, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 14 additions & 1 deletion clang/lib/Driver/ToolChains/Darwin.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1144,6 +1144,17 @@ void DarwinClang::AddLinkSanitizerLibArgs(const ArgList &Args,
AddLinkRuntimeLib(Args, CmdArgs, Sanitizer, RLO, Shared);
}

void DarwinClang::AddCilktoolRTLibs(const ArgList &Args,
ArgStringList &CmdArgs) const {
if (Arg *A = Args.getLastArg(options::OPT_fcilktool_EQ)) {
StringRef Val = A->getValue();
auto RLO = RuntimeLinkOptions(RLO_AlwaysLink);
AddLinkRuntimeLib(Args, CmdArgs, Val, RLO);
// Link in the C++ standard library
AddCXXStdlibLibArgs(Args, CmdArgs);
}
}

ToolChain::RuntimeLibType DarwinClang::GetRuntimeLibType(
const ArgList &Args) const {
if (Arg* A = Args.getLastArg(options::OPT_rtlib_EQ)) {
Expand Down Expand Up @@ -1193,7 +1204,7 @@ void DarwinClang::AddLinkRuntimeLibArgs(const ArgList &Args,
if (Sanitize.needsTsanRt())
AddLinkSanitizerLibArgs(Args, CmdArgs, "tsan");
if (Sanitize.needsCilksanRt())
AddLinkSanitizerLibArgs(Args, CmdArgs, "cilk");
AddLinkSanitizerLibArgs(Args, CmdArgs, "cilksan");
if (Sanitize.needsFuzzer() && !Args.hasArg(options::OPT_dynamiclib)) {
AddLinkSanitizerLibArgs(Args, CmdArgs, "fuzzer", /*shared=*/false);

Expand All @@ -1205,6 +1216,8 @@ void DarwinClang::AddLinkRuntimeLibArgs(const ArgList &Args,
AddLinkSanitizerLibArgs(Args, CmdArgs, "stats");
}

AddCilktoolRTLibs(Args, CmdArgs);

const XRayArgs &XRay = getXRayArgs();
if (XRay.needsXRayRt()) {
AddLinkRuntimeLib(Args, CmdArgs, "xray");
Expand Down
3 changes: 3 additions & 0 deletions clang/lib/Driver/ToolChains/Darwin.h
Original file line number Diff line number Diff line change
Expand Up @@ -533,6 +533,9 @@ class LLVM_LIBRARY_VISIBILITY DarwinClang : public Darwin {
StringRef Sanitizer,
bool shared = true) const;

void AddCilktoolRTLibs(const llvm::opt::ArgList &Args,
llvm::opt::ArgStringList &CmdArgs) const;

bool AddGnuCPlusPlusIncludePaths(const llvm::opt::ArgList &DriverArgs,
llvm::opt::ArgStringList &CC1Args,
llvm::SmallString<128> Base,
Expand Down
1 change: 1 addition & 0 deletions compiler-rt/cmake/config-ix.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -327,6 +327,7 @@ if(APPLE)

# Note: In order to target x86_64h on OS X the minimum deployment target must
# be 10.8 or higher.
set(CILKTOOL_SUPPORTED_OS osx)
set(SANITIZER_COMMON_SUPPORTED_OS osx)
set(PROFILE_SUPPORTED_OS osx)
set(TSAN_SUPPORTED_OS osx)
Expand Down
75 changes: 55 additions & 20 deletions compiler-rt/lib/cilksan/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -36,44 +36,79 @@ append_list_if(COMPILER_RT_HAS_LIBDL dl CILKSAN_DYNAMIC_LIBS)
#append_list_if(COMPILER_RT_HAS_LIBSTDCXX stdc++ CILKSAN_DYNAMIC_LIBS)
#append_list_if(COMPILER_RT_HAS_LIBLOG log CILKSAN_DYNAMIC_LIBS)

# Compile Cilksan sources into an object library

add_compiler_rt_object_libraries(RTCilksan_dynamic
OS ${SANITIZER_COMMON_SUPPORTED_OS}
ARCHS ${CILKSAN_SUPPORTED_ARCH}
SOURCES ${CILKSAN_SOURCES}
CFLAGS ${CILKSAN_DYNAMIC_CFLAGS}
DEFS ${CILKSAN_DYNAMIC_DEFINITIONS})

add_compiler_rt_object_libraries(RTCilksan
OS ${SANITIZER_COMMON_SUPPORTED_OS}
ARCHS ${CILKSAN_SUPPORTED_ARCH}
SOURCES ${CILKSAN_SOURCES}
CFLAGS ${CILKSAN_CFLAGS}
DEFS ${CILKSAN_COMMON_DEFINITIONS})

# Build Cilksan runtimes shipped with Clang.
add_compiler_rt_component(cilksan)

foreach (arch ${CILKSAN_SUPPORTED_ARCH})
if (APPLE)
# Compile Cilksan sources into an object library
add_compiler_rt_object_libraries(RTCilksan_dynamic
OS ${CILKTOOL_SUPPORTED_OS}
ARCHS ${CILKSAN_SUPPORTED_ARCH}
SOURCES ${CILKSAN_SOURCES}
CFLAGS ${CILKSAN_DYNAMIC_CFLAGS}
DEFS ${CILKSAN_DYNAMIC_DEFINITIONS})

add_compiler_rt_object_libraries(RTCilksan
OS ${CILKTOOL_SUPPORTED_OS}
ARCHS ${CILKSAN_SUPPORTED_ARCH}
SOURCES ${CILKSAN_SOURCES}
CFLAGS ${CILKSAN_CFLAGS}
DEFS ${CILKSAN_COMMON_DEFINITIONS})

add_compiler_rt_runtime(clang_rt.cilksan
STATIC
ARCHS ${arch}
OS ${CILKTOOL_SUPPORTED_OS}
ARCHS ${CILKSAN_SUPPORTED_ARCH}
OBJECT_LIBS RTCilksan
CFLAGS ${CILKSAN_CFLAGS}
DEFS ${CILKSAN_COMMON_DEFINITIONS}
PARENT_TARGET cilksan)

add_compiler_rt_runtime(clang_rt.cilksan
SHARED
ARCHS ${arch}
OS ${CILKTOOL_SUPPORTED_OS}
ARCHS ${CILKSAN_SUPPORTED_ARCH}
OBJECT_LIBS RTCilksan_dynamic
CFLAGS ${CILKSAN_DYNAMIC_CFLAGS}
LINK_FLAGS ${CILKSAN_DYNAMIC_LINK_FLAGS}
LINK_LIBS ${CILKSAN_DYNAMIC_LIBS}
DEFS ${CILKSAN_DYNAMIC_DEFINITIONS}
PARENT_TARGET cilksan)
endforeach()

else() # Not APPLE
# Compile Cilksan sources into an object library
add_compiler_rt_object_libraries(RTCilksan_dynamic
ARCHS ${CILKSAN_SUPPORTED_ARCH}
SOURCES ${CILKSAN_SOURCES}
CFLAGS ${CILKSAN_DYNAMIC_CFLAGS}
DEFS ${CILKSAN_DYNAMIC_DEFINITIONS})

add_compiler_rt_object_libraries(RTCilksan
ARCHS ${CILKSAN_SUPPORTED_ARCH}
SOURCES ${CILKSAN_SOURCES}
CFLAGS ${CILKSAN_CFLAGS}
DEFS ${CILKSAN_COMMON_DEFINITIONS})

foreach (arch ${CILKSAN_SUPPORTED_ARCH})
add_compiler_rt_runtime(clang_rt.cilksan
STATIC
ARCHS ${arch}
OBJECT_LIBS RTCilksan
CFLAGS ${CILKSAN_CFLAGS}
DEFS ${CILKSAN_COMMON_DEFINITIONS}
PARENT_TARGET cilksan)

add_compiler_rt_runtime(clang_rt.cilksan
SHARED
ARCHS ${arch}
OBJECT_LIBS RTCilksan_dynamic
CFLAGS ${CILKSAN_DYNAMIC_CFLAGS}
LINK_FLAGS ${CILKSAN_DYNAMIC_LINK_FLAGS}
LINK_LIBS ${CILKSAN_DYNAMIC_LIBS}
DEFS ${CILKSAN_DYNAMIC_DEFINITIONS}
PARENT_TARGET cilksan)
endforeach()
endif()

if (COMPILER_RT_INCLUDE_TESTS)
# TODO(bruening): add tests via add_subdirectory(tests)
Expand Down
168 changes: 115 additions & 53 deletions compiler-rt/lib/cilkscale/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -36,61 +36,123 @@ set(CILKSCALE_INSTRUCTIONS_DYNAMIC_DEFINITIONS
# Build Cilkscale runtimes shipped with Clang.
add_compiler_rt_component(cilkscale)

foreach (arch ${CILKSCALE_SUPPORTED_ARCH})
add_compiler_rt_runtime(clang_rt.cilkscale
STATIC
ARCHS ${arch}
SOURCES ${CILKSCALE_SOURCES}
CFLAGS ${CILKSCALE_CFLAGS}
DEFS ${CILKSCALE_COMMON_DEFINITIONS}
PARENT_TARGET cilkscale)

add_compiler_rt_runtime(clang_rt.cilkscale
SHARED
ARCHS ${arch}
SOURCES ${CILKSCALE_SOURCES}
CFLAGS ${CILKSCALE_DYNAMIC_CFLAGS}
LINK_FLAGS ${CILKSCALE_DYNAMIC_LINK_FLAGS}
LINK_LIBS ${CILKSCALE_DYNAMIC_LIBS}
DEFS ${CILKSCALE_DYNAMIC_DEFINITIONS}
PARENT_TARGET cilkscale)

add_compiler_rt_runtime(clang_rt.cilkscale-instructions
STATIC
ARCHS ${arch}
SOURCES ${CILKSCALE_SOURCES}
CFLAGS ${CILKSCALE_CFLAGS}
DEFS ${CILKSCALE_INSTRUCTIONS_COMMON_DEFINITIONS}
PARENT_TARGET cilkscale)

add_compiler_rt_runtime(clang_rt.cilkscale-instructions
SHARED
ARCHS ${arch}
SOURCES ${CILKSCALE_SOURCES}
CFLAGS ${CILKSCALE_DYNAMIC_CFLAGS}
LINK_FLAGS ${CILKSCALE_DYNAMIC_LINK_FLAGS}
LINK_LIBS ${CILKSCALE_DYNAMIC_LIBS}
DEFS ${CILKSCALE_INSTRUCTIONS_DYNAMIC_DEFINITIONS}
PARENT_TARGET cilkscale)
if (APPLE)
add_compiler_rt_runtime(clang_rt.cilkscale
STATIC
OS ${CILKTOOL_SUPPORTED_OS}
ARCHS ${CILKSCALE_SUPPORTED_ARCH}
SOURCES ${CILKSCALE_SOURCES}
CFLAGS ${CILKSCALE_CFLAGS}
DEFS ${CILKSCALE_COMMON_DEFINITIONS}
PARENT_TARGET cilkscale)

add_compiler_rt_runtime(clang_rt.cilkscale-instructions
STATIC
OS ${CILKTOOL_SUPPORTED_OS}
ARCHS ${CILKSCALE_SUPPORTED_ARCH}
SOURCES ${CILKSCALE_SOURCES}
CFLAGS ${CILKSCALE_CFLAGS}
DEFS ${CILKSCALE_INSTRUCTIONS_COMMON_DEFINITIONS}
PARENT_TARGET cilkscale)

add_compiler_rt_runtime(clang_rt.cilkscale-benchmark
STATIC
OS ${CILKTOOL_SUPPORTED_OS}
ARCHS ${CILKSCALE_SUPPORTED_ARCH}
SOURCES ${BENCHMARK_SOURCES}
CFLAGS ${CILKSCALE_CFLAGS}
DEFS ${CILKSCALE_COMMON_DEFINITIONS}
PARENT_TARGET cilkscale)

add_compiler_rt_runtime(clang_rt.cilkscale
SHARED
OS ${CILKTOOL_SUPPORTED_OS}
ARCHS ${CILKSCALE_SUPPORTED_ARCH}
SOURCES ${CILKSCALE_SOURCES}
CFLAGS ${CILKSCALE_DYNAMIC_CFLAGS}
LINK_FLAGS ${CILKSCALE_DYNAMIC_LINK_FLAGS}
LINK_LIBS ${CILKSCALE_DYNAMIC_LIBS}
DEFS ${CILKSCALE_DYNAMIC_DEFINITIONS}
PARENT_TARGET cilkscale)

add_compiler_rt_runtime(clang_rt.cilkscale-instructions
SHARED
OS ${CILKTOOL_SUPPORTED_OS}
ARCHS ${CILKSCALE_SUPPORTED_ARCH}
SOURCES ${CILKSCALE_SOURCES}
CFLAGS ${CILKSCALE_DYNAMIC_CFLAGS}
LINK_FLAGS ${CILKSCALE_DYNAMIC_LINK_FLAGS}
LINK_LIBS ${CILKSCALE_DYNAMIC_LIBS}
DEFS ${CILKSCALE_INSTRUCTIONS_DYNAMIC_DEFINITIONS}
PARENT_TARGET cilkscale)

add_compiler_rt_runtime(clang_rt.cilkscale-benchmark
STATIC
ARCHS ${arch}
SOURCES ${BENCHMARK_SOURCES}
CFLAGS ${CILKSCALE_CFLAGS}
DEFS ${CILKSCALE_COMMON_DEFINITIONS}
PARENT_TARGET cilkscale)

add_compiler_rt_runtime(clang_rt.cilkscale-benchmark
SHARED
ARCHS ${arch}
SOURCES ${BENCHMARK_SOURCES}
CFLAGS ${CILKSCALE_DYNAMIC_CFLAGS}
LINK_FLAGS ${CILKSCALE_DYNAMIC_LINK_FLAGS}
LINK_LIBS ${CILKSCALE_DYNAMIC_LIBS}
DEFS ${CILKSCALE_DYNAMIC_DEFINITIONS}
PARENT_TARGET cilkscale)
endforeach()
SHARED
OS ${CILKTOOL_SUPPORTED_OS}
ARCHS ${CILKSCALE_SUPPORTED_ARCH}
SOURCES ${BENCHMARK_SOURCES}
CFLAGS ${CILKSCALE_DYNAMIC_CFLAGS}
LINK_FLAGS ${CILKSCALE_DYNAMIC_LINK_FLAGS}
LINK_LIBS ${CILKSCALE_DYNAMIC_LIBS}
DEFS ${CILKSCALE_DYNAMIC_DEFINITIONS}
PARENT_TARGET cilkscale)
else()
foreach (arch ${CILKSCALE_SUPPORTED_ARCH})
add_compiler_rt_runtime(clang_rt.cilkscale
STATIC
ARCHS ${arch}
SOURCES ${CILKSCALE_SOURCES}
CFLAGS ${CILKSCALE_CFLAGS}
DEFS ${CILKSCALE_COMMON_DEFINITIONS}
PARENT_TARGET cilkscale)

add_compiler_rt_runtime(clang_rt.cilkscale
SHARED
ARCHS ${arch}
SOURCES ${CILKSCALE_SOURCES}
CFLAGS ${CILKSCALE_DYNAMIC_CFLAGS}
LINK_FLAGS ${CILKSCALE_DYNAMIC_LINK_FLAGS}
LINK_LIBS ${CILKSCALE_DYNAMIC_LIBS}
DEFS ${CILKSCALE_DYNAMIC_DEFINITIONS}
PARENT_TARGET cilkscale)

add_compiler_rt_runtime(clang_rt.cilkscale-instructions
STATIC
ARCHS ${arch}
SOURCES ${CILKSCALE_SOURCES}
CFLAGS ${CILKSCALE_CFLAGS}
DEFS ${CILKSCALE_INSTRUCTIONS_COMMON_DEFINITIONS}
PARENT_TARGET cilkscale)

add_compiler_rt_runtime(clang_rt.cilkscale-instructions
SHARED
ARCHS ${arch}
SOURCES ${CILKSCALE_SOURCES}
CFLAGS ${CILKSCALE_DYNAMIC_CFLAGS}
LINK_FLAGS ${CILKSCALE_DYNAMIC_LINK_FLAGS}
LINK_LIBS ${CILKSCALE_DYNAMIC_LIBS}
DEFS ${CILKSCALE_INSTRUCTIONS_DYNAMIC_DEFINITIONS}
PARENT_TARGET cilkscale)

add_compiler_rt_runtime(clang_rt.cilkscale-benchmark
STATIC
ARCHS ${arch}
SOURCES ${BENCHMARK_SOURCES}
CFLAGS ${CILKSCALE_CFLAGS}
DEFS ${CILKSCALE_COMMON_DEFINITIONS}
PARENT_TARGET cilkscale)

add_compiler_rt_runtime(clang_rt.cilkscale-benchmark
SHARED
ARCHS ${arch}
SOURCES ${BENCHMARK_SOURCES}
CFLAGS ${CILKSCALE_DYNAMIC_CFLAGS}
LINK_FLAGS ${CILKSCALE_DYNAMIC_LINK_FLAGS}
LINK_LIBS ${CILKSCALE_DYNAMIC_LIBS}
DEFS ${CILKSCALE_DYNAMIC_DEFINITIONS}
PARENT_TARGET cilkscale)
endforeach()
endif()

if (COMPILER_RT_INCLUDE_TESTS)
# TODO(bruening): add tests via add_subdirectory(tests)
Expand Down
9 changes: 9 additions & 0 deletions compiler-rt/lib/cilkscale/shadow_stack.h
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,14 @@
#define INCLUDED_SHADOW_STACK_H

#include "cilkscale_timer.h"

#ifndef SERIAL_TOOL
#define SERIAL_TOOL 1
#endif

#if !SERIAL_TOOL
#include <cilk/reducer.h>
#endif

#ifndef DEFAULT_STACK_SIZE
#define DEFAULT_STACK_SIZE 64
Expand Down Expand Up @@ -94,12 +101,14 @@ struct shadow_stack_t {
bot(std::move(move.bot))
{}

#if !SERIAL_TOOL
// Move-in constructor
shadow_stack_t(cilk::move_in_wrapper<shadow_stack_t> w) {
capacity = w.value().capacity;
frames = w.value().frames;
bot = w.value().bot;
}
#endif

~shadow_stack_t() {
if (frames)
Expand Down