From 204697fda0ea1fe314373a382cccb7b0a26b6649 Mon Sep 17 00:00:00 2001 From: Jens Petersen Date: Sat, 25 Nov 2023 09:58:41 +0800 Subject: [PATCH] s390x: patch from @stefansf (IBM) to fix llvm alignment of data sections --- 11662.patch | 31 +++++++++++++++++++++++++++++++ ghc.spec | 15 ++++++++++++++- 2 files changed, 45 insertions(+), 1 deletion(-) create mode 100644 11662.patch diff --git a/11662.patch b/11662.patch new file mode 100644 index 0000000..ce6ca44 --- /dev/null +++ b/11662.patch @@ -0,0 +1,31 @@ +From bed85f7bc358fdca4677a3070b94ea544bb9e7ff Mon Sep 17 00:00:00 2001 +From: Stefan Schulze Frielinghaus +Date: Mon, 27 Nov 2023 12:34:47 +0100 +Subject: [PATCH] llvmGen: Align objects in the data section + +Objects in the data section may be referenced via tagged pointers. +Thus, align those objects to a 4- or 8-byte boundary for 32- or 64-bit +platforms, respectively. Note, this may need to be reconsidered if +objects with a greater natural alignment requirement are emitted as e.g. +128-bit atomics. + +Fixes #24163. +--- + compiler/GHC/CmmToLlvm/Data.hs | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/compiler/GHC/CmmToLlvm/Data.hs b/compiler/GHC/CmmToLlvm/Data.hs +index caac121413c..5e8912e3bc7 100644 +--- a/compiler/GHC/CmmToLlvm/Data.hs ++++ b/compiler/GHC/CmmToLlvm/Data.hs +@@ -89,6 +89,7 @@ genLlvmData (sec, CmmStaticsRaw lbl xs) = do + align = case sec of + Section CString _ -> if (platformArch platform == ArchS390X) + then Just 2 else Just 1 ++ Section Data _ -> Just $ platformWordSizeInBytes platform + _ -> Nothing + const = if sectionProtection sec == ReadOnlySection + then Constant else Global +-- +GitLab + diff --git a/ghc.spec b/ghc.spec index fed7508..9e2cd13 100644 --- a/ghc.spec +++ b/ghc.spec @@ -87,7 +87,7 @@ Version: 9.4.5 # - release can only be reset if *all* library versions get bumped simultaneously # (sometimes after a major release) # - minor release numbers for a branch should be incremented monotonically -Release: 136%{?dist} +Release: 137%{?dist} Summary: Glasgow Haskell Compiler License: BSD-3-Clause AND HaskellReport @@ -133,6 +133,11 @@ Patch13: text2-allow-ghc8-arm.patch Patch15: ghc-warnings.mk-CC-Wall.patch Patch16: ghc-hadrian-s390x-rts--qg.patch +# s390x +# https://gitlab.haskell.org/ghc/ghc/-/issues/24163 +# https://gitlab.haskell.org/ghc/ghc/-/merge_requests/11662 +Patch17: https://gitlab.haskell.org/ghc/ghc/-/merge_requests/11662.patch + # Debian patches: Patch24: buildpath-abi-stability.patch Patch26: no-missing-haddock-file-warning.patch @@ -454,6 +459,10 @@ rm libffi-tarballs/libffi-*.tar.gz %patch -P16 -p1 -b .orig %endif +%ifarch s390x +%patch -P17 -p1 -b .orig +%endif + #debian #%%patch -P24 -p1 -b .orig %patch -P26 -p1 -b .orig @@ -1005,6 +1014,10 @@ env -C %{ghc_html_libraries_dir} ./gen_contents_index %changelog +* Sat Nov 25 2023 Jens Petersen - 9.4.5-137 +- s390x: patch from @stefansf (IBM) to fix llvm alignment in data sections + which should fix certain runtime crashes (#2248097) + * Mon Sep 11 2023 Jens Petersen - 9.4.5-136 - sync with ghc9.4: add sphinx7 patch - user_guide: update external links patch in line with final upstream