Age | Commit message (Collapse) | Author | Files | Lines |
|
* Add -msse2 compile option
Cherry-pick of https://github.com/dotnet/runtime/pull/33135
* Use prefixed hex format in asm
Cherry-pick of https://github.com/dotnet/runtime/pull/33205
* [Tizen] Add CoreCLR tests build dependencies v3.1.3 for x86
* [Tizen] Add CoreCLR tests build dependencies v3.1.3 for x64
* [Tizen] Allow build of tests for x86/x64
|
|
|
|
* 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.
* 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
Change-Id: Ieafff8984ec23e5fdb00fb0c2fb017e53afbce88
|
|
Enable libasansi.so support (libasan.so with switchable interceptors).
Change-Id: I9ee9b47b7beab55f036ffc0697ffab2583e9701c
Signed-off-by: Vyacheslav Cherkashin <v.cherkashin@samsung.com>
|
|
|
|
On newer systems with glibc 2.30, the compiler emits a warning:
In file included from coreclr/src/pal/src/misc/sysinfo.cpp:32:
/usr/include/sys/sysctl.h:21:2: error: "The <sys/sysctl.h> header is deprecated and will be removed." [-Werror,-W#warnings]
#warning "The <sys/sysctl.h> header is deprecated and will be removed."
^
The glibc 2.30 release notes cover this at
https://sourceware.org/ml/libc-alpha/2019-08/msg00029.html:
* The Linux-specific <sys/sysctl.h> header and the sysctl function have been
deprecated and will be removed from a future version of glibc.
Application should directly access /proc instead. For obtaining random
bits, the getentropy function can be used.
To keep coreclr release/3.1 building, disable treating the #warning as an
error. Clang and GCC have separate flags to turn this error off.
|
|
csc.exe ourselves. (#24342)
* Use CMake's C# support to build DacTableGen instead of manually invoking csc.exe ourselves.
* Fix x86 failures.
* Disable DAC generation when building with NMake Makefiles and issue an error since the CMake C# support is VS-only. We don't actually support building with NMake (only configure) so this is ok.
* Clean up rest of the macro=1's
PR Feedback.
* Fix Visual Studio generator matching.
* Explicitly specify anycpu32bitpreferred for DacTableGen so the ARM64 build doesn't accidentally make it 64-bit
* Fix bad merge
|
|
* Convert C++ standard settings and warning options from CMAKE_<LANG>_FLAGS to Modern CMake isms.
* More $<COMPILE_LANGUAGE> generator expressions instead of CMAKE_CXX_FLAGS.
* Use $<COMPILE_LANGUAGE:CXX> for all -fpermissive usage
* Fix generator expression that generates multiple flags
* Fix invalid use of CMAKE_CXX_FLAGS instead of CMAKE_C_FLAGS.
* Treat AppleClang as though it is Clang (match pre-3.0 behavior).
* Update our build system to understand that AppleClang is distinct from Clang and remove CMP0025 policy setting.
* PR Feedback.
|
|
* Add warning disables around InitJITHelpers1 for C4731
* Move configureoptimization up in configurecompiler.
|
|
* fix compilation with gcc7.x
In file included from src/inc/sstring.h:1029:0,
from src/inc/ex.h:19,
from src/inc/stgpool.h:28,
from src/inc/../md/inc/metamodel.h:18,
from src/inc/../md/inc/metamodelro.h:19,
from src/inc/metadata.h:17,
from src/inc/corpriv.h:21,
from src/md/compiler/stdafx.h:20,
from src/md/compiler/mdutil.cpp:12:
src/inc/sstring.inl: In member function ‘const WCHAR* SString::GetUnicode() const’:
src/inc/sstring.inl:650:5: error: nonnull argument ‘this’ compared to NULL [-Werror=nonnull-compare]
if (this == NULL)
^~
add version check
* Use the abstracted version of __nodebug__
* cc1: warning: command line option ‘-fpermissive’ is valid for C++/ObjC++ but not for C
|
|
* On systems that have both cmake 2 and cmake 3, use cmake 3.
Move CMAKE_EXPORT_COMPILE_COMMANDS to top level instead of in gen-buildsys-*. Define the CMake install prefix in gen-buildsys-* instead of pulling from an environment variable.
Define C++ standard as CMake property instead of as flag.
Move CLR_DEFINES_*_INIT out of overrides and into configurecompiler.cmake
Move flags that generate debug info into configurecompiler.cmake
Remove the CMAKE_USER_RULES_OVERRIDE files.
Add cmake version output for determining what cmake versions each CI system has.
Fix syntax in gen-buildsys-clang.
Change add_compile_definitions back to add_definitions
Add -D prefix for adding definitions via add_definitions
Remove extraneous double-quote
Change default config definition adding to the syntax in master
Switch back to old CMAKE_<LANG>_FLAGS way of setting the language standards and try to go back to 2.8.12 minimum
Switch back setting compile definitions for non-Windows branch too.
Use SET with CMAKE_<LANG>_FLAGS. Convert some usages of appending to CMAKE_<LANG>_FLAGS to add_compile_options where possible.
Set CMAKE_<LANG>_FLAGS_INIT instead of CMAKE_<LANG>_FLAGS
Make sure configureopimitzation.cmake is included correctly in test build.
Try to add brackets to get the Linux ARM compilation working correctly.
Define standard language version in configurecompiler.cmake instead of root CMakeLists (so tests get it)
Try to move langauge standard check to configure.cmake
define language standard in each root CMakeLists.txt
Fix off-Windows test build.
Set CMAKE_EXPORT_COMPILE_COMMANDS after the project() call
* Set CMAKE_USER_MAKE_RULES_OVERRIDE to "" to not break incremental builds after building on a branch that had it set to a path.
* Remove CMake version output.
* Move comment outside of multiline command.
* Retry setting CMAKE_USER_MAKE_RULES_OVERRIDE
* Remove unnecessary variable wrappers.
* Simplify cmake 3 resolution.
* Explicitly use CMAKE_CXX_FLAGS for C++-only flags that GCC complains about on C files.
* Set -Wall via CMAKE_<LANG>_FLAGS until we can move all flag settings to add_compile_options
* Fix typos
* Another temporary precedence issue.
* include configureoptimization.cmake in configurecompiler.cmake
* Move setting CMAKE_EXPORT_COMPILE_COMMANDS to configurecompiler.cmake.
* Rename configure.cmake -> verify_lto.cmake.
* Fix path to verify-lto
* Try using CMAKE_<LANG>_FLAGS instead of CMAKE_<LANG>_FLAGS_INIT.
* Revert name change to configure.camek
|
|
Versions of gcc lower than 7 do not have C++17's "over-aligned new"
support. With gcc 7 and 8, following error is thrown:
```
/datadrive/projects/coreclr/src/vm/threadpoolrequest.cpp: In static member function static TPIndex PerAppDomainTPCountList::AddNewTPIndex():
/datadrive/projects/coreclr/src/vm/threadpoolrequest.cpp:79:81: error: new of type ManagedPerAppDomainTPCount with extended alignment 64 [-Werror=aligned-new=]
ManagedPerAppDomainTPCount * pAdCount = new ManagedPerAppDomainTPCount(index);
^
/datadrive/projects/coreclr/src/vm/threadpoolrequest.cpp:79:81: note: uses void* operator new(size_t), which does not have an alignment parameter
/datadrive/projects/coreclr/src/vm/threadpoolrequest.cpp:79:81: note: use -faligned-new to enable C++17 over-aligned new support
```
The fix is to enable `-falign-new` (without fully activating C++17
features), that does auto-alignment like gcc 6x and below and clang.
|
|
CLR_ADDITIONAL_COMPILER_OPTIONS was set before visibility settings and
thus adding additional compiler options would be overwritten.
|
|
remove no attribute
|
|
* Port AMSI scanning for assembly loads
* Define PLATFORM_WINDOWS for Windows build
* Remove check for LOAD_LIBRARY_SEARCH_SYSTEM32 support
|
|
* Replace __sync_swap with __atomic_exchange_n
__sync_swap() is a clang specific function.
* Remove multiline comment
* Add paranthesis around sum
src/md/hotdata/../inc/streamutil.h:73:34: warning: suggest parentheses around ‘+’ in operand of ‘&’ [-Wparentheses]
UINT32 aligned = *totalBytes + 3 & ~3;
* Define __int64
* Define windows types for tests
* Remove undefined has_builtin defines and define alloca and inline for GNUC
* Remove __clang__ where possible
* Add implicit casting to help compiler find WCHAR* variant
src/binder/assembly.cpp:294:73: error: no matching function for call to ‘SString::SString(SString)’
return (pAsmName == nullptr ? nullptr : pAsmName->GetSimpleName());
^
In file included from src/inc/sstring.h:1082:0,
from src/inc/ex.h:19,
from src/inc/stgpool.h:28,
from src/inc/../md/inc/metamodel.h:18,
from src/inc/../md/inc/metamodelro.h:19,
from src/inc/metadata.h:17,
from src/binder/../vm/util.hpp:19,
from src/binder/../vm/common.h:110,
from src/binder/assembly.cpp:14:
src/inc/sstring.inl:73:8: note: candidate: SString::SString(void*, COUNT_T)
inline SString::SString(void *buffer, COUNT_T size)
^
src/inc/sstring.inl:73:8: note: candidate expects 2 arguments, 1 provided
src/inc/sstring.inl:436:8: note: candidate: SString::SString(SString::tagLiteral, const WCHAR*, COUNT_T)
inline SString::SString(tagLiteral dummytag, const WCHAR *literal, COUNT_T count)
^
src/inc/sstring.inl:436:8: note: candidate expects 3 arguments, 1 provided
src/inc/sstring.inl:418:8: note: candidate: SString::SString(SString::tagLiteral, const WCHAR*)
inline SString::SString(tagLiteral dummytag, const WCHAR *literal)
^
src/inc/sstring.inl:418:8: note: candidate expects 2 arguments, 1 provided
src/inc/sstring.inl:401:8: note: candidate: SString::SString(SString::tagUTF8Literal, const UTF8*)
inline SString::SString(tagUTF8Literal dummytag, const UTF8 *literal)
^
src/inc/sstring.inl:401:8: note: candidate expects 2 arguments, 1 provided
src/inc/sstring.inl:382:8: note: candidate: SString::SString(SString::tagLiteral, const CHAR*)
inline SString::SString(tagLiteral dummytag, const ASCII *literal)
* Reorder DLLEXPORT and STDAPI
GNUC wants extern "C" <attribute> format.
* Abstract __FUNCSIG__
* Abstract __debugbreak()
* Move common compiler options out of clang and add Wno-unused-value
* Add paranthesis around || and &&
src/gc/gc.cpp:9084:38: warning: suggest parentheses around ‘&&’ within ‘||’ [-Wparentheses]
(!chosen_power2) && (i < free_space_count));
* Set Wno-delete-non-virtual-dtor for CXX files only
* Don't warn on unterminated endif labels
* Suppress unused functions
* Use 0x syntax rather than h syntax on GNU asm files
* Correct constructor call directly
src/ToolBox/superpmi/superpmi-shared/logging.cpp:301:27: required from here
src/inc/clr_std/string:58:9: error: cannot call constructor ‘std::basic_string<char>::basic_string’ directly
this->basic_string::basic_string(_Ptr, c_len(_Ptr));
* Suppress NULL used in arithmetic warnings
|
|
(#22662)
* Abstract selectany
* Fix initializer element is not constant
src/corefx/System.Globalization.Native/pal_icushim.c:58:34: error: initializer element is not constant
static const int MaxICUVersion = MinICUVersion + 20;
* Enable ms extensions
* Apply LLVM patterns to GCC
* Remove deprecated function
* Fix const conversion error
src/corefx/System.Globalization.Native/pal_calendarData.c:390:16: warning: passing argument 1 of ‘ures_close_ptr’ discards ‘const’ qualifier from pointer target type [-Wdiscarded-qualifiers]
ures_close(erasResBundle);
src/corefx/System.Globalization.Native/pal_calendarData.c:419:22: warning: initialization discards ‘const’ qualifier from pointer target type [-Wdiscarded-qualifiers]
char* name = GetCalendarName(calendarId);
* Remove old compiler option
|
|
* Fix ifdef for `g_DbgSuppressAllocationAsserts`.
It needs to be defined under `FEATURE_INTEROP_DEBUGGING`.
* Unify contracts disabling for UNIX/ARM.
It also disables some parts that were disabled for ARM, but not for UNIX.
It fixes the difference that we see between ARM32 and ARM64 Unix Checked.
* Disable contracts on arm64.
FIxes the difference that we see between windows arm32 and arm64 in checked/debug builds.
* Revert CoreFX arm64 timeout change.
That is no longer necessary.
* Reenable arm64 corefx jobs.
They should not fail with timeouts anymore.
* Don't allow `g_DbgSuppressAllocationAsserts` defnition in release builds.
* delete AssertAllocationAllowed
|
|
|
|
|
|
* Declare throw only when compiling for c++
Prevent the definition from getting defined multiple times and
map it to throw() only when compiling c++ code.
* Suppress warnings for tests
Suppress:
-Wno-write-strings
-Wno-sign-compare
-Wno-narrowing
-fpermissive
-Wno-int-to-pointer-cast
to allow tests to compile
* Add gcc option to build.sh script
Following clangx.y model add -gccx.y command line
arguments with gcc5 and gcc7 being the currnetly supported
options.
* Allow environment variable to be used for TOOLCHAIN
Remove CLANG specific compiler options as well.
* Hide non-GNU compiler options
* Do not include local directory if cross compiling
[ 0%] Building CXX object src/pal/src/eventprovider/tracepointprovider/CMakeFiles/coreclrtraceptprovider.dir/__/lttng/traceptprovdotnetruntime.cpp.o
cc1plus: error: include location "/usr/local/include" is unsafe for cross-compilation [-Werror=poison-system-directories]
* Suppress unknown pragma warnings
src/pal/src/exception/seh-unwind.cpp:37:0:
warning: ignoring #pragma clang diagnostic [-Wunknown-pragmas]
#pragma clang diagnostic pop
Removing these cause compilation error on clang7 and arm as follows:
In file included from /bin/obj/Linux.arm.Debug/src/pal/src/libunwind/include/libunwind.h:9:
/src/pal/src/libunwind/include/libunwind-arm.h:247:9: error: empty struct has size 0 in C, size 1 in C++ [-Werror,-Wextern-c-compat]
typedef struct unw_tdep_save_loc
^
/src/pal/src/libunwind/include/libunwind-arm.h:288:9: error: empty struct has size 0 in C, size 1 in C++ [-Werror,-Wextern-c-compat]
typedef struct
* plt not useful for GNU and ARM64/ARM
src/pal/src/arch/arm64/callsignalhandlerwrapper.S: Assembler messages:
src/pal/src/arch/arm64/callsignalhandlerwrapper.S:31: Error: unexpected characters following instruction at operand 1 -- `bl signal_handler_worker@plt'
src/pal/src/arch/arm64/callsignalhandlerwrapper.S:32: Error: unexpected characters following instruction at operand 1 -- `bl signal_handler_worker@plt'
* Remove double const from argv in PAL_Initialize
Seeing compilation error with GNU for C source files as follows:
if (PAL_Initialize(argc, argv) != 0)
^
src/pal/tests/palsuite/common/palsuite.h:21:0,
from src/pal/tests/palsuite/c_runtime/asinhf/test1/test1.c:18:
src/pal/inc/pal.h:374:1: note: expected ‘const char * const*’ but argument is of type ‘char **’
* Suppress format warnings using GNU for libunwind
warning: format ‘%li’ expects argument of type ‘long int’, but argument 3 has type ‘int’ [-Wformat=]
Debug (4, " aligned frame, offset %li\n", f->cfa_reg_offset);
* Fix -fpermissive warnings for GNU
* Suppress unused variable warning in libunwind
src/pal/src/libunwind/include/libunwind-aarch64.h:201:5: warning: right-hand operand of comma expression has no effect [-Wunused-value]
#define unw_tdep_getcontext(uc) (({ \
~~~~~~~~~
unw_tdep_context_t *unw_ctx = (uc); \
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
register uint64_t *unw_base asm ("x0") = (uint64_t*) unw_ctx->uc_mcontext.regs; \
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
__asm__ __volatile__ ( \
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
"stp x0, x1, [%[base], #0]\n" \
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
"stp x2, x3, [%[base], #16]\n" \
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
"stp x4, x5, [%[base], #32]\n" \
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
"stp x6, x7, [%[base], #48]\n" \
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
"stp x8, x9, [%[base], #64]\n" \
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
"stp x10, x11, [%[base], #80]\n" \
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
"stp x12, x13, [%[base], #96]\n" \
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
"stp x14, x13, [%[base], #112]\n" \
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
"stp x16, x17, [%[base], #128]\n" \
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
"stp x18, x19, [%[base], #144]\n" \
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
"stp x20, x21, [%[base], #160]\n" \
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
"stp x22, x23, [%[base], #176]\n" \
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
"stp x24, x25, [%[base], #192]\n" \
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
"stp x26, x27, [%[base], #208]\n" \
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
"stp x28, x29, [%[base], #224]\n" \
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
"str x30, [%[base], #240]\n" \
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
"mov x1, sp\n" \
~~~~~~~~~~~~~~~~
"stp x1, x30, [%[base], #248]\n" \
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
: [base] "+r" (unw_base) : : "x1", "memory"); \
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
}), 0)
* Fix warning: ‘memset’ used with length equal to number of elements warning
Fix similar warnings to these by including the element size into total size
calculation.
src/pal/tests/palsuite/miscellaneous/SetEnvironmentVariableW/test1/test.cpp: In function ‘int main(int, char**)’:
src/pal/tests/palsuite/miscellaneous/SetEnvironmentVariableW/test1/test.cpp:89:31: warning: ‘memset’ used with length equal to number of elements without multiplication by element size [-Wmemset-elt-size]
memset(NewValue,0,BUF_SIZE);
* Define CLR specific compiler option CLR_CMAKE_COMPILER
By the time toolchain.cmake is called, the compiler detection from
cmake is not active. We need an intermediate definition to pass
to compiler detection.
|
|
* Pass the minimum supported version of macOS option to both compile and link stages in configurecompiler.cmake
* Enable OSX.1012.Amd64.* open and internal queues and add OSX.1014.Amd64 queue in eng/platform-matrix.yml
|
|
|
|
|
|
crossgen otherwise in configurecompiler.cmake
|
|
|
|
Bring back functionality for loading IJW assemblies and calling managed->native. Also add workaround to test case for the C++ compiler inserting calls to mscoree.
|
|
* Respect Windows script argument to skip package building.
* Bring build.sh logic closer to build.cmd with respect to passing CMAKE flags for building tests
* Make cmake gen script find override file without using script arguments
* build-test.sh can now build native test projects
Remove compileoptions.cmake and push contents into configurecompiler.cmake
which contains compiler configuration from repo root CMakeLists.txt
|