diff --git a/.dotnet3.1.metadata b/.dotnet3.1.metadata index 923c2ba..d5151ea 100644 --- a/.dotnet3.1.metadata +++ b/.dotnet3.1.metadata @@ -1 +1 @@ -2a9b5570e94fc781626a372b526782b867ba95a1 SOURCES/dotnet-v3.1.118-SDK.tar.gz +6d8a2bb600af2f73f425857174dbca974fc9c48f SOURCES/dotnet-v3.1.416-SDK.tar.gz diff --git a/.gitignore b/.gitignore index 7db3884..4f79380 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1 @@ -SOURCES/dotnet-v3.1.118-SDK.tar.gz +SOURCES/dotnet-v3.1.416-SDK.tar.gz diff --git a/SOURCES/core-setup-no-werror.patch b/SOURCES/core-setup-no-werror.patch new file mode 100644 index 0000000..47b49fc --- /dev/null +++ b/SOURCES/core-setup-no-werror.patch @@ -0,0 +1,27 @@ +From e900fff68af76d51a59ac085b35ace76939bc007 Mon Sep 17 00:00:00 2001 +From: Omair Majid +Date: Tue, 18 Jan 2022 21:45:52 -0500 +Subject: [PATCH] Disable Werror + +This is so late in the release cycle that fixing warnings is just not +really worth it. The general approach is to fix the issues in the +development branches and disable warnings in the older release branches. +--- + src/settings.cmake | 1 - + 1 file changed, 1 deletion(-) + +diff --git a/src/settings.cmake b/src/settings.cmake +index ff1e04f9..5cc9b3ef 100644 +--- a/src/settings.cmake ++++ b/src/settings.cmake +@@ -201,7 +201,6 @@ else() + # compiling with -std=c++11. + # add_compile_options(-Weverything) + endif() +- add_compile_options(-Werror) + add_compile_options(-Wno-missing-field-initializers) + add_compile_options(-Wno-unused-function) + add_compile_options(-Wno-unused-local-typedef) +-- +2.34.1 + diff --git a/SOURCES/coreclr-clang13.patch b/SOURCES/coreclr-clang13.patch new file mode 100644 index 0000000..2f784fb --- /dev/null +++ b/SOURCES/coreclr-clang13.patch @@ -0,0 +1,83 @@ +From 9a2857177a8a2a388298ad5674f6e5edd1e5b853 Mon Sep 17 00:00:00 2001 +From: Jan Vorlicek +Date: Tue, 4 Jan 2022 23:51:52 +0100 +Subject: [PATCH] Fix build with Clang 13 (#63314) + +* Fix clang 13 induced runtime issues (#62170) + +The clang 13 optimizer started to assume that "this" pointer is always +properly aligned. That lead to elimination of some code that was actually +needed. +It also takes pointer aliasing rules more strictly in one place in jit. +That caused the optimizer to falsely assume that a callee with an argument +passed by reference is not modifying that argument and used a stale +copy of the original value at the caller site. + +This change fixes both of the issues. With this fix, runtime compiled +using clang 13 seems to be fully functional. + +* Fix build with clang 13 (#60328) +--- + src/inc/corhlpr.h | 8 ++++---- + src/jit/bitsetasshortlong.h | 4 ++-- + 2 files changed, 6 insertions(+), 6 deletions(-) + +diff --git a/src/inc/corhlpr.h b/src/inc/corhlpr.h +index 5b263a5382..c512069fca 100644 +--- a/src/inc/corhlpr.h ++++ b/src/inc/corhlpr.h +@@ -335,7 +335,7 @@ struct COR_ILMETHOD_SECT + const COR_ILMETHOD_SECT* Next() const + { + if (!More()) return(0); +- return ((COR_ILMETHOD_SECT*)(((BYTE *)this) + DataSize()))->Align(); ++ return ((COR_ILMETHOD_SECT*)Align(((BYTE *)this) + DataSize())); + } + + const BYTE* Data() const +@@ -373,9 +373,9 @@ struct COR_ILMETHOD_SECT + return((AsSmall()->Kind & CorILMethod_Sect_FatFormat) != 0); + } + +- const COR_ILMETHOD_SECT* Align() const ++ static const void* Align(const void* p) + { +- return((COR_ILMETHOD_SECT*) ((((UINT_PTR) this) + 3) & ~3)); ++ return((void*) ((((UINT_PTR) p) + 3) & ~3)); + } + + protected: +@@ -578,7 +578,7 @@ typedef struct tagCOR_ILMETHOD_FAT : IMAGE_COR_ILMETHOD_FAT + + const COR_ILMETHOD_SECT* GetSect() const { + if (!More()) return (0); +- return(((COR_ILMETHOD_SECT*) (GetCode() + GetCodeSize()))->Align()); ++ return(((COR_ILMETHOD_SECT*) COR_ILMETHOD_SECT::Align(GetCode() + GetCodeSize()))); + } + } COR_ILMETHOD_FAT; + +diff --git a/src/jit/bitsetasshortlong.h b/src/jit/bitsetasshortlong.h +index 17e0e3a69c..0c40283ce5 100644 +--- a/src/jit/bitsetasshortlong.h ++++ b/src/jit/bitsetasshortlong.h +@@ -346,7 +346,7 @@ public: + { + if (IsShort(env)) + { +- (size_t&)out = (size_t)out & ((size_t)gen | (size_t)in); ++ out = (BitSetShortLongRep)((size_t)out & ((size_t)gen | (size_t)in)); + } + else + { +@@ -362,7 +362,7 @@ public: + { + if (IsShort(env)) + { +- (size_t&)in = (size_t)use | ((size_t)out & ~(size_t)def); ++ in = (BitSetShortLongRep)((size_t)use | ((size_t)out & ~(size_t)def)); + } + else + { +-- +2.34.1 + diff --git a/SPECS/dotnet3.1.spec b/SPECS/dotnet3.1.spec index 0cc4a64..06a45e8 100644 --- a/SPECS/dotnet3.1.spec +++ b/SPECS/dotnet3.1.spec @@ -25,10 +25,10 @@ %endif %global dotnet_ldflags %(echo %{__global_ldflags} | sed -re 's/-specs=[^ ]*//g') -%global host_version 3.1.18 -%global runtime_version 3.1.18 +%global host_version 3.1.22 +%global runtime_version 3.1.22 %global aspnetcore_runtime_version %{runtime_version} -%global sdk_version 3.1.118 +%global sdk_version 3.1.416 %global templates_version %(echo %{runtime_version} | awk 'BEGIN { FS="."; OFS="." } {print $1, $2, $3+1 }') %global host_rpm_version %{host_version} @@ -61,14 +61,14 @@ Name: dotnet3.1 Version: %{sdk_rpm_version} -Release: 1%{?dist} +Release: 4%{?dist} Summary: .NET Core CLI tools and runtime License: MIT and ASL 2.0 and BSD URL: https://github.com/dotnet/ # ./build-dotnet-tarball dotnet-v%%{sdk_version}-SDK Source0: dotnet-v%{sdk_version}-SDK.tar.gz -#Source1: dotnet-v%%{sdk_version}-SDK-rhel.8-arm64.tar.gz +#Source0: dotnet-v%%{sdk_version}-SDK-x64-bootstrap.tar.gz Source100: check-debug-symbols.py Source101: dotnet.sh.in @@ -79,10 +79,12 @@ Patch100: corefx-optflags-support.patch Patch103: corefx-39633-cgroupv2-mountpoints.patch Patch200: coreclr-27048-sysctl-deprecation.patch +Patch201: coreclr-clang13.patch # Already applied at tarball build time -#Patch201: coreclr-libunwind-fno-common.patch +#Patch202: coreclr-libunwind-fno-common.patch Patch300: core-setup-do-not-strip.patch +Patch301: core-setup-no-werror.patch Patch500: cli-telemetry-optout.patch @@ -308,11 +310,17 @@ These are not meant for general use. %prep +%if %{with bootstrap} + %ifarch x86_64 -%setup T -b0 -q -n dotnet-v%{sdk_version}-SDK +%setup T -b0 -q -n dotnet-v%{sdk_version}-SDK-%{runtime_arch}-bootstrap %endif %ifarch aarch64 -%setup T -b1 -q -n dotnet-v%{sdk_version}-SDK-rhel.8-arm64 +%setup T -b1 -q -n dotnet-v%{sdk_version}-SDK-%{runtime_arch}-bootstrap +%endif + +%else +%setup -q -n dotnet-v%{sdk_version}-SDK %endif %if %{without bootstrap} @@ -347,11 +355,13 @@ popd pushd src/coreclr.* %patch200 -p1 -#%%patch201 -p1 +%patch201 -p1 +#%%patch202 -p1 popd pushd src/core-setup.* %patch300 -p1 +%patch301 -p1 popd pushd src/cli.* @@ -501,6 +511,12 @@ rm -rf %{buildroot}%{_libdir}/dotnet/packs/NETStandard.Library.Ref/2.1.0 %{_libdir}/dotnet/source-built-artifacts %changelog +* Tue Jan 25 2022 Omair Majid - 3.1.416-4 +- Update to .NET SDK 3.1.416 and Runtime 3.1.22 +- Resolves: RHBZ#2011820 +- Resolves: RHBZ#2003077 +- Resolves: RHBZ#2031428 + * Sat Aug 14 2021 Omair Majid - 3.1.118-1 - Update to .NET SDK 3.1.118 and Runtime 3.1.18 - Resolves: RHBZ#1990174