From 24e1a117993d59a32c732b127a38bbc6b413ee7b Mon Sep 17 00:00:00 2001 From: joerg Date: Mon, 10 Nov 2014 18:02:53 +0000 Subject: Improve handling of memalign / posix_memalign to allow static linking on NetBSD. --- shells/ast-ksh/distinfo | 8 +- .../patches/patch-src_lib_libast_features_lib | 15 +++- .../patches/patch-src_lib_libast_features_map.c | 18 ++++- .../patches/patch-src_lib_libast_features_sys | 14 +++- .../patches/patch-src_lib_libast_features_vmalloc | 15 +++- .../patches/patch-src_lib_libast_include_vmalloc.h | 47 ++++++++++- .../patches/patch-src_lib_libast_vmalloc_malloc.c | 93 +++++++++++++++++++++- 7 files changed, 203 insertions(+), 7 deletions(-) diff --git a/shells/ast-ksh/distinfo b/shells/ast-ksh/distinfo index 65bb2e24b6c..51fa693be95 100644 --- a/shells/ast-ksh/distinfo +++ b/shells/ast-ksh/distinfo @@ -1,4 +1,4 @@ -$NetBSD: distinfo,v 1.15 2014/11/06 12:25:36 joerg Exp $ +$NetBSD: distinfo,v 1.16 2014/11/10 18:02:53 joerg Exp $ SHA1 (INIT.2012-08-01.tgz) = 0b472a615db384fe707042baaa3347dc1aa1c81e RMD160 (INIT.2012-08-01.tgz) = 48f1830bc85a26125dd986256d38be435668d445 @@ -14,3 +14,9 @@ SHA1 (patch-src_lib_libast_features_sys) = 32a3f793395bb06e23c58e31ef534415da0d6 SHA1 (patch-src_lib_libast_features_vmalloc) = 714b1437cac8f49618581c6284a362163b37feba SHA1 (patch-src_lib_libast_include_vmalloc.h) = 165a39666a4f9c155e8c1af6220e351ac3b8189a SHA1 (patch-src_lib_libast_vmalloc_malloc.c) = 1256ade4a1bee59dccde6c549736a84bf14f0ae4 +SHA1 (patch-src_lib_libast_features_lib) = 28bee8d00364a415c46bef63899329bc3326fe34 +SHA1 (patch-src_lib_libast_features_map.c) = efc25164d5e153ee3fc3b519d4d2abbc7c3f2f6b +SHA1 (patch-src_lib_libast_features_sys) = 32a3f793395bb06e23c58e31ef534415da0d626b +SHA1 (patch-src_lib_libast_features_vmalloc) = 714b1437cac8f49618581c6284a362163b37feba +SHA1 (patch-src_lib_libast_include_vmalloc.h) = 165a39666a4f9c155e8c1af6220e351ac3b8189a +SHA1 (patch-src_lib_libast_vmalloc_malloc.c) = 1256ade4a1bee59dccde6c549736a84bf14f0ae4 diff --git a/shells/ast-ksh/patches/patch-src_lib_libast_features_lib b/shells/ast-ksh/patches/patch-src_lib_libast_features_lib index 6a6cbc3a1d3..1347555c634 100644 --- a/shells/ast-ksh/patches/patch-src_lib_libast_features_lib +++ b/shells/ast-ksh/patches/patch-src_lib_libast_features_lib @@ -1,4 +1,17 @@ -$NetBSD: patch-src_lib_libast_features_lib,v 1.1 2014/11/06 12:25:36 joerg Exp $ +$NetBSD: patch-src_lib_libast_features_lib,v 1.2 2014/11/10 18:02:53 joerg Exp $ + +--- src/lib/libast/features/lib.orig 2014-11-06 01:38:59.000000000 +0000 ++++ src/lib/libast/features/lib +@@ -28,7 +28,7 @@ lib getopt,getsubopt,getopt_long,getopt_ + lib glob,index,iswblank,iswctype,killpg,link,localeconv,madvise + lib mbtowc,mbrtowc,memalign,memchr,memcpy,memdup,memmove,memset + lib mkdir,mkfifo,mktemp,mktime +-lib mount,on_exit,onexit,opendir,pathconf ++lib mount,on_exit,onexit,opendir,pathconf,posix_memalign + lib readlink,remove,rename,rewinddir,rindex,rmdir,setlocale + lib setpgid,setpgrp,setpgrp2,setreuid,setsid,setuid,sigaction + lib sigprocmask,sigsetmask,sigunblock,sigvec,socketpair +$NetBSD: patch-src_lib_libast_features_lib,v 1.2 2014/11/10 18:02:53 joerg Exp $ --- src/lib/libast/features/lib.orig 2014-11-06 01:38:59.000000000 +0000 +++ src/lib/libast/features/lib diff --git a/shells/ast-ksh/patches/patch-src_lib_libast_features_map.c b/shells/ast-ksh/patches/patch-src_lib_libast_features_map.c index 2bdaef226df..1936b4f7f89 100644 --- a/shells/ast-ksh/patches/patch-src_lib_libast_features_map.c +++ b/shells/ast-ksh/patches/patch-src_lib_libast_features_map.c @@ -1,4 +1,20 @@ -$NetBSD: patch-src_lib_libast_features_map.c,v 1.1 2014/11/06 12:25:36 joerg Exp $ +$NetBSD: patch-src_lib_libast_features_map.c,v 1.2 2014/11/10 18:02:53 joerg Exp $ + +--- src/lib/libast/features/map.c.orig 2010-06-25 16:59:08.000000000 +0000 ++++ src/lib/libast/features/map.c +@@ -432,6 +432,11 @@ main() + printf("#define memalign _ast_memalign\n"); + printf("extern void* memalign(size_t, size_t);\n"); + #endif ++#if _lib_posix_memalign ++ printf("#undef posix_memalign\n"); ++ printf("#define posix_memalign _ast_posix_memalign\n"); ++ printf("extern int posix_memalign(void **, size_t, size_t);\n"); ++#endif + #if _lib_mstats + printf("#undef mstats\n"); + printf("#define mstats _ast_mstats\n"); +$NetBSD: patch-src_lib_libast_features_map.c,v 1.2 2014/11/10 18:02:53 joerg Exp $ --- src/lib/libast/features/map.c.orig 2010-06-25 16:59:08.000000000 +0000 +++ src/lib/libast/features/map.c diff --git a/shells/ast-ksh/patches/patch-src_lib_libast_features_sys b/shells/ast-ksh/patches/patch-src_lib_libast_features_sys index 33808ed1a25..72b4fd03e8e 100644 --- a/shells/ast-ksh/patches/patch-src_lib_libast_features_sys +++ b/shells/ast-ksh/patches/patch-src_lib_libast_features_sys @@ -1,4 +1,16 @@ -$NetBSD: patch-src_lib_libast_features_sys,v 1.1 2014/11/06 12:25:36 joerg Exp $ +$NetBSD: patch-src_lib_libast_features_sys,v 1.2 2014/11/10 18:02:53 joerg Exp $ + +--- src/lib/libast/features/sys.orig 2012-06-15 02:11:26.000000000 +0000 ++++ src/lib/libast/features/sys +@@ -224,6 +224,7 @@ extern memset void* (void*, int, size_ + extern pathconf long (const char*, int) + extern pause int (void) + extern pipe int (int[]) ++extern posix_memalign int (void**,size_t, size_t) + extern pvalloc void* (size_t) + extern qsort void (void*, size_t, size_t, int(*)(const void*, const void*)) + extern rand int (void) +$NetBSD: patch-src_lib_libast_features_sys,v 1.2 2014/11/10 18:02:53 joerg Exp $ --- src/lib/libast/features/sys.orig 2012-06-15 02:11:26.000000000 +0000 +++ src/lib/libast/features/sys diff --git a/shells/ast-ksh/patches/patch-src_lib_libast_features_vmalloc b/shells/ast-ksh/patches/patch-src_lib_libast_features_vmalloc index 04354ede1e9..67bb25b3eba 100644 --- a/shells/ast-ksh/patches/patch-src_lib_libast_features_vmalloc +++ b/shells/ast-ksh/patches/patch-src_lib_libast_features_vmalloc @@ -1,4 +1,17 @@ -$NetBSD: patch-src_lib_libast_features_vmalloc,v 1.1 2014/11/06 12:25:36 joerg Exp $ +$NetBSD: patch-src_lib_libast_features_vmalloc,v 1.2 2014/11/10 18:02:53 joerg Exp $ + +--- src/lib/libast/features/vmalloc.orig 2014-11-06 01:39:22.000000000 +0000 ++++ src/lib/libast/features/vmalloc +@@ -9,7 +9,7 @@ + ref -D_def_map_ast=1 + + lib atexit,getpagesize,mallinfo,mallopt,memalign,mstats +-lib onexit,pvalloc,strdup,valloc,vmalloc ++lib onexit,posix_memalign,pvalloc,strdup,valloc,vmalloc + lib _malloc,__malloc,__libc_malloc + hdr alloca,malloc,stat,stdlib,unistd + mem mallinfo.arena,mstats.bytes_total malloc.h +$NetBSD: patch-src_lib_libast_features_vmalloc,v 1.2 2014/11/10 18:02:53 joerg Exp $ --- src/lib/libast/features/vmalloc.orig 2014-11-06 01:39:22.000000000 +0000 +++ src/lib/libast/features/vmalloc diff --git a/shells/ast-ksh/patches/patch-src_lib_libast_include_vmalloc.h b/shells/ast-ksh/patches/patch-src_lib_libast_include_vmalloc.h index b6b13ff3a01..dbf285dd0cc 100644 --- a/shells/ast-ksh/patches/patch-src_lib_libast_include_vmalloc.h +++ b/shells/ast-ksh/patches/patch-src_lib_libast_include_vmalloc.h @@ -1,4 +1,49 @@ -$NetBSD: patch-src_lib_libast_include_vmalloc.h,v 1.1 2014/11/06 12:25:36 joerg Exp $ +$NetBSD: patch-src_lib_libast_include_vmalloc.h,v 1.2 2014/11/10 18:02:53 joerg Exp $ + +--- src/lib/libast/include/vmalloc.h.orig 2014-11-06 00:44:20.000000000 +0000 ++++ src/lib/libast/include/vmalloc.h +@@ -199,6 +199,7 @@ extern void free _ARG_(( Void_t* )); + extern void cfree _ARG_(( Void_t* )); + extern Void_t* calloc _ARG_(( size_t, size_t )); + extern Void_t* memalign _ARG_(( size_t, size_t )); ++extern int posix_memalign _ARG_(( Void_t **, size_t, size_t )); + extern Void_t* valloc _ARG_(( size_t )); + #endif + extern int setregmax _ARG_(( int )); +@@ -247,6 +248,7 @@ _END_EXTERNS_ + #undef calloc + #undef free + #undef memalign ++#undef posix_memalign + #undef valloc + + #if _map_malloc +@@ -256,6 +258,7 @@ _END_EXTERNS_ + #define calloc(n,s) (_VMFL_(Vmregion), _ast_calloc((size_t)n, (size_t)(s)) ) + #define free(d) (_VMFL_(Vmregion), _ast_free((Void_t*)(d)) ) + #define memalign(a,s) (_VMFL_(Vmregion), _ast_memalign((size_t)(a),(size_t)(s)) ) ++#define posix_memalign(p,a,s) (_VMFL_(Vmregion), _ast_posix_memalign((Void_t**)(p),(size_t)(a),(size_t)(s)) ) + #define valloc(s) (_VMFL_(Vmregion), _ast_valloc((size_t)(s) ) + + #else +@@ -269,6 +272,7 @@ _END_EXTERNS_ + #define calloc(n,s) (_VMFL_(Vmregion), calloc((size_t)n, (size_t)(s)) ) + #define free(d) (_VMFL_(Vmregion), free((Void_t*)(d)) ) + #define memalign(a,s) (_VMFL_(Vmregion), memalign((size_t)(a),(size_t)(s)) ) ++#define posix_memalign(p,a,s) (_VMFL_(Vmregion), posix_memalign((Void_t**)(p),(size_t)(a),(size_t)(s)) ) + #define valloc(s) (_VMFL_(Vmregion), valloc((size_t)(s) ) + #ifndef strdup + #define strdup(s) ( _VMFL_(Vmregion), (strdup)((char*)(s)) ) +@@ -286,6 +290,8 @@ _END_EXTERNS_ + #define free(d) (_VMFL_(Vmregion), _VMNM_(fre,/,*,*,/,e)((Void_t*)(d)) ) + #define memalign(a,s) (_VMFL_(Vmregion), _VMNM_(memalig,/,*,*,/,n)\ + ((size_t)(a),(size_t)(s)) ) ++#define posix_memalign(p,a,s) (_VMFL_(Vmregion), _VMNM_(posix_memalig,/,*,*,/,n)\ ++ ((Void_t**)(p),(size_t)(a),(size_t)(s)) ) + #define valloc(s) (_VMFL_(Vmregion), _VMNM_(vallo,/,*,*,/,c)\ + ((size_t)(s) ) + #ifndef strdup +$NetBSD: patch-src_lib_libast_include_vmalloc.h,v 1.2 2014/11/10 18:02:53 joerg Exp $ --- src/lib/libast/include/vmalloc.h.orig 2014-11-06 00:44:20.000000000 +0000 +++ src/lib/libast/include/vmalloc.h diff --git a/shells/ast-ksh/patches/patch-src_lib_libast_vmalloc_malloc.c b/shells/ast-ksh/patches/patch-src_lib_libast_vmalloc_malloc.c index 343353b5f11..0ce1aa873e7 100644 --- a/shells/ast-ksh/patches/patch-src_lib_libast_vmalloc_malloc.c +++ b/shells/ast-ksh/patches/patch-src_lib_libast_vmalloc_malloc.c @@ -1,4 +1,95 @@ -$NetBSD: patch-src_lib_libast_vmalloc_malloc.c,v 1.1 2014/11/06 12:25:36 joerg Exp $ +$NetBSD: patch-src_lib_libast_vmalloc_malloc.c,v 1.2 2014/11/10 18:02:53 joerg Exp $ + +--- src/lib/libast/vmalloc/malloc.c.orig 2012-06-28 06:52:46.000000000 +0000 ++++ src/lib/libast/vmalloc/malloc.c +@@ -61,6 +61,10 @@ extern char* getenv(const char*); + #undef mallinfo + typedef struct ______mallinfo Mallinfo_t; + #undef mallopt ++#undef memalign ++#define memalign _ast_memalign ++#undef posix_memalign ++#define posix_memalign _ast_posix_memalign + #undef mstats + typedef struct ______mstats Mstats_t; + #undef realloc +@@ -153,6 +157,7 @@ static int _Vmpffd = -1; + #undef malloc + #undef mallopt + #undef memalign ++#undef posix_memalign + #undef mstats + #undef realloc + #undef valloc +@@ -166,6 +171,7 @@ static int _Vmpffd = -1; + #undef free + #undef malloc + #undef memalign ++#undef posix_memalign + #undef realloc + + #define calloc _ast_calloc +@@ -173,6 +179,7 @@ static int _Vmpffd = -1; + #define free _ast_free + #define malloc _ast_malloc + #define memalign _ast_memalign ++#define posix_memalign _ast_posix_memalign + #define realloc _ast_realloc + + #endif +@@ -847,6 +854,9 @@ extern Void_t* F1(_malloc, size_t,n) { r + #if _lib_memalign + extern Void_t* F2(_memalign, size_t,a, size_t,n) { return memalign(a, n); } + #endif ++#if _lib_posix_memalign ++extern Void_t* F2(_posix_memalign, size_t,a, size_t,n) { return posix_memalign(a, n); } ++#endif + #if _lib_pvalloc + extern Void_t* F1(_pvalloc, size_t,n) { return pvalloc(n); } + #endif +@@ -864,6 +874,9 @@ extern Void_t* F1(__malloc, size_t,n) { + #if _lib_memalign + extern Void_t* F2(__memalign, size_t,a, size_t,n) { return memalign(a, n); } + #endif ++#if _lib_posix_memalign ++extern Void_t* F2(__posix_memalign, size_t,a, size_t,n) { return posix_memalign(a, n); } ++#endif + #if _lib_pvalloc + extern Void_t* F1(__pvalloc, size_t,n) { return pvalloc(n); } + #endif +@@ -881,6 +894,9 @@ extern Void_t* F1(__libc_malloc, size_t, + #if _lib_memalign + extern Void_t* F2(__libc_memalign, size_t,a, size_t,n) { return memalign(a, n); } + #endif ++#if _lib_posix_memalign ++extern Void_t* F2(__libc_posix_memalign, size_t,a, size_t,n) { return posix_memalign(a, n); } ++#endif + #if _lib_pvalloc + extern Void_t* F1(__libc_pvalloc, size_t,n) { return pvalloc(n); } + #endif +@@ -1015,6 +1031,11 @@ extern Void_t* malloc _ARG_((size_t)); + extern Void_t* memalign _ARG_((size_t, size_t)); + #endif + ++#if _lib_posix_memalign ++#undef posix_memalign ++extern Void_t* posix_memalign _ARG_((size_t, size_t)); ++#endif ++ + #if _lib_pvalloc + #undef pvalloc + extern Void_t* pvalloc _ARG_((size_t)); +@@ -1039,6 +1060,9 @@ extern Void_t* F1(_ast_malloc, size_t,n) + #if _lib_memalign + extern Void_t* F2(_ast_memalign, size_t,a, size_t,n) { return memalign(a, n); } + #endif ++#if _lib_posix_memalign ++extern Void_t* F2(_ast_posix_memalign, size_t,a, size_t,n) { return memalign(a, n); } ++#endif + extern Void_t* F2(_ast_realloc, Void_t*,p, size_t,n) { return realloc(p, n); } + + #endif +$NetBSD: patch-src_lib_libast_vmalloc_malloc.c,v 1.2 2014/11/10 18:02:53 joerg Exp $ --- src/lib/libast/vmalloc/malloc.c.orig 2012-06-28 06:52:46.000000000 +0000 +++ src/lib/libast/vmalloc/malloc.c -- cgit v1.2.3