Upstream merge.
diff --git a/Misc/NEWS b/Misc/NEWS
index 9e63beb..91f3883 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -16,8 +16,8 @@
- Issue #10271: Allow warnings.showwarning() be any callable.
-- Issue #11627: Fix segfault when __new__ on a exception returns a non-exception
- class.
+- Issue #11627: Fix segfault when __new__ on a exception returns a
+ non-exception class.
- Issue #12149: Update the method cache after a type's dictionnary gets
cleared by the garbage collector. This fixes a segfault when an instance
@@ -1044,6 +1044,10 @@
Extension Modules
-----------------
+- Issue #10309: Define _GNU_SOURCE so that mremap() gets the proper
+ signature. Without this, architectures where sizeof void* != sizeof int are
+ broken. Patch given by Hallvard B Furuseth.
+
- Issue #12221: Replace pyexpat.__version__ with the Python version.
- Issue #12051: Fix segfault in json.dumps() while encoding highly-nested
diff --git a/Modules/_ctypes/libffi/src/dlmalloc.c b/Modules/_ctypes/libffi/src/dlmalloc.c
index 783c5c2..582ddc3 100644
--- a/Modules/_ctypes/libffi/src/dlmalloc.c
+++ b/Modules/_ctypes/libffi/src/dlmalloc.c
@@ -457,6 +457,11 @@
#define LACKS_ERRNO_H
#define MALLOC_FAILURE_ACTION
#define MMAP_CLEARS 0 /* WINCE and some others apparently don't clear */
+#elif !defined _GNU_SOURCE
+/* mremap() on Linux requires this via sys/mman.h
+ * See roundup issue 10309
+ */
+#define _GNU_SOURCE 1
#endif /* WIN32 */
#if defined(DARWIN) || defined(_DARWIN)