https://salsa.debian.org/haskell-team/DHG_packages/tree/master/p/ghc/debian/patches - rename 35a897782b6b0a252da7fdcf4921198ad4e1d96c.patch -> PprC-Add-support-for-adjacent-floats.patch - add_-latomic_to_ghc-prim.patch - e175aaf6918bb2b497b83618dc4c270a0d231a1c.patch (rts osReserveHeapMemory block alignment)epel9
parent
bbb20669df
commit
289a7ed191
@ -0,0 +1,54 @@
|
|||||||
|
commit ce3897ffd6e7c8b8f36b8e920168bac8c7f836ae
|
||||||
|
Author: Ilias Tsitsimpis <iliastsi@debian.org>
|
||||||
|
Date: Tue Sep 18 17:45:17 2018 +0200
|
||||||
|
|
||||||
|
Fix check whether GCC supports __atomic_ builtins
|
||||||
|
|
||||||
|
Summary:
|
||||||
|
C11 atomics are never used because:
|
||||||
|
|
||||||
|
* The program used for checking whether GCC supports
|
||||||
|
__atomic_ builtins fails with the following error:
|
||||||
|
|
||||||
|
```
|
||||||
|
error: size mismatch in argument 2 of `__atomic_load`
|
||||||
|
int test(int *x) { int y; __atomic_load(&x, &y, __ATOMIC_SEQ_CST); return x; }
|
||||||
|
```
|
||||||
|
|
||||||
|
* There is a typo when checking if CONF_GCC_SUPPORTS__ATOMICS equals YES,
|
||||||
|
resulting in PRIM_CFLAGS and PRIM_EXTRA_LIBRARIES never being set.
|
||||||
|
|
||||||
|
Reviewers: bgamari
|
||||||
|
|
||||||
|
Reviewed By: bgamari
|
||||||
|
|
||||||
|
Subscribers: rwbarton, erikd, carter
|
||||||
|
|
||||||
|
Differential Revision: https://phabricator.haskell.org/D5154
|
||||||
|
|
||||||
|
Index: b/libraries/ghc-prim/aclocal.m4
|
||||||
|
===================================================================
|
||||||
|
--- a/libraries/ghc-prim/aclocal.m4
|
||||||
|
+++ b/libraries/ghc-prim/aclocal.m4
|
||||||
|
@@ -5,7 +5,7 @@ AC_DEFUN([FP_GCC_SUPPORTS__ATOMICS],
|
||||||
|
[
|
||||||
|
AC_REQUIRE([AC_PROG_CC])
|
||||||
|
AC_MSG_CHECKING([whether GCC supports __atomic_ builtins])
|
||||||
|
- echo 'int test(int *x) { int y; __atomic_load(&x, &y, __ATOMIC_SEQ_CST); return x; }' > conftest.c
|
||||||
|
+ echo 'int test(int *x) { int y; __atomic_load(x, &y, __ATOMIC_SEQ_CST); return y; }' > conftest.c
|
||||||
|
if $CC -c conftest.c > /dev/null 2>&1; then
|
||||||
|
CONF_GCC_SUPPORTS__ATOMICS=YES
|
||||||
|
AC_MSG_RESULT([yes])
|
||||||
|
Index: b/libraries/ghc-prim/configure.ac
|
||||||
|
===================================================================
|
||||||
|
--- a/libraries/ghc-prim/configure.ac
|
||||||
|
+++ b/libraries/ghc-prim/configure.ac
|
||||||
|
@@ -8,7 +8,7 @@ dnl unregisterised, Sparc, and PPC ba
|
||||||
|
FP_GCC_SUPPORTS__ATOMICS
|
||||||
|
AC_DEFINE([HAVE_C11_ATOMICS], [$CONF_GCC_SUPPORTS__ATOMICS], [Does GCC support __atomic primitives?])
|
||||||
|
|
||||||
|
-if test "x$CONF_GCC_SUPPORTS__ATOMICS" = YES
|
||||||
|
+if test "$CONF_GCC_SUPPORTS__ATOMICS" = "YES"
|
||||||
|
then PRIM_CFLAGS=-DHAVE_C11_ATOMICS
|
||||||
|
PRIM_EXTRA_LIBRARIES=atomic
|
||||||
|
fi
|
@ -0,0 +1,63 @@
|
|||||||
|
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: b/rts/posix/OSMem.c
|
||||||
|
===================================================================
|
||||||
|
--- a/rts/posix/OSMem.c
|
||||||
|
+++ b/rts/posix/OSMem.c
|
||||||
|
@@ -476,6 +476,8 @@ osTryReserveHeapMemory (W_ len, void *hi
|
||||||
|
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 */
|
||||||
|
@@ -552,6 +554,8 @@ void *osReserveHeapMemory(void *startAdd
|
||||||
|
|
||||||
|
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");
|
Loading…
Reference in new issue