diff --git a/.dotnet.metadata b/.dotnet.metadata index 133d204..9e559d9 100644 --- a/.dotnet.metadata +++ b/.dotnet.metadata @@ -1 +1 @@ -88a5b4436d7f848b33121f8aad2d37dc9ba93a1f SOURCES/dotnet-v2.1.513-SDK.tar.gz +5c5b46b55bf1f7fe2b2417df61231c9a86634531 SOURCES/dotnet-v2.1.514-SDK.tar.gz diff --git a/.gitignore b/.gitignore index f90b675..77d6caa 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1 @@ -SOURCES/dotnet-v2.1.513-SDK.tar.gz +SOURCES/dotnet-v2.1.514-SDK.tar.gz diff --git a/SOURCES/build-coreclr-clang10.patch b/SOURCES/build-coreclr-clang10.patch new file mode 100644 index 0000000..96d0a46 --- /dev/null +++ b/SOURCES/build-coreclr-clang10.patch @@ -0,0 +1,448 @@ +commit e73f34074a381891ee92711e496134dce758a969 +Author: Omair Majid +Date: Tue Jun 2 12:16:31 2020 -0400 + + Fix build with clang 10 + + This contains a grab bag of fixes to fix the build with clang 10. + + - https://github.com/dotnet/coreclr/pull/23075 + + Fix missing includes in coreclr/src/debug/createdump/ + + - https://github.com/dotnet/runtime/pull/33096 + + SList::Init: add missing constructor + + - A subset of https://github.com/dotnet/coreclr/pull/22129 + + Just the parts that introduce the THROW_DECL macro in pal.h + + - https://github.com/dotnet/runtime/pull/32837 + + This fixes THROW_DECL introduce in the previous PR to work with clang, which + is required in clang 10. + + - One new change: + + In a significant divergance, this commits adds more THROW_DECL macros + to all the math functions to address a ton of errors pointed out when + building SOS: + + In file included from /home/omajid/devel/dotnet/coreclr/src/ToolBox/SOS/Strike/strike.cpp:116: + In file included from /home/omajid/devel/dotnet/coreclr/src/vm/hillclimbing.h:19: + In file included from /home/omajid/devel/dotnet/coreclr/src/inc/complex.h:16: + In file included from /usr/bin/../lib/gcc/x86_64-redhat-linux/10/../../../../include/c++/10/math.h:36: + In file included from /usr/bin/../lib/gcc/x86_64-redhat-linux/10/../../../../include/c++/10/cmath:45: + In file included from /usr/include/math.h:290: + /usr/include/bits/mathcalls.h:53:13: error: exception specification in declaration does not match previous declaration + __MATHCALL (acos,, (_Mdouble_ __x)); + ^ + /home/omajid/devel/dotnet/coreclr/src/pal/inc/pal.h:4395:26: note: previous declaration is here + PALIMPORT double __cdecl acos(double); + ^ + + Then, to make sure the declarations and implementations match, it adds + THROW_DECL to the definitions in src/pal/src/cruntime/math.cpp + + Co-authored-by: Mike McLaughlin + Co-authored-by: Sinan Kaya + Co-authored-by: Tom Deseyn + +diff --git a/src/debug/createdump/createdump.h b/src/debug/createdump/createdump.h +index 4892e5464b..3f71b627e6 100644 +--- a/src/debug/createdump/createdump.h ++++ b/src/debug/createdump/createdump.h +@@ -54,6 +54,8 @@ typedef int T_CONTEXT; + #include + #include + #include ++#include ++#include + #include "datatarget.h" + #include "threadinfo.h" + #include "memoryregion.h" +diff --git a/src/inc/slist.h b/src/inc/slist.h +index 2b81f9ba90..8ea6f9098e 100644 +--- a/src/inc/slist.h ++++ b/src/inc/slist.h +@@ -160,13 +160,13 @@ public: + void Init() + { + LIMITED_METHOD_CONTRACT; +- m_pHead = &m_link; ++ m_pHead = PTR_SLink(&m_link); + // NOTE :: fHead variable is template argument + // the following code is a compiled in, only if the fHead flag + // is set to false, + if (!fHead) + { +- m_pTail = &m_link; ++ m_pTail = PTR_SLink(&m_link); + } + } + +@@ -274,7 +274,7 @@ public: + SLink *ret = SLink::FindAndRemove(m_pHead, GetLink(pObj), &prior); + + if (ret == m_pTail) +- m_pTail = prior; ++ m_pTail = PTR_SLink(prior); + + return GetObject(ret); + } +diff --git a/src/pal/inc/mbusafecrt.h b/src/pal/inc/mbusafecrt.h +index f030b7ded2..7021439af2 100644 +--- a/src/pal/inc/mbusafecrt.h ++++ b/src/pal/inc/mbusafecrt.h +@@ -31,6 +31,12 @@ typedef int errno_t; + // define the return value for success + #define SAFECRT_SUCCESS 0 + ++#if defined(_MSC_VER) ++#define THROW_DECL ++#else ++#define THROW_DECL throw() ++#endif ++ + #ifdef __cplusplus + extern "C" { + #endif +@@ -98,7 +104,7 @@ extern int swscanf_s( const WCHAR *string, const WCHAR *format, ... ); + extern int _snscanf_s( const char *string, size_t count, const char *format, ... ); + extern int _snwscanf_s( const WCHAR *string, size_t count, const WCHAR *format, ... ); + +-extern errno_t memcpy_s( void * dst, size_t sizeInBytes, const void * src, size_t count ); ++extern errno_t memcpy_s( void * dst, size_t sizeInBytes, const void * src, size_t count ) THROW_DECL; + extern errno_t memmove_s( void * dst, size_t sizeInBytes, const void * src, size_t count ); + + #ifdef __cplusplus +diff --git a/src/pal/inc/pal.h b/src/pal/inc/pal.h +index 5106c01421..de20524faf 100644 +--- a/src/pal/inc/pal.h ++++ b/src/pal/inc/pal.h +@@ -137,6 +137,11 @@ extern "C" { + #define LANG_THAI 0x1e + + /******************* Compiler-specific glue *******************************/ ++#if defined(_MSC_VER) || !defined(__cplusplus) ++#define THROW_DECL ++#else ++#define THROW_DECL throw() ++#endif + + #ifndef _MSC_VER + #if defined(CORECLR) +@@ -4207,7 +4212,7 @@ EXTERN_C + PALIMPORT + void *PAL_memcpy (void *dest, const void *src, size_t count); + +-PALIMPORT void * __cdecl memcpy(void *, const void *, size_t); ++PALIMPORT void * __cdecl memcpy(void *, const void *, size_t) THROW_DECL; + + #define memcpy PAL_memcpy + #define IS_PAL_memcpy 1 +@@ -4220,7 +4225,7 @@ PALIMPORT int __cdecl memcmp(const void *, const void *, size_t); + PALIMPORT void * __cdecl memset(void *, int, size_t); + PALIMPORT void * __cdecl memmove(void *, const void *, size_t); + PALIMPORT void * __cdecl memchr(const void *, int, size_t); +-PALIMPORT long long int __cdecl atoll(const char *); ++PALIMPORT long long int __cdecl atoll(const char *) THROW_DECL; + PALIMPORT size_t __cdecl strlen(const char *); + PALIMPORT int __cdecl strcmp(const char*, const char *); + PALIMPORT int __cdecl strncmp(const char*, const char *, size_t); +@@ -4259,7 +4264,7 @@ PALIMPORT int __cdecl toupper(int); + #define _TRUNCATE ((size_t)-1) + #endif + +-PALIMPORT errno_t __cdecl memcpy_s(void *, size_t, const void *, size_t); ++PALIMPORT errno_t __cdecl memcpy_s(void *, size_t, const void *, size_t) THROW_DECL; + PALIMPORT errno_t __cdecl memmove_s(void *, size_t, const void *, size_t); + PALIMPORT char * __cdecl _strlwr(char *); + PALIMPORT int __cdecl _stricmp(const char *, const char *); +@@ -4387,58 +4392,58 @@ PALIMPORT long long __cdecl llabs(long long); + PALIMPORT int __cdecl _finite(double); + PALIMPORT int __cdecl _isnan(double); + PALIMPORT double __cdecl _copysign(double, double); +-PALIMPORT double __cdecl acos(double); +-PALIMPORT double __cdecl acosh(double); +-PALIMPORT double __cdecl asin(double); +-PALIMPORT double __cdecl asinh(double); +-PALIMPORT double __cdecl atan(double); +-PALIMPORT double __cdecl atanh(double); +-PALIMPORT double __cdecl atan2(double, double); +-PALIMPORT double __cdecl cbrt(double); +-PALIMPORT double __cdecl ceil(double); +-PALIMPORT double __cdecl cos(double); +-PALIMPORT double __cdecl cosh(double); +-PALIMPORT double __cdecl exp(double); +-PALIMPORT double __cdecl fabs(double); +-PALIMPORT double __cdecl floor(double); +-PALIMPORT double __cdecl fmod(double, double); +-PALIMPORT double __cdecl log(double); +-PALIMPORT double __cdecl log10(double); +-PALIMPORT double __cdecl modf(double, double*); +-PALIMPORT double __cdecl pow(double, double); +-PALIMPORT double __cdecl sin(double); +-PALIMPORT double __cdecl sinh(double); +-PALIMPORT double __cdecl sqrt(double); +-PALIMPORT double __cdecl tan(double); +-PALIMPORT double __cdecl tanh(double); ++PALIMPORT double __cdecl acos(double) THROW_DECL; ++PALIMPORT double __cdecl acosh(double) THROW_DECL; ++PALIMPORT double __cdecl asin(double) THROW_DECL; ++PALIMPORT double __cdecl asinh(double) THROW_DECL; ++PALIMPORT double __cdecl atan(double) THROW_DECL; ++PALIMPORT double __cdecl atanh(double) THROW_DECL; ++PALIMPORT double __cdecl atan2(double, double) THROW_DECL; ++PALIMPORT double __cdecl cbrt(double) THROW_DECL; ++PALIMPORT double __cdecl ceil(double) THROW_DECL; ++PALIMPORT double __cdecl cos(double) THROW_DECL; ++PALIMPORT double __cdecl cosh(double) THROW_DECL; ++PALIMPORT double __cdecl exp(double) THROW_DECL; ++PALIMPORT double __cdecl fabs(double) THROW_DECL; ++PALIMPORT double __cdecl floor(double) THROW_DECL; ++PALIMPORT double __cdecl fmod(double, double) THROW_DECL; ++PALIMPORT double __cdecl log(double) THROW_DECL; ++PALIMPORT double __cdecl log10(double) THROW_DECL; ++PALIMPORT double __cdecl modf(double, double*) THROW_DECL; ++PALIMPORT double __cdecl pow(double, double) THROW_DECL; ++PALIMPORT double __cdecl sin(double) THROW_DECL; ++PALIMPORT double __cdecl sinh(double) THROW_DECL; ++PALIMPORT double __cdecl sqrt(double) THROW_DECL; ++PALIMPORT double __cdecl tan(double) THROW_DECL; ++PALIMPORT double __cdecl tanh(double) THROW_DECL; + + PALIMPORT int __cdecl _finitef(float); + PALIMPORT int __cdecl _isnanf(float); + PALIMPORT float __cdecl _copysignf(float, float); +-PALIMPORT float __cdecl acosf(float); +-PALIMPORT float __cdecl acoshf(float); +-PALIMPORT float __cdecl asinf(float); +-PALIMPORT float __cdecl asinhf(float); +-PALIMPORT float __cdecl atanf(float); +-PALIMPORT float __cdecl atanhf(float); +-PALIMPORT float __cdecl atan2f(float, float); +-PALIMPORT float __cdecl cbrtf(float); +-PALIMPORT float __cdecl ceilf(float); +-PALIMPORT float __cdecl cosf(float); +-PALIMPORT float __cdecl coshf(float); +-PALIMPORT float __cdecl expf(float); +-PALIMPORT float __cdecl fabsf(float); +-PALIMPORT float __cdecl floorf(float); +-PALIMPORT float __cdecl fmodf(float, float); +-PALIMPORT float __cdecl logf(float); +-PALIMPORT float __cdecl log10f(float); +-PALIMPORT float __cdecl modff(float, float*); +-PALIMPORT float __cdecl powf(float, float); +-PALIMPORT float __cdecl sinf(float); +-PALIMPORT float __cdecl sinhf(float); +-PALIMPORT float __cdecl sqrtf(float); +-PALIMPORT float __cdecl tanf(float); +-PALIMPORT float __cdecl tanhf(float); ++PALIMPORT float __cdecl acosf(float) THROW_DECL; ++PALIMPORT float __cdecl acoshf(float) THROW_DECL; ++PALIMPORT float __cdecl asinf(float) THROW_DECL; ++PALIMPORT float __cdecl asinhf(float) THROW_DECL; ++PALIMPORT float __cdecl atanf(float) THROW_DECL; ++PALIMPORT float __cdecl atanhf(float) THROW_DECL; ++PALIMPORT float __cdecl atan2f(float, float) THROW_DECL; ++PALIMPORT float __cdecl cbrtf(float) THROW_DECL; ++PALIMPORT float __cdecl ceilf(float) THROW_DECL; ++PALIMPORT float __cdecl cosf(float) THROW_DECL; ++PALIMPORT float __cdecl coshf(float) THROW_DECL; ++PALIMPORT float __cdecl expf(float) THROW_DECL; ++PALIMPORT float __cdecl fabsf(float) THROW_DECL; ++PALIMPORT float __cdecl floorf(float) THROW_DECL; ++PALIMPORT float __cdecl fmodf(float, float) THROW_DECL; ++PALIMPORT float __cdecl logf(float) THROW_DECL; ++PALIMPORT float __cdecl log10f(float) THROW_DECL; ++PALIMPORT float __cdecl modff(float, float*) THROW_DECL; ++PALIMPORT float __cdecl powf(float, float) THROW_DECL; ++PALIMPORT float __cdecl sinf(float) THROW_DECL; ++PALIMPORT float __cdecl sinhf(float) THROW_DECL; ++PALIMPORT float __cdecl sqrtf(float) THROW_DECL; ++PALIMPORT float __cdecl tanf(float) THROW_DECL; ++PALIMPORT float __cdecl tanhf(float) THROW_DECL; + + #ifndef PAL_STDCPP_COMPAT + +diff --git a/src/pal/src/cruntime/math.cpp b/src/pal/src/cruntime/math.cpp +index a36ac9aa93..81345ea14b 100644 +--- a/src/pal/src/cruntime/math.cpp ++++ b/src/pal/src/cruntime/math.cpp +@@ -117,7 +117,7 @@ Function: + + See MSDN. + --*/ +-PALIMPORT double __cdecl PAL_acos(double x) ++PALIMPORT double __cdecl PAL_acos(double x) THROW_DECL + { + double ret; + PERF_ENTRY(acos); +@@ -147,7 +147,7 @@ Function: + + See MSDN. + --*/ +-PALIMPORT double __cdecl PAL_acosh(double x) ++PALIMPORT double __cdecl PAL_acosh(double x) THROW_DECL + { + double ret; + PERF_ENTRY(acosh); +@@ -166,7 +166,7 @@ Function: + + See MSDN. + --*/ +-PALIMPORT double __cdecl PAL_asin(double x) ++PALIMPORT double __cdecl PAL_asin(double x) THROW_DECL + { + double ret; + PERF_ENTRY(asin); +@@ -196,7 +196,7 @@ Function: + + See MSDN. + --*/ +-PALIMPORT double __cdecl PAL_asinh(double x) ++PALIMPORT double __cdecl PAL_asinh(double x) THROW_DECL + { + double ret; + PERF_ENTRY(asinh); +@@ -215,7 +215,7 @@ Function: + + See MSDN. + --*/ +-PALIMPORT double __cdecl PAL_atan2(double y, double x) ++PALIMPORT double __cdecl PAL_atan2(double y, double x) THROW_DECL + { + double ret; + PERF_ENTRY(atan2); +@@ -255,7 +255,7 @@ Function: + + See MSDN. + --*/ +-PALIMPORT double __cdecl PAL_exp(double x) ++PALIMPORT double __cdecl PAL_exp(double x) THROW_DECL + { + double ret; + PERF_ENTRY(exp); +@@ -306,7 +306,7 @@ Function: + + See MSDN. + --*/ +-PALIMPORT double __cdecl PAL_log(double x) ++PALIMPORT double __cdecl PAL_log(double x) THROW_DECL + { + double ret; + PERF_ENTRY(log); +@@ -336,7 +336,7 @@ Function: + + See MSDN. + --*/ +-PALIMPORT double __cdecl PAL_log10(double x) ++PALIMPORT double __cdecl PAL_log10(double x) THROW_DECL + { + double ret; + PERF_ENTRY(log10); +@@ -366,7 +366,7 @@ Function: + + See MSDN. + --*/ +-PALIMPORT double __cdecl PAL_pow(double x, double y) ++PALIMPORT double __cdecl PAL_pow(double x, double y) THROW_DECL + { + double ret; + PERF_ENTRY(pow); +@@ -527,7 +527,7 @@ Function: + + See MSDN. + --*/ +-PALIMPORT float __cdecl PAL_acosf(float x) ++PALIMPORT float __cdecl PAL_acosf(float x) THROW_DECL + { + float ret; + PERF_ENTRY(acosf); +@@ -557,7 +557,7 @@ Function: + + See MSDN. + --*/ +-PALIMPORT float __cdecl PAL_acoshf(float x) ++PALIMPORT float __cdecl PAL_acoshf(float x) THROW_DECL + { + float ret; + PERF_ENTRY(acoshf); +@@ -576,7 +576,7 @@ Function: + + See MSDN. + --*/ +-PALIMPORT float __cdecl PAL_asinf(float x) ++PALIMPORT float __cdecl PAL_asinf(float x) THROW_DECL + { + float ret; + PERF_ENTRY(asinf); +@@ -606,7 +606,7 @@ Function: + + See MSDN. + --*/ +-PALIMPORT float __cdecl PAL_asinhf(float x) ++PALIMPORT float __cdecl PAL_asinhf(float x) THROW_DECL + { + float ret; + PERF_ENTRY(asinhf); +@@ -626,7 +626,7 @@ Function: + + See MSDN. + --*/ +-PALIMPORT float __cdecl PAL_atan2f(float y, float x) ++PALIMPORT float __cdecl PAL_atan2f(float y, float x) THROW_DECL + { + float ret; + PERF_ENTRY(atan2f); +@@ -666,7 +666,7 @@ Function: + + See MSDN. + --*/ +-PALIMPORT float __cdecl PAL_expf(float x) ++PALIMPORT float __cdecl PAL_expf(float x) THROW_DECL + { + float ret; + PERF_ENTRY(expf); +@@ -698,7 +698,7 @@ Function: + + See MSDN. + --*/ +-PALIMPORT float __cdecl PAL_logf(float x) ++PALIMPORT float __cdecl PAL_logf(float x) THROW_DECL + { + float ret; + PERF_ENTRY(logf); +@@ -728,7 +728,7 @@ Function: + + See MSDN. + --*/ +-PALIMPORT float __cdecl PAL_log10f(float x) ++PALIMPORT float __cdecl PAL_log10f(float x) THROW_DECL + { + float ret; + PERF_ENTRY(log10f); +@@ -758,7 +758,7 @@ Function: + + See MSDN. + --*/ +-PALIMPORT float __cdecl PAL_powf(float x, float y) ++PALIMPORT float __cdecl PAL_powf(float x, float y) THROW_DECL + { + float ret; + PERF_ENTRY(powf); +diff --git a/src/pal/src/safecrt/memcpy_s.cpp b/src/pal/src/safecrt/memcpy_s.cpp +index 27aeb79665..a75ec41861 100644 +--- a/src/pal/src/safecrt/memcpy_s.cpp ++++ b/src/pal/src/safecrt/memcpy_s.cpp +@@ -54,7 +54,7 @@ errno_t __cdecl memcpy_s( + size_t sizeInBytes, + const void * src, + size_t count +-) ++) THROW_DECL + { + if (count == 0) + { diff --git a/SOURCES/build-coreclr-mscorlib.patch b/SOURCES/build-coreclr-mscorlib.patch new file mode 100644 index 0000000..ca59e77 --- /dev/null +++ b/SOURCES/build-coreclr-mscorlib.patch @@ -0,0 +1,40 @@ +From 5164e76ce01fc36833a7f5e6fb7b1ec2f55c2262 Mon Sep 17 00:00:00 2001 +From: Omair Majid +Date: Wed, 1 Aug 2018 12:02:53 -0400 +Subject: [PATCH] Use the identified python when building + System.Private.CoreLib (#19043) + +build.sh and build.cmd contain logic to identify a working version of +python to use. System.Private.CoreLib ignores that and directly invokes +'python', which may not work, or even execute a different program. +--- + build.sh | 2 ++ + src/System.Private.CoreLib/System.Private.CoreLib.csproj | 2 +- + 2 files changed, 3 insertions(+), 1 deletion(-) + +diff --git a/build.sh b/build.sh +index 091d6227caf..4002f2744c2 100755 +--- a/build.sh ++++ b/build.sh +@@ -22,6 +22,8 @@ then + exit 1 + fi + ++export PYTHON ++ + usage() + { + echo "Usage: $0 [BuildArch] [BuildType] [-verbose] [-coverage] [-cross] [-clangx.y] [-ninja] [-configureonly] [-skipconfigure] [-skipnative] [-skipmscorlib] [-skiptests] [-stripsymbols] [-ignorewarnings] [-cmakeargs] [-bindir]" +diff --git a/src/mscorlib/System.Private.CoreLib.csproj b/src/mscorlib/System.Private.CoreLib.csproj +index 9a2fc681703..0a02d3cffdf 100644 +--- a/src/mscorlib/System.Private.CoreLib.csproj ++++ b/src/mscorlib/System.Private.CoreLib.csproj +@@ -543,7 +543,7 @@ + + $(IntermediateOutputPath)..\cmake.definitions + +- ++ + + + true diff --git a/SOURCES/build-corefx-disable-werror.patch b/SOURCES/build-corefx-disable-werror.patch new file mode 100644 index 0000000..aadb6c7 --- /dev/null +++ b/SOURCES/build-corefx-disable-werror.patch @@ -0,0 +1,12 @@ +diff --git a/src/Native/Unix/CMakeLists.txt b/src/Native/Unix/CMakeLists.txt +index 7d804a1e54..717c2718d7 100644 +--- a/src/Native/Unix/CMakeLists.txt ++++ b/src/Native/Unix/CMakeLists.txt +@@ -25,7 +25,6 @@ add_compile_options(-fPIC) + add_compile_options(-I${CMAKE_CURRENT_SOURCE_DIR}/Common) + add_compile_options(-I${CMAKE_CURRENT_BINARY_DIR}/Common) + add_compile_options(-g) +-add_compile_options(-Werror) + if (CMAKE_CXX_COMPILER_VERSION VERSION_LESS 3.5) + add_compile_options(-Wno-unreachable-code) + endif () diff --git a/SPECS/dotnet.spec b/SPECS/dotnet.spec index eba319d..86d5de4 100644 --- a/SPECS/dotnet.spec +++ b/SPECS/dotnet.spec @@ -28,13 +28,13 @@ %global simple_name dotnet -%global host_version 2.1.17 -%global runtime_version 2.1.17 -%global sdk_version 2.1.513 +%global host_version 2.1.18 +%global runtime_version 2.1.18 +%global sdk_version 2.1.514 Name: dotnet Version: %{sdk_version} -Release: 2%{?dist} +Release: 3%{?dist} Summary: .NET Core CLI tools and runtime License: MIT and ASL 2.0 and BSD URL: https://github.com/dotnet/ @@ -48,10 +48,16 @@ Source2: dotnet.sh Patch10: corefx-optflags-support.patch Patch11: corefx-32956-alpn.patch +# This patch is generally applied at tarball-build time, except when we dont build the tarball +Patch12: build-corefx-disable-werror.patch Patch100: coreclr-build-python3.patch Patch101: coreclr-cmake-python3.patch Patch102: coreclr-pie.patch +# This patch is generally applied at tarball-build time, except when we dont build the tarball +Patch103: build-coreclr-mscorlib.patch +# This patch is generally applied at tarball-build time, except when we dont build the tarball +Patch104: build-coreclr-clang10.patch Patch300: core-setup-4510-commit-id.patch Patch301: core-setup-pie.patch @@ -196,12 +202,15 @@ applications and micro-services. pushd src/corefx %patch10 -p1 %patch11 -p1 +%patch12 -p1 popd pushd src/coreclr %patch100 -p1 %patch101 -p1 %patch102 -p1 +%patch103 -p1 +%patch104 -p1 popd pushd src/core-setup @@ -316,6 +325,10 @@ rm %{buildroot}%{_libdir}/%{simple_name}/dotnet %{_libdir}/%{simple_name}/sdk/%{sdk_version} %changelog +* Mon Jun 01 2020 Omair Majid - 2.1.514-3 +- Update to .NET Core SDK 2.1.514 and Runtime 2.1.18 +- Resolves: RHBZ#1828392 + * Mon Mar 23 2020 Omair Majid - 2.1.513-2 - Update to .NET Core SDK 2.1.513 and Runtime 2.1.17 - Resolves: RHBZ#1815640