Commit 88bfe59b authored by Gianfranco Costamagna's avatar Gianfranco Costamagna

ghc: upload to unstable, with upstream risc support patch

parent c60a2bd9
ghc (8.2.2-6) unstable; urgency=medium
* debian/patches/{risc-support,e175aaf6918bb2b497b83618dc4c270a0d231a1c}.patch
- add upstream patches to support risc* platforms (Closes: #904096)
-- Gianfranco Costamagna <locutusofborg@debian.org> Thu, 19 Jul 2018 19:24:01 +0200
ghc (8.2.2-5) unstable; urgency=medium
* Apply patch to disable -Bsymbolic on unregisterised
......
From: Sergei Trofimovich <slyfox@gentoo.org>
Date: Wed, 18 Jul 2018 22:36:58 +0000 (+0100)
Subject: fix osReserveHeapMemory block alignment
X-Git-Url: https://git.haskell.org/ghc.git/commitdiff_plain/e175aaf6918bb2b497b83618dc4c270a0d231a1c
fix osReserveHeapMemory block alignment
Before the change osReserveHeapMemory() attempted
to allocate chunks of memory via osTryReserveHeapMemory()
not multiple of MBLOCK_SIZE in the following fallback code:
```
if (at == NULL) {
*len -= *len / 8;
```
and caused assertion failure:
```
$ make fulltest TEST=T11607 WAY=threaded1
T11607: internal error: ASSERTION FAILED: file rts/posix/OSMem.c, line 457
(GHC version 8.7.20180716 for riscv64_unknown_linux)
```
The change applies alignment mask before each MBLOCK allocation attempt
and fixes WAY=threaded1 test failures on qemu-riscv64.
Signed-off-by: Sergei Trofimovich <slyfox@gentoo.org>
Test Plan: run 'make fulltest WAY=threaded1'
Reviewers: simonmar, bgamari, erikd
Reviewed By: simonmar
Subscribers: rwbarton, thomie, carter
Differential Revision: https://phabricator.haskell.org/D4982
---
Index: ghc-8.2.2/rts/posix/OSMem.c
===================================================================
--- ghc-8.2.2.orig/rts/posix/OSMem.c
+++ ghc-8.2.2/rts/posix/OSMem.c
@@ -422,6 +422,8 @@
void *base, *top;
void *start, *end;
+ ASSERT((len & ~MBLOCK_MASK) == len);
+
/* We try to allocate len + MBLOCK_SIZE,
because we need memory which is MBLOCK_SIZE aligned,
and then we discard what we don't need */
@@ -489,6 +491,8 @@
attempt = 0;
while (1) {
+ *len &= ~MBLOCK_MASK;
+
if (*len < MBLOCK_SIZE) {
// Give up if the system won't even give us 16 blocks worth of heap
barf("osReserveHeapMemory: Failed to allocate heap storage");
Description: cherry-pick of upstream commits
beba89a0f16681c85d39fc8a894bde4162ff492a.patch:
5e63a25249f3cb07300258e115af9ff55079d2ea.patch:
Last-Update: 2018-07-19
--- ghc-8.2.2.orig/aclocal.m4
+++ ghc-8.2.2/aclocal.m4
@@ -216,7 +216,7 @@ AC_DEFUN([FPTOOLS_SET_HASKELL_PLATFORM_V
mipsel)
test -z "[$]2" || eval "[$]2=ArchMipsel"
;;
- hppa|hppa1_1|ia64|m68k|rs6000|s390|s390x|sh4|vax)
+ hppa|hppa1_1|ia64|m68k|riscv32|riscv64|rs6000|s390|s390x|sh4|vax)
test -z "[$]2" || eval "[$]2=ArchUnknown"
;;
*)
@@ -1898,6 +1898,12 @@ case "$1" in
powerpc*)
$2="powerpc"
;;
+ riscv64*)
+ $2="riscv64"
+ ;;
+ riscv|riscv32*)
+ $2="riscv32"
+ ;;
rs6000)
$2="rs6000"
;;
......@@ -11,3 +11,5 @@ build-unlit-and-hp2ps-twice.patch
fix-hssplicety.patch
lower-optimization-for-unreg.patch
bsymbolic-only-for-registerised.patch
risc-support.patch
e175aaf6918bb2b497b83618dc4c270a0d231a1c.patch
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment