git: f9809df4c15f - main - devel/ksh93: remove sbrk() use
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Wed, 09 Nov 2022 21:27:37 UTC
The branch main has been updated by brooks:
URL: https://cgit.FreeBSD.org/ports/commit/?id=f9809df4c15f6b0f3b0c5a236aa70374d9d1637c
commit f9809df4c15f6b0f3b0c5a236aa70374d9d1637c
Author: Brooks Davis <brooks@FreeBSD.org>
AuthorDate: 2022-11-09 21:27:29 +0000
Commit: Brooks Davis <brooks@FreeBSD.org>
CommitDate: 2022-11-09 21:27:29 +0000
devel/ksh93: remove sbrk() use
ksh supports multiple sources of heap memory. Completely disable the
use of sbrk() as a memory source in favor of mmap(). This allows
compilation on aarch64 (and presumably riscv64).
Approved by: cy
Differential Revision: https://reviews.freebsd.org/D37312
---
shells/ksh93/Makefile | 5 +----
.../files/patch-src_lib_libast_vmalloc_vmbest.c | 25 ++++++++++++++++++++++
2 files changed, 26 insertions(+), 4 deletions(-)
diff --git a/shells/ksh93/Makefile b/shells/ksh93/Makefile
index 438365ce743d..9814c5114408 100644
--- a/shells/ksh93/Makefile
+++ b/shells/ksh93/Makefile
@@ -14,7 +14,7 @@
PORTNAME= ksh93
DISTVERSION= 93u
-PORTREVISION= 1
+PORTREVISION= 2
PORTEPOCH= 2
CATEGORIES= shells
DIST_SUBDIR= ksh93
@@ -25,9 +25,6 @@ WWW= http://www.kornshell.com/
LICENSE= EPL
-BROKEN_aarch64= Fails to compile: needs sbrk
-BROKEN_riscv64= Fails to compile: needs sbrk
-
USES= compiler:c11
USE_GITHUB= yes
diff --git a/shells/ksh93/files/patch-src_lib_libast_vmalloc_vmbest.c b/shells/ksh93/files/patch-src_lib_libast_vmalloc_vmbest.c
new file mode 100644
index 000000000000..07cfd72b922c
--- /dev/null
+++ b/shells/ksh93/files/patch-src_lib_libast_vmalloc_vmbest.c
@@ -0,0 +1,25 @@
+--- src/lib/libast/vmalloc/vmbest.c.orig
++++ src/lib/libast/vmalloc/vmbest.c
+@@ -1169,6 +1169,7 @@
+ }
+ #endif /* _mem_win32 */
+
++#undef _mem_sbrk
+ #if _mem_sbrk /* getting space via brk/sbrk - not concurrent-ready */
+ static Void_t* sbrkmem(Void_t* caddr, size_t csize, size_t nsize)
+ {
+@@ -1265,10 +1266,13 @@
+ }
+ }
+ else if(nsize == 0)
+- { Vmuchar_t *addr = (Vmuchar_t*)sbrk(0);
++ {
++#if 0
++ Vmuchar_t *addr = (Vmuchar_t*)sbrk(0);
+ if(addr < (Vmuchar_t*)caddr ) /* in sbrk space */
+ return NIL(Void_t*);
+ else
++#endif
+ { (void)munmap(caddr, csize);
+ return caddr;
+ }