From 8acf6c9f7e33b1bfe77205cd2e61f2c60e8c00ce Mon Sep 17 00:00:00 2001 From: Sean Gillespie Date: Tue, 22 Aug 2017 10:20:36 -0700 Subject: [Local GC] Enable building the GC as a shared library (#13137) * [Local GC] Build the GC using system headers * Disable features to get the GC to build * Get rid of the separate 'GC PAL' build * Remove unused stuff * Don't build gcenv.os.cpp when linking in a standalone gc * Stub out CPUGroupInfo and NumaNodeInfo * Stub out IsGCThread and friends * Build the GC as a shared library :tada: * Build, link, and run! :tada: * Fix standalone GC build break * Fixes where the GC's MethodTable and VM's MethodTable classes disagree * Integrate a standalone GC into the CoreCLR build system (so it gets copied to the output folder). Re-enable some ifdef-ed out includes that are required for a non-standalone build of the GC. * Bring changes to Unix and fix the Unix build. Implement some compiler intrinsic wrappers and alignment functions expected by the GC. * Fix the Windows build * 1. Code review feedback: use standard types for BitScanForward and BitScanForward64 2. Delete FEATURE_COM stuff from the build system, not needed for this PR 3. Fix the Unix build * Fix the Windows x86 build - the _BitScanForward64 intrinsic is not available when targeting 32-bit platforms * Remove a number of things from gcenv.base.h that are not used * Remove a linker workaround now that we are not linking a standalone GC into the runtime * Remove dead code, make the lack of GC_PROFILING for standalone gc not break profiling on the non-standalone build * Code review feedback - use add_library_clr and other cmake-related fixes * Fix include indentation * Remove some extraneous parameters to cmake functions (cmake is remarkably lenient...) --- CMakeLists.txt | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-) (limited to 'CMakeLists.txt') diff --git a/CMakeLists.txt b/CMakeLists.txt index 38461acaee..9e1d16dffb 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -575,6 +575,13 @@ if(WIN32) add_compile_options(/Zl) # omit default library name in .OBJ endif(WIN32) +#-------------------------------- +# Definition directives +# - all clr specific compile definitions should be included in this file +# - all clr specific feature variable should also be added in this file +#---------------------------------- +include(clrdefinitions.cmake) + #------------------------------------- # Include directory directives #------------------------------------- @@ -584,10 +591,7 @@ include_directories("bin/obj") if(FEATURE_STANDALONE_GC) add_definitions(-DFEATURE_STANDALONE_GC) - - if(CLR_CMAKE_PLATFORM_UNIX) - add_subdirectory(src/gc/unix) - endif(CLR_CMAKE_PLATFORM_UNIX) + add_subdirectory(src/gc) endif(FEATURE_STANDALONE_GC) if(FEATURE_STANDALONE_GC_ONLY) @@ -600,13 +604,6 @@ if (CLR_CMAKE_PLATFORM_UNIX) include_directories("src/pal/src/safecrt") endif (CLR_CMAKE_PLATFORM_UNIX) -#-------------------------------- -# Definition directives -# - all clr specific compile definitions should be included in this file -# - all clr specific feature variable should also be added in this file -#---------------------------------- -include(clrdefinitions.cmake) - # Microsoft.Dotnet.BuildTools.Coreclr version set(BuildToolsVersion "1.0.4-prerelease") set(BuildToolsDir "${CLR_DIR}/packages/Microsoft.DotNet.BuildTools.CoreCLR/${BuildToolsVersion}") -- cgit v1.2.3 From f5b7f8ba68688382e57999e33ae39f46ddadd47a Mon Sep 17 00:00:00 2001 From: Jan Vorlicek Date: Wed, 13 Sep 2017 19:19:20 +0200 Subject: Disable PAX mprotect for native executables (#13940) This change adds marking native executables that coreclr build produces (corerun, coreconsole, crossgen, ilasm, ildasm, crashdump) to using the paxctl tool to allow them running on systems with PAX configured so that creating executable memory mappings by applications is prohibited. --- CMakeLists.txt | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'CMakeLists.txt') diff --git a/CMakeLists.txt b/CMakeLists.txt index 9e1d16dffb..5dfbc40310 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -92,6 +92,11 @@ else (WIN32) if (AWK STREQUAL "AWK-NOTFOUND") message(FATAL_ERROR "AWK not found") endif() + + # Try to locate the paxctl tool. Failure to find it is not fatal, + # but the generated executables won't work on a system where PAX is set + # to prevent applications to create executable memory mappings. + find_program(PAXCTL paxctl) if (CMAKE_SYSTEM_NAME STREQUAL Darwin) -- cgit v1.2.3