From e1b9f2fcc9a26fd7b545efd060a640b878218a86 Mon Sep 17 00:00:00 2001 From: Jan Vorlicek Date: Thu, 22 Aug 2019 13:09:49 -0700 Subject: [PATCH 1/2] Fix PIE options We were missing passing the -pie linker option. That means that while we were compiling our code as position independent, the executables (not shared libraries) were not marked as position independent and ASLR was not applied to them. They were always loaded to fixed addresses. This change adds the missing -pie option and also replaces all the individual settings of -fPIE / -fPIC on the targets we build by a centralized setting of CMAKE_POSITION_INDEPENDENT_CODE variable that causes cmake to add the appropriate compiler options everywhere. --- CMakeLists.txt | 3 +++ configurecompiler.cmake | 10 +++++++--- src/binder/CMakeLists.txt | 4 ---- src/classlibnative/bcltype/CMakeLists.txt | 4 ---- src/classlibnative/float/CMakeLists.txt | 4 ---- src/coreclr/hosts/osxbundlerun/CMakeLists.txt | 2 -- src/coreclr/hosts/unixcoreconsole/CMakeLists.txt | 2 -- src/coreclr/hosts/unixcorerun/CMakeLists.txt | 2 -- src/coreclr/hosts/unixcoreruncommon/CMakeLists.txt | 2 -- src/corefx/System.Globalization.Native/CMakeLists.txt | 2 -- src/debug/createdump/CMakeLists.txt | 2 -- src/debug/daccess/CMakeLists.txt | 1 - src/debug/dbgutil/CMakeLists.txt | 4 ---- src/debug/debug-pal/CMakeLists.txt | 1 - src/debug/di/CMakeLists.txt | 1 - src/debug/ee/CMakeLists.txt | 4 ---- src/debug/ee/wks/CMakeLists.txt | 2 -- src/debug/ildbsymlib/CMakeLists.txt | 4 ---- src/debug/shim/CMakeLists.txt | 4 ---- src/dlls/dbgshim/CMakeLists.txt | 2 -- src/dlls/mscordac/CMakeLists.txt | 4 ---- src/dlls/mscorrc/CMakeLists.txt | 4 ---- src/gc/CMakeLists.txt | 1 - src/gc/unix/CMakeLists.txt | 1 - src/gcinfo/CMakeLists.txt | 4 ---- src/ilasm/CMakeLists.txt | 4 ---- src/ildasm/exe/CMakeLists.txt | 1 - src/inc/CMakeLists.txt | 1 - src/jit/dll/CMakeLists.txt | 2 -- src/md/ceefilegen/CMakeLists.txt | 4 ---- src/md/compiler/CMakeLists.txt | 4 ---- src/md/datasource/CMakeLists.txt | 4 ---- src/md/enc/CMakeLists.txt | 4 ---- src/md/hotdata/CMakeLists.txt | 4 ---- src/md/runtime/CMakeLists.txt | 4 ---- src/md/staticmd/CMakeLists.txt | 5 ----- src/md/winmd/CMakeLists.txt | 4 ---- src/nativeresources/CMakeLists.txt | 2 -- src/pal/src/CMakeLists.txt | 2 -- src/pal/src/eventprovider/lttngprovider/CMakeLists.txt | 2 -- .../exception_handling/pal_sxs/test1/CMakeLists.txt | 1 - src/palrt/CMakeLists.txt | 2 -- src/strongname/api/CMakeLists.txt | 4 ---- src/tools/crossgen/CMakeLists.txt | 1 - src/unwinder/CMakeLists.txt | 4 ---- src/utilcode/CMakeLists.txt | 4 ---- src/vm/CMakeLists.txt | 4 ---- tests/CMakeLists.txt | 4 ---- 48 files changed, 10 insertions(+), 135 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 74cff66c1789..fbcb850a7575 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -6,6 +6,9 @@ cmake_policy(SET CMP0042 NEW) # Set the project name project(CoreCLR) +# All code we build should be compiled as position independent +set(CMAKE_POSITION_INDEPENDENT_CODE 1) + # Include cmake functions include(functions.cmake) diff --git a/configurecompiler.cmake b/configurecompiler.cmake index 0432ab920bff..a7a15ff7ac40 100644 --- a/configurecompiler.cmake +++ b/configurecompiler.cmake @@ -323,10 +323,9 @@ elseif (CLR_CMAKE_PLATFORM_UNIX) endif () # -fdata-sections -ffunction-sections: each function has own section instead of one per .o file (needed for --gc-sections) - # -fPIC: enable Position Independent Code normally just for shared libraries but required when linking with address sanitizer # -O1: optimization level used instead of -O0 to avoid compile error "invalid operand for inline asm constraint" - set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} ${CLR_SANITIZE_CXX_FLAGS} -fdata-sections -ffunction-sections -fPIC -O1") - set(CMAKE_CXX_FLAGS_CHECKED "${CMAKE_CXX_FLAGS_CHECKED} ${CLR_SANITIZE_CXX_FLAGS} -fdata-sections -ffunction-sections -fPIC -O1") + set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} ${CLR_SANITIZE_CXX_FLAGS} -fdata-sections -ffunction-sections -O1") + set(CMAKE_CXX_FLAGS_CHECKED "${CMAKE_CXX_FLAGS_CHECKED} ${CLR_SANITIZE_CXX_FLAGS} -fdata-sections -ffunction-sections -O1") set(CMAKE_EXE_LINKER_FLAGS_DEBUG "${CMAKE_EXE_LINKER_FLAGS_DEBUG} ${CLR_SANITIZE_LINK_FLAGS}") set(CMAKE_EXE_LINKER_FLAGS_CHECKED "${CMAKE_EXE_LINKER_FLAGS_CHECKED} ${CLR_SANITIZE_LINK_FLAGS}") @@ -336,6 +335,11 @@ elseif (CLR_CMAKE_PLATFORM_UNIX) set(CMAKE_SHARED_LINKER_FLAGS_CHECKED "${CMAKE_SHARED_LINKER_FLAGS_CHECKED} ${CLR_SANITIZE_LINK_FLAGS} -Wl,--gc-sections") endif () endif(UPPERCASE_CMAKE_BUILD_TYPE STREQUAL DEBUG OR UPPERCASE_CMAKE_BUILD_TYPE STREQUAL CHECKED) + + # This linker option causes executables we build to be marked as containing position independent code. + # It is necessary to make ASLR work for executables. + set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -pie" ) + endif(WIN32) # CLR_ADDITIONAL_LINKER_FLAGS - used for passing additional arguments to linker diff --git a/src/binder/CMakeLists.txt b/src/binder/CMakeLists.txt index d92bec6c99d0..07f6c15bffab 100644 --- a/src/binder/CMakeLists.txt +++ b/src/binder/CMakeLists.txt @@ -91,9 +91,5 @@ endif(WIN32) convert_to_absolute_path(BINDER_SOURCES ${BINDER_SOURCES}) convert_to_absolute_path(BINDER_CROSSGEN_SOURCES ${BINDER_CROSSGEN_SOURCES}) -if(CLR_CMAKE_PLATFORM_UNIX) - add_compile_options(-fPIC) -endif(CLR_CMAKE_PLATFORM_UNIX) - add_subdirectory(v3binder) add_subdirectory(v3binder_crossgen) diff --git a/src/classlibnative/bcltype/CMakeLists.txt b/src/classlibnative/bcltype/CMakeLists.txt index 843d7e8b6805..67d1ad2bab58 100644 --- a/src/classlibnative/bcltype/CMakeLists.txt +++ b/src/classlibnative/bcltype/CMakeLists.txt @@ -11,10 +11,6 @@ set(BCLTYPE_SOURCES variant.cpp ) -if(CLR_CMAKE_PLATFORM_UNIX) - add_compile_options(-fPIC) -endif(CLR_CMAKE_PLATFORM_UNIX) - add_library_clr(bcltype STATIC ${BCLTYPE_SOURCES} diff --git a/src/classlibnative/float/CMakeLists.txt b/src/classlibnative/float/CMakeLists.txt index bf173fe6587d..44d40c925921 100644 --- a/src/classlibnative/float/CMakeLists.txt +++ b/src/classlibnative/float/CMakeLists.txt @@ -7,10 +7,6 @@ set(FLOAT_SOURCES floatsingle.cpp ) -if(CLR_CMAKE_PLATFORM_UNIX) - add_compile_options(-fPIC) -endif(CLR_CMAKE_PLATFORM_UNIX) - add_library_clr(comfloat_wks STATIC ${FLOAT_SOURCES} diff --git a/src/coreclr/hosts/osxbundlerun/CMakeLists.txt b/src/coreclr/hosts/osxbundlerun/CMakeLists.txt index 8af173f97078..802c5899ad86 100644 --- a/src/coreclr/hosts/osxbundlerun/CMakeLists.txt +++ b/src/coreclr/hosts/osxbundlerun/CMakeLists.txt @@ -2,8 +2,6 @@ project(osxbundlerun) include_directories(../unixcoreruncommon) -add_compile_options(-fPIE) - set(CORERUN_SOURCES osxbundlerun.cpp ) diff --git a/src/coreclr/hosts/unixcoreconsole/CMakeLists.txt b/src/coreclr/hosts/unixcoreconsole/CMakeLists.txt index 2daeaabfa371..6e337b662ba4 100644 --- a/src/coreclr/hosts/unixcoreconsole/CMakeLists.txt +++ b/src/coreclr/hosts/unixcoreconsole/CMakeLists.txt @@ -2,8 +2,6 @@ project(unixcoreconsole) include_directories(../unixcoreruncommon) -add_compile_options(-fPIE) - set(CORECONSOLE_SOURCES coreconsole.cpp ) diff --git a/src/coreclr/hosts/unixcorerun/CMakeLists.txt b/src/coreclr/hosts/unixcorerun/CMakeLists.txt index 07beaae1dfc3..5ee10b871ca1 100644 --- a/src/coreclr/hosts/unixcorerun/CMakeLists.txt +++ b/src/coreclr/hosts/unixcorerun/CMakeLists.txt @@ -2,8 +2,6 @@ project(unixcorerun) include_directories(../unixcoreruncommon) -add_compile_options(-fPIE) - set(CORERUN_SOURCES corerun.cpp ) diff --git a/src/coreclr/hosts/unixcoreruncommon/CMakeLists.txt b/src/coreclr/hosts/unixcoreruncommon/CMakeLists.txt index 93a5bbf9ff0f..c859b0a31273 100644 --- a/src/coreclr/hosts/unixcoreruncommon/CMakeLists.txt +++ b/src/coreclr/hosts/unixcoreruncommon/CMakeLists.txt @@ -1,7 +1,5 @@ project(unixcoreruncommon) -add_compile_options(-fPIC) - set(CMAKE_INCLUDE_CURRENT_DIR ON) include(configure.cmake) diff --git a/src/corefx/System.Globalization.Native/CMakeLists.txt b/src/corefx/System.Globalization.Native/CMakeLists.txt index 1d4c946f23bd..86709d71fb02 100644 --- a/src/corefx/System.Globalization.Native/CMakeLists.txt +++ b/src/corefx/System.Globalization.Native/CMakeLists.txt @@ -37,8 +37,6 @@ endif() include(configure.cmake) -add_compile_options(-fPIC) - set(NATIVEGLOBALIZATION_SOURCES pal_calendarData.c pal_casing.c diff --git a/src/debug/createdump/CMakeLists.txt b/src/debug/createdump/CMakeLists.txt index b44016c4d022..b7b09fd2d526 100644 --- a/src/debug/createdump/CMakeLists.txt +++ b/src/debug/createdump/CMakeLists.txt @@ -20,8 +20,6 @@ include_directories(BEFORE ${VM_DIR}) add_definitions(-DPAL_STDCPP_COMPAT) -add_compile_options(-fPIE) - set(CREATEDUMP_SOURCES createdump.cpp crashinfo.cpp diff --git a/src/debug/daccess/CMakeLists.txt b/src/debug/daccess/CMakeLists.txt index 0e8ccfe67f0e..241a629948de 100644 --- a/src/debug/daccess/CMakeLists.txt +++ b/src/debug/daccess/CMakeLists.txt @@ -11,7 +11,6 @@ include_directories(${CLR_DIR}/src/gcdump) if(CLR_CMAKE_PLATFORM_UNIX) include_directories(${GENERATED_INCLUDE_DIR}) - add_compile_options(-fPIC) endif(CLR_CMAKE_PLATFORM_UNIX) set(DACCESS_SOURCES diff --git a/src/debug/dbgutil/CMakeLists.txt b/src/debug/dbgutil/CMakeLists.txt index 1c0d49a24ec6..6c43b5ca759c 100644 --- a/src/debug/dbgutil/CMakeLists.txt +++ b/src/debug/dbgutil/CMakeLists.txt @@ -9,8 +9,4 @@ set(DBGUTIL_SOURCES dbgutil.cpp ) -if(CLR_CMAKE_PLATFORM_UNIX) - add_compile_options(-fPIC) -endif(CLR_CMAKE_PLATFORM_UNIX) - add_library_clr(dbgutil STATIC ${DBGUTIL_SOURCES}) diff --git a/src/debug/debug-pal/CMakeLists.txt b/src/debug/debug-pal/CMakeLists.txt index 59ed63ea4fae..cea36b76442b 100644 --- a/src/debug/debug-pal/CMakeLists.txt +++ b/src/debug/debug-pal/CMakeLists.txt @@ -16,7 +16,6 @@ if(WIN32) endif(WIN32) if(CLR_CMAKE_PLATFORM_UNIX) - add_compile_options(-fPIC) add_definitions(-DFEATURE_PAL) add_definitions(-DPAL_IMPLEMENTATION) diff --git a/src/debug/di/CMakeLists.txt b/src/debug/di/CMakeLists.txt index f0a9d41ec93d..1c34eac59e69 100644 --- a/src/debug/di/CMakeLists.txt +++ b/src/debug/di/CMakeLists.txt @@ -89,7 +89,6 @@ if(WIN32) set(CORDBDI_SOURCES_ASM_FILE ${CMAKE_CURRENT_BINARY_DIR}/${name}.obj) endif() elseif(CLR_CMAKE_PLATFORM_UNIX) - add_compile_options(-fPIC) if(CLR_CMAKE_TARGET_ARCH_AMD64 OR CLR_CMAKE_TARGET_ARCH_ARM64 OR CLR_CMAKE_TARGET_ARCH_ARM) set(CORDBDI_SOURCES_ASM_FILE diff --git a/src/debug/ee/CMakeLists.txt b/src/debug/ee/CMakeLists.txt index 11a670285b6f..383ab24cfbdc 100644 --- a/src/debug/ee/CMakeLists.txt +++ b/src/debug/ee/CMakeLists.txt @@ -6,10 +6,6 @@ include_directories(BEFORE ${VM_DIR}) include_directories(BEFORE ${VM_DIR}/${ARCH_SOURCES_DIR}) include_directories(BEFORE ${CMAKE_CURRENT_SOURCE_DIR}) -if(CLR_CMAKE_PLATFORM_UNIX) - add_compile_options(-fPIC) -endif(CLR_CMAKE_PLATFORM_UNIX) - set(CORDBEE_SOURCES_DAC_AND_WKS controller.cpp debugger.cpp diff --git a/src/debug/ee/wks/CMakeLists.txt b/src/debug/ee/wks/CMakeLists.txt index c6a4bccb0845..6a1a47c7b84c 100644 --- a/src/debug/ee/wks/CMakeLists.txt +++ b/src/debug/ee/wks/CMakeLists.txt @@ -54,8 +54,6 @@ if (WIN32) else () - add_compile_options(-fPIC) - if(CLR_CMAKE_PLATFORM_ARCH_AMD64 OR CLR_CMAKE_PLATFORM_ARCH_ARM OR CLR_CMAKE_PLATFORM_ARCH_ARM64 OR CLR_CMAKE_PLATFORM_ARCH_I386) add_library_clr(cordbee_wks ${CORDBEE_SOURCES_WKS} ../${ARCH_SOURCES_DIR}/dbghelpers.S) else() diff --git a/src/debug/ildbsymlib/CMakeLists.txt b/src/debug/ildbsymlib/CMakeLists.txt index 1bd1096ed6b2..cf72a0e8e9d9 100644 --- a/src/debug/ildbsymlib/CMakeLists.txt +++ b/src/debug/ildbsymlib/CMakeLists.txt @@ -10,9 +10,5 @@ set( ILDBSYMLIB_SOURCES symwrite.cpp ) -if(CLR_CMAKE_PLATFORM_UNIX) - add_compile_options(-fPIC) -endif(CLR_CMAKE_PLATFORM_UNIX) - add_library_clr(ildbsymlib ${ILDBSYMLIB_SOURCES}) diff --git a/src/debug/shim/CMakeLists.txt b/src/debug/shim/CMakeLists.txt index 8720eb7df2d0..28b7f624c559 100644 --- a/src/debug/shim/CMakeLists.txt +++ b/src/debug/shim/CMakeLists.txt @@ -4,10 +4,6 @@ if(WIN32) add_definitions(-DHOST_IS_WINDOWS_OS) endif(WIN32) -if(CLR_CMAKE_PLATFORM_UNIX) - add_compile_options(-fPIC) -endif(CLR_CMAKE_PLATFORM_UNIX) - set(DEBUGSHIM_SOURCES debugshim.cpp ) diff --git a/src/dlls/dbgshim/CMakeLists.txt b/src/dlls/dbgshim/CMakeLists.txt index 7e6ae61de111..ca4556bd0323 100644 --- a/src/dlls/dbgshim/CMakeLists.txt +++ b/src/dlls/dbgshim/CMakeLists.txt @@ -41,8 +41,6 @@ endif(CLR_CMAKE_PLATFORM_DARWIN) add_library_clr(dbgshim SHARED ${DBGSHIM_SOURCES}) if(CLR_CMAKE_PLATFORM_UNIX) - add_compile_options(-fPIC) - add_custom_target(dbgshim_exports DEPENDS ${EXPORTS_FILE}) add_dependencies(dbgshim dbgshim_exports) diff --git a/src/dlls/mscordac/CMakeLists.txt b/src/dlls/mscordac/CMakeLists.txt index e065eba023f5..df8d615e0a83 100644 --- a/src/dlls/mscordac/CMakeLists.txt +++ b/src/dlls/mscordac/CMakeLists.txt @@ -1,10 +1,6 @@ include(${CLR_DIR}/dac.cmake) add_definitions(-DFEATURE_NO_HOST) -if(CLR_CMAKE_PLATFORM_UNIX) - add_compile_options(-fPIC) -endif(CLR_CMAKE_PLATFORM_UNIX) - set(CLR_DAC_SOURCES ) diff --git a/src/dlls/mscorrc/CMakeLists.txt b/src/dlls/mscorrc/CMakeLists.txt index 8f67988a23b1..366ace463105 100644 --- a/src/dlls/mscorrc/CMakeLists.txt +++ b/src/dlls/mscorrc/CMakeLists.txt @@ -9,10 +9,6 @@ if(WIN32) string(REPLACE "/guard:cf" "" CMAKE_SHARED_LINKER_FLAGS ${CMAKE_SHARED_LINKER_FLAGS}) endif(WIN32) -if(CLR_CMAKE_PLATFORM_UNIX) - add_compile_options(-fPIC) -endif(CLR_CMAKE_PLATFORM_UNIX) - add_subdirectory(full) # Only add the small version of the resources if the platform is Windows. diff --git a/src/gc/CMakeLists.txt b/src/gc/CMakeLists.txt index ab9f3a0baddc..17a774ceb5c2 100644 --- a/src/gc/CMakeLists.txt +++ b/src/gc/CMakeLists.txt @@ -97,7 +97,6 @@ target_link_libraries(clrgc ${GC_LINK_LIBRARIES}) install_clr(clrgc) if(CLR_CMAKE_PLATFORM_UNIX) - add_compile_options(-fPIC) # dprintf causes many warnings (https://github.com/dotnet/coreclr/issues/13367) add_compile_options(-Wno-format) endif(CLR_CMAKE_PLATFORM_UNIX) diff --git a/src/gc/unix/CMakeLists.txt b/src/gc/unix/CMakeLists.txt index 10258108c6f2..e1d3571f4479 100644 --- a/src/gc/unix/CMakeLists.txt +++ b/src/gc/unix/CMakeLists.txt @@ -1,5 +1,4 @@ set(CMAKE_INCLUDE_CURRENT_DIR ON) -add_compile_options(-fPIC) include_directories("../env") include(configure.cmake) diff --git a/src/gcinfo/CMakeLists.txt b/src/gcinfo/CMakeLists.txt index 79c4f486da28..c9c60db89e5f 100644 --- a/src/gcinfo/CMakeLists.txt +++ b/src/gcinfo/CMakeLists.txt @@ -16,10 +16,6 @@ endif(CLR_CMAKE_TARGET_ARCH_I386) convert_to_absolute_path(GCINFO_SOURCES ${GCINFO_SOURCES}) -if(CLR_CMAKE_PLATFORM_UNIX) - add_compile_options(-fPIC) -endif(CLR_CMAKE_PLATFORM_UNIX) - add_subdirectory(lib) add_subdirectory(crossgen) diff --git a/src/ilasm/CMakeLists.txt b/src/ilasm/CMakeLists.txt index 1b71c27e4739..11e232d403f9 100644 --- a/src/ilasm/CMakeLists.txt +++ b/src/ilasm/CMakeLists.txt @@ -9,10 +9,6 @@ add_definitions(-DFEATURE_CORECLR) include_directories(.) -if(CLR_CMAKE_PLATFORM_UNIX) - add_compile_options(-fPIE) -endif(CLR_CMAKE_PLATFORM_UNIX) - set(ILASM_SOURCES assem.cpp writer.cpp diff --git a/src/ildasm/exe/CMakeLists.txt b/src/ildasm/exe/CMakeLists.txt index 78480eaa1568..f642e8157ef5 100644 --- a/src/ildasm/exe/CMakeLists.txt +++ b/src/ildasm/exe/CMakeLists.txt @@ -10,7 +10,6 @@ add_definitions(-DFEATURE_CORECLR) include_directories(..) if(CLR_CMAKE_PLATFORM_UNIX) - add_compile_options(-fPIE) build_resources(${CMAKE_CURRENT_SOURCE_DIR}/../dasm.rc dasm_rc TARGET_CPP_FILE) set(ILDASM_RESOURCES diff --git a/src/inc/CMakeLists.txt b/src/inc/CMakeLists.txt index c38d59587af2..a6692ee4b23b 100644 --- a/src/inc/CMakeLists.txt +++ b/src/inc/CMakeLists.txt @@ -62,7 +62,6 @@ foreach(IDL_SOURCE IN LISTS CORGUIDS_IDL_SOURCES) list(APPEND CORGUIDS_SOURCES ${C_SOURCE}) endforeach(IDL_SOURCE) -add_compile_options(-fPIC) endif(WIN32) if(FEATURE_JIT_PITCHING) diff --git a/src/jit/dll/CMakeLists.txt b/src/jit/dll/CMakeLists.txt index 9e930de69d24..624e3579894d 100644 --- a/src/jit/dll/CMakeLists.txt +++ b/src/jit/dll/CMakeLists.txt @@ -3,8 +3,6 @@ project(ClrJit) set_source_files_properties(${JIT_EXPORTS_FILE} PROPERTIES GENERATED TRUE) if(CLR_CMAKE_PLATFORM_UNIX) - add_compile_options(-fPIC) - add_library_clr(clrjit_static STATIC ${SHARED_LIB_SOURCES} diff --git a/src/md/ceefilegen/CMakeLists.txt b/src/md/ceefilegen/CMakeLists.txt index 7170facc6fb4..57d4cb6338cb 100644 --- a/src/md/ceefilegen/CMakeLists.txt +++ b/src/md/ceefilegen/CMakeLists.txt @@ -21,10 +21,6 @@ set(CEEFILEGEN_HEADERS ../../inc/utilcode.h ) -if(CLR_CMAKE_PLATFORM_UNIX) - add_compile_options(-fPIC) -endif(CLR_CMAKE_PLATFORM_UNIX) - add_precompiled_header(stdafx.h stdafx.cpp CEEFILEGEN_SOURCES) if (WIN32) diff --git a/src/md/compiler/CMakeLists.txt b/src/md/compiler/CMakeLists.txt index 5000f1b6fc72..260731d4a343 100644 --- a/src/md/compiler/CMakeLists.txt +++ b/src/md/compiler/CMakeLists.txt @@ -51,10 +51,6 @@ set(MDCOMPILER_HEADERS convert_to_absolute_path(MDCOMPILER_SOURCES ${MDCOMPILER_SOURCES}) convert_to_absolute_path(MDCOMPILER_HEADERS ${MDCOMPILER_HEADERS}) -if(CLR_CMAKE_PLATFORM_UNIX) - add_compile_options(-fPIC) -endif(CLR_CMAKE_PLATFORM_UNIX) - add_subdirectory(dac) add_subdirectory(wks) add_subdirectory(dbi) diff --git a/src/md/datasource/CMakeLists.txt b/src/md/datasource/CMakeLists.txt index 489ef343aa3f..3aaa00afa21b 100644 --- a/src/md/datasource/CMakeLists.txt +++ b/src/md/datasource/CMakeLists.txt @@ -1,7 +1,3 @@ -if(CLR_CMAKE_PLATFORM_UNIX) - add_compile_options(-fPIC) -endif(CLR_CMAKE_PLATFORM_UNIX) - set(MDDATASOURCE_SOURCES api.cpp datatargetreader.cpp diff --git a/src/md/enc/CMakeLists.txt b/src/md/enc/CMakeLists.txt index 32d640a09a20..2f1398d6f19f 100644 --- a/src/md/enc/CMakeLists.txt +++ b/src/md/enc/CMakeLists.txt @@ -44,10 +44,6 @@ endif(WIN32) convert_to_absolute_path(MDRUNTIMERW_HEADERS ${MDRUNTIMERW_HEADERS}) convert_to_absolute_path(MDRUNTIMERW_SOURCES ${MDRUNTIMERW_SOURCES}) -if(CLR_CMAKE_PLATFORM_UNIX) - add_compile_options(-fPIC) -endif(CLR_CMAKE_PLATFORM_UNIX) - add_subdirectory(dac) add_subdirectory(wks) add_subdirectory(dbi) diff --git a/src/md/hotdata/CMakeLists.txt b/src/md/hotdata/CMakeLists.txt index 600da6a2bef9..92a16cc9f2ae 100644 --- a/src/md/hotdata/CMakeLists.txt +++ b/src/md/hotdata/CMakeLists.txt @@ -25,10 +25,6 @@ set(MDHOTDATA_HEADERS convert_to_absolute_path(MDHOTDATA_HEADERS ${MDHOTDATA_HEADERS}) convert_to_absolute_path(MDHOTDATA_SOURCES ${MDHOTDATA_SOURCES}) -if(CLR_CMAKE_PLATFORM_UNIX) - add_compile_options(-fPIC) -endif(CLR_CMAKE_PLATFORM_UNIX) - add_subdirectory(dac) add_subdirectory(full) add_subdirectory(crossgen) diff --git a/src/md/runtime/CMakeLists.txt b/src/md/runtime/CMakeLists.txt index 1111bdb0fec9..fc817b1f0d71 100644 --- a/src/md/runtime/CMakeLists.txt +++ b/src/md/runtime/CMakeLists.txt @@ -41,10 +41,6 @@ set(MDRUNTIME_HEADERS convert_to_absolute_path(MDRUNTIME_HEADERS ${MDRUNTIME_HEADERS}) convert_to_absolute_path(MDRUNTIME_SOURCES ${MDRUNTIME_SOURCES}) -if(CLR_CMAKE_PLATFORM_UNIX) - add_compile_options(-fPIC) -endif(CLR_CMAKE_PLATFORM_UNIX) - add_subdirectory(dac) add_subdirectory(wks) add_subdirectory(dbi) diff --git a/src/md/staticmd/CMakeLists.txt b/src/md/staticmd/CMakeLists.txt index 1800dada3166..c3726a80812d 100644 --- a/src/md/staticmd/CMakeLists.txt +++ b/src/md/staticmd/CMakeLists.txt @@ -6,11 +6,6 @@ set(STATICMD_SOURCES convert_to_absolute_path(STATICMD_SOURCES ${STATICMD_SOURCES}) -if(CLR_CMAKE_PLATFORM_UNIX) - add_compile_options(-fPIC) -endif(CLR_CMAKE_PLATFORM_UNIX) - - add_definitions(-DFEATURE_METADATA_EMIT_ALL) add_definitions(-DFEATURE_METADATA_EMIT) add_definitions(-DFEATURE_METADATA_INTERNAL_APIS) diff --git a/src/md/winmd/CMakeLists.txt b/src/md/winmd/CMakeLists.txt index 31dbbbfc4fd9..567a9758f136 100644 --- a/src/md/winmd/CMakeLists.txt +++ b/src/md/winmd/CMakeLists.txt @@ -20,10 +20,6 @@ set(MDWINMD_HEADERS convert_to_absolute_path(MDWINMD_HEADERS ${MDWINMD_HEADERS}) convert_to_absolute_path(MDWINMD_SOURCES ${MDWINMD_SOURCES}) -if(CLR_CMAKE_PLATFORM_UNIX) - add_compile_options(-fPIC) -endif(CLR_CMAKE_PLATFORM_UNIX) - add_subdirectory(dac) add_subdirectory(wks) if(WIN32) diff --git a/src/nativeresources/CMakeLists.txt b/src/nativeresources/CMakeLists.txt index e73a0d21292b..947a91438970 100644 --- a/src/nativeresources/CMakeLists.txt +++ b/src/nativeresources/CMakeLists.txt @@ -1,7 +1,5 @@ project(nativeresourcestring) -add_compile_options(-fPIC) - add_library_clr(nativeresourcestring STATIC resourcestring.cpp diff --git a/src/pal/src/CMakeLists.txt b/src/pal/src/CMakeLists.txt index 931566202cd6..1a5b3b33e4a4 100644 --- a/src/pal/src/CMakeLists.txt +++ b/src/pal/src/CMakeLists.txt @@ -9,8 +9,6 @@ if(NOT DEFINED ENV{ROOTFS_DIR}) include_directories(SYSTEM /usr/local/include) endif() -add_compile_options(-fPIC) - if(NOT CLR_CMAKE_USE_SYSTEM_LIBUNWIND) include_directories(libunwind/include) include_directories(libunwind/include/tdep) diff --git a/src/pal/src/eventprovider/lttngprovider/CMakeLists.txt b/src/pal/src/eventprovider/lttngprovider/CMakeLists.txt index b5bf8e855115..1f49aef64e0a 100644 --- a/src/pal/src/eventprovider/lttngprovider/CMakeLists.txt +++ b/src/pal/src/eventprovider/lttngprovider/CMakeLists.txt @@ -46,8 +46,6 @@ add_library(eventprovider eventproviderhelpers.cpp ) -add_compile_options(-fPIC) - add_library(coreclrtraceptprovider SHARED ${TRACEPOINT_PROVIDER_SOURCES} diff --git a/src/pal/tests/palsuite/exception_handling/pal_sxs/test1/CMakeLists.txt b/src/pal/tests/palsuite/exception_handling/pal_sxs/test1/CMakeLists.txt index 4a3abc2d640e..685ac2ed4f0b 100644 --- a/src/pal/tests/palsuite/exception_handling/pal_sxs/test1/CMakeLists.txt +++ b/src/pal/tests/palsuite/exception_handling/pal_sxs/test1/CMakeLists.txt @@ -3,7 +3,6 @@ cmake_minimum_required(VERSION 2.8.12.2) set(CMAKE_INCLUDE_CURRENT_DIR ON) if(CLR_CMAKE_PLATFORM_UNIX) - add_compile_options(-fPIC) add_definitions(-DFEATURE_ENABLE_HARDWARE_EXCEPTIONS) endif(CLR_CMAKE_PLATFORM_UNIX) diff --git a/src/palrt/CMakeLists.txt b/src/palrt/CMakeLists.txt index d9f7b94d7033..77fdc67a52d7 100644 --- a/src/palrt/CMakeLists.txt +++ b/src/palrt/CMakeLists.txt @@ -12,8 +12,6 @@ set(PALRT_SOURCES variant.cpp ) -add_compile_options(-fPIC) - add_library_clr(palrt STATIC ${PALRT_SOURCES} diff --git a/src/strongname/api/CMakeLists.txt b/src/strongname/api/CMakeLists.txt index 0b5e01ecb312..1e0ec2097a68 100644 --- a/src/strongname/api/CMakeLists.txt +++ b/src/strongname/api/CMakeLists.txt @@ -17,10 +17,6 @@ set(STRONGNAME_SOURCES convert_to_absolute_path(STRONGNAME_SOURCES ${STRONGNAME_SOURCES}) -if(CLR_CMAKE_PLATFORM_UNIX) - add_compile_options(-fPIC) -endif(CLR_CMAKE_PLATFORM_UNIX) - add_subdirectory(dac) add_subdirectory(wks) add_subdirectory(crossgen) diff --git a/src/tools/crossgen/CMakeLists.txt b/src/tools/crossgen/CMakeLists.txt index 410f82d929ee..ab5b4eda5397 100644 --- a/src/tools/crossgen/CMakeLists.txt +++ b/src/tools/crossgen/CMakeLists.txt @@ -14,7 +14,6 @@ if(WIN32) endif() if(CLR_CMAKE_PLATFORM_UNIX) - add_compile_options(-fPIE) add_definitions(-DNO_NGENPDB) endif(CLR_CMAKE_PLATFORM_UNIX) diff --git a/src/unwinder/CMakeLists.txt b/src/unwinder/CMakeLists.txt index 5cd7bae33797..9a5d7829c86d 100644 --- a/src/unwinder/CMakeLists.txt +++ b/src/unwinder/CMakeLists.txt @@ -19,10 +19,6 @@ list(APPEND UNWINDER_SOURCES convert_to_absolute_path(UNWINDER_SOURCES ${UNWINDER_SOURCES}) -if(CLR_CMAKE_PLATFORM_UNIX) - add_compile_options(-fPIC) -endif(CLR_CMAKE_PLATFORM_UNIX) - if(CLR_CMAKE_PLATFORM_UNIX) add_subdirectory(wks) endif(CLR_CMAKE_PLATFORM_UNIX) diff --git a/src/utilcode/CMakeLists.txt b/src/utilcode/CMakeLists.txt index e8b1b13abf56..deb5dc827d88 100644 --- a/src/utilcode/CMakeLists.txt +++ b/src/utilcode/CMakeLists.txt @@ -109,10 +109,6 @@ convert_to_absolute_path(UTILCODE_DAC_SOURCES ${UTILCODE_DAC_SOURCES}) convert_to_absolute_path(UTILCODE_CROSSGEN_SOURCES ${UTILCODE_CROSSGEN_SOURCES}) convert_to_absolute_path(UTILCODE_STATICNOHOST_SOURCES ${UTILCODE_STATICNOHOST_SOURCES}) -if(CLR_CMAKE_PLATFORM_UNIX) - add_compile_options(-fPIC) -endif(CLR_CMAKE_PLATFORM_UNIX) - add_subdirectory(dac) add_subdirectory(dyncrt) add_subdirectory(staticnohost) diff --git a/src/vm/CMakeLists.txt b/src/vm/CMakeLists.txt index d9dca1fb361c..5ee54cb6b3d9 100644 --- a/src/vm/CMakeLists.txt +++ b/src/vm/CMakeLists.txt @@ -21,10 +21,6 @@ else() endif(UPPERCASE_CMAKE_BUILD_TYPE STREQUAL DEBUG OR UPPERCASE_CMAKE_BUILD_TYPE STREQUAL CHECKED) endif(CMAKE_CONFIGURATION_TYPES) -if(CLR_CMAKE_PLATFORM_UNIX) - add_compile_options(-fPIC) -endif(CLR_CMAKE_PLATFORM_UNIX) - if(FEATURE_GDBJIT) set(VM_SOURCES_GDBJIT gdbjit.cpp diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 665b3687461a..a55602917eeb 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -32,10 +32,6 @@ if (WIN32) set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /EHsc") endif() -if(CLR_CMAKE_PLATFORM_UNIX) - add_compile_options(-fPIC) -endif(CLR_CMAKE_PLATFORM_UNIX) - MACRO(SUBDIRLIST result curdir) FILE(GLOB children RELATIVE ${curdir} ${curdir}/*) SET(dirlist "") From f2dd612b64a25d66b85546a603ef195bdb0476a6 Mon Sep 17 00:00:00 2001 From: Jan Vorlicek Date: Thu, 22 Aug 2019 15:02:26 -0700 Subject: [PATCH 2/2] Fix native parts of coreclr tests build The native parts of the tests are not built using the root CMakeLists.txt so I am moving enabling the position independent code to configurecompiler.cmake --- CMakeLists.txt | 3 --- configurecompiler.cmake | 3 +++ 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index fbcb850a7575..74cff66c1789 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -6,9 +6,6 @@ cmake_policy(SET CMP0042 NEW) # Set the project name project(CoreCLR) -# All code we build should be compiled as position independent -set(CMAKE_POSITION_INDEPENDENT_CODE 1) - # Include cmake functions include(functions.cmake) diff --git a/configurecompiler.cmake b/configurecompiler.cmake index a7a15ff7ac40..8e1f6b509422 100644 --- a/configurecompiler.cmake +++ b/configurecompiler.cmake @@ -6,6 +6,9 @@ set(CMAKE_C_STANDARD_REQUIRED ON) set(CMAKE_CXX_STANDARD 11) set(CMAKE_CXX_STANDARD_REQUIRED ON) +# All code we build should be compiled as position independent +set(CMAKE_POSITION_INDEPENDENT_CODE ON) + set(CLR_DEFINES_DEBUG_INIT DEBUG _DEBUG _DBG URTBLDENV_FRIENDLY=Checked BUILDENV_CHECKED=1) set(CLR_DEFINES_CHECKED_INIT DEBUG _DEBUG _DBG URTBLDENV_FRIENDLY=Checked BUILDENV_CHECKED=1) set(CLR_DEFINES_RELEASE_INIT NDEBUG URTBLDENV_FRIENDLY=Retail)