Module Name: src
Committed By: christos
Date: Tue Mar 12 15:13:25 UTC 2019
Modified Files:
src/external/bsd/jemalloc/dist/src: jemalloc.c
src/external/bsd/jemalloc/include/jemalloc: jemalloc.h
src/external/bsd/jemalloc/lib: Makefile Makefile.inc
Added Files:
src/external/bsd/jemalloc: Makefile
src/external/bsd/jemalloc/lib: jemalloc_stub.c
Log Message:
- descend to build libjemalloc
- namespace protect all functions __je
- provide getters and setters for malloc_conf and malloc_message
To generate a diff of this commit:
cvs rdiff -u -r0 -r1.1 src/external/bsd/jemalloc/Makefile
cvs rdiff -u -r1.5 -r1.6 src/external/bsd/jemalloc/dist/src/jemalloc.c
cvs rdiff -u -r1.5 -r1.6 \
src/external/bsd/jemalloc/include/jemalloc/jemalloc.h
cvs rdiff -u -r1.2 -r1.3 src/external/bsd/jemalloc/lib/Makefile
cvs rdiff -u -r1.5 -r1.6 src/external/bsd/jemalloc/lib/Makefile.inc
cvs rdiff -u -r0 -r1.1 src/external/bsd/jemalloc/lib/jemalloc_stub.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/external/bsd/jemalloc/dist/src/jemalloc.c
diff -u src/external/bsd/jemalloc/dist/src/jemalloc.c:1.5 src/external/bsd/jemalloc/dist/src/jemalloc.c:1.6
--- src/external/bsd/jemalloc/dist/src/jemalloc.c:1.5 Sun Mar 10 15:34:30 2019
+++ src/external/bsd/jemalloc/dist/src/jemalloc.c Tue Mar 12 11:13:25 2019
@@ -20,24 +20,31 @@
#include "jemalloc/internal/ticker.h"
#include "jemalloc/internal/util.h"
-__weak_alias(mallocx, je_mallocx)
-__weak_alias(rallocx, je_rallocx)
-__weak_alias(xallocx, je_xallocx)
-__weak_alias(sallocx, je_sallocx)
-__weak_alias(dallocx, je_dallocx)
-__weak_alias(sdallocx, je_sdallocx)
-__weak_alias(nallocx, je_nallocx)
-
-__weak_alias(mallctl, je_mallctl)
-__weak_alias(mallctlnametomib, je_mallctlnametomib)
-__weak_alias(mallctlbymib, je_mallctlbymib)
+#ifdef JEMALLOC_WEAK_NOSTD
+__weak_alias(mallocx, __je_mallocx)
+__weak_alias(rallocx, __je_rallocx)
+__weak_alias(xallocx, __je_xallocx)
+__weak_alias(sallocx, __je_sallocx)
+__weak_alias(dallocx, __je_dallocx)
+__weak_alias(sdallocx, __je_sdallocx)
+__weak_alias(nallocx, __je_nallocx)
+
+__weak_alias(mallctl, __je_mallctl)
+__weak_alias(mallctlnametomib, __je_mallctlnametomib)
+__weak_alias(mallctlbymib, __je_mallctlbymib)
+
+__weak_alias(malloc_stats_print, __je_malloc_stats_print)
+__weak_alias(malloc_usable_size, __je_malloc_usable_size)
-__weak_alias(malloc_stats_print, je_malloc_stats_print)
-__weak_alias(malloc_usable_size, je_malloc_usable_size)
+__weak_alias(malloc_message, __je_malloc_message)
+__weak_alias(malloc_conf, __je_malloc_conf)
-__weak_alias(malloc_message, je_malloc_message)
+__weak_alias(malloc_message_get, __je_malloc_message_get)
+__weak_alias(malloc_conf_get, __je_malloc_conf_get)
-__weak_alias(malloc_conf, je_malloc_conf)
+__weak_alias(malloc_message_set, __je_malloc_message_set)
+__weak_alias(malloc_conf_set, __je_malloc_conf_set)
+#endif
/******************************************************************************/
/* Data. */
@@ -3354,4 +3361,28 @@ jemalloc_postfork_child(void) {
ctl_postfork_child(tsd_tsdn(tsd));
}
+void (*
+je_malloc_message_get(void))(void *, const char *)
+{
+ return je_malloc_message;
+}
+
+void
+je_malloc_message_set(void (*m)(void *, const char *))
+{
+ je_malloc_message = m;
+}
+
+const char *
+je_malloc_conf_get(void)
+{
+ return je_malloc_conf;
+}
+
+void
+je_malloc_conf_set(const char *m)
+{
+ je_malloc_conf = m;
+}
+
/******************************************************************************/
Index: src/external/bsd/jemalloc/include/jemalloc/jemalloc.h
diff -u src/external/bsd/jemalloc/include/jemalloc/jemalloc.h:1.5 src/external/bsd/jemalloc/include/jemalloc/jemalloc.h:1.6
--- src/external/bsd/jemalloc/include/jemalloc/jemalloc.h:1.5 Sun Mar 10 15:32:56 2019
+++ src/external/bsd/jemalloc/include/jemalloc/jemalloc.h Tue Mar 12 11:13:25 2019
@@ -64,48 +64,51 @@ extern "C" {
#ifndef JEMALLOC_NO_RENAME
# define je_aligned_alloc aligned_alloc
# define je_calloc calloc
-# define je_dallocx dallocx
# define je_free free
+# define je_malloc malloc
+# define je_posix_memalign posix_memalign
+# define je_realloc realloc
+# define je_valloc valloc
+
+# ifndef JEMALLOC_PROTECT_NOSTD
+# define je_dallocx dallocx
# define je_mallctl mallctl
# define je_mallctlbymib mallctlbymib
# define je_mallctlnametomib mallctlnametomib
-# define je_malloc malloc
# define je_malloc_conf malloc_conf
+# define je_malloc_conf_get malloc_conf_get
+# define je_malloc_conf_set malloc_conf_set
# define je_malloc_message malloc_message
+# define je_malloc_message_get malloc_message_get
+# define je_malloc_message_set malloc_message_set
# define je_malloc_stats_print malloc_stats_print
# define je_malloc_usable_size malloc_usable_size
# define je_mallocx mallocx
# define je_nallocx nallocx
-# define je_posix_memalign posix_memalign
# define je_rallocx rallocx
-# define je_realloc realloc
# define je_sallocx sallocx
# define je_sdallocx sdallocx
# define je_xallocx xallocx
-# define je_valloc valloc
-#endif
-
-#ifdef JEMALLOC_WEAK_NOSTD
-
-#undef je_mallocx
-#undef je_rallocx
-#undef je_xallocx
-#undef je_sallocx
-#undef je_dallocx
-#undef je_sdallocx
-#undef je_nallocx
-
-#undef je_mallctl
-#undef je_mallctlnametomib
-#undef je_mallctlbymib
-
-#undef je_malloc_stats_print
-#undef je_malloc_usable_size
-
-#undef je_malloc_message
-
-#undef je_malloc_conf
-
+# else
+# define je_dallocx __je_dallocx
+# define je_mallctl __je_mallctl
+# define je_mallctlbymib __je_mallctlbymib
+# define je_mallctlnametomib __je_mallctlnametomib
+# define je_malloc_conf __je_malloc_conf
+# define je_malloc_conf_get __je_malloc_conf_get
+# define je_malloc_conf_set __je_malloc_conf_set
+# define je_malloc_message __je_malloc_message
+# define je_malloc_message_get __je_malloc_message_get
+# define je_malloc_message_set __je_malloc_message_set
+# define je_malloc_stats_print __je_malloc_stats_print
+# define je_malloc_usable_size __je_malloc_usable_size
+# define je_mallocx __je_mallocx
+# define je_nallocx __je_nallocx
+# define je_rallocx __je_rallocx
+# define je_sallocx __je_sallocx
+# define je_sdallocx __je_sdallocx
+# define je_xallocx __je_xallocx
+# endif
#endif
#include <stdlib.h>
@@ -241,6 +244,12 @@ extern "C" {
extern JEMALLOC_EXPORT const char *je_malloc_conf;
extern JEMALLOC_EXPORT void (*je_malloc_message)(void *cbopaque,
const char *s);
+extern JEMALLOC_EXPORT const char *je_malloc_conf_get(void);
+extern JEMALLOC_EXPORT void je_malloc_conf_set(const char *);
+extern JEMALLOC_EXPORT void (*je_malloc_message_get(void))
+ (void *cbopaque, const char *s);
+extern JEMALLOC_EXPORT void je_malloc_message_set(
+ void (*)(void *cbopaque, const char *s));
JEMALLOC_EXPORT JEMALLOC_ALLOCATOR JEMALLOC_RESTRICT_RETURN
void JEMALLOC_NOTHROW *je_malloc(size_t size)
Index: src/external/bsd/jemalloc/lib/Makefile
diff -u src/external/bsd/jemalloc/lib/Makefile:1.2 src/external/bsd/jemalloc/lib/Makefile:1.3
--- src/external/bsd/jemalloc/lib/Makefile:1.2 Mon Mar 4 14:41:37 2019
+++ src/external/bsd/jemalloc/lib/Makefile Tue Mar 12 11:13:25 2019
@@ -1,10 +1,10 @@
-# $NetBSD: Makefile,v 1.2 2019/03/04 19:41:37 christos Exp $
+# $NetBSD: Makefile,v 1.3 2019/03/12 15:13:25 christos Exp $
WARNS?= 5
.include <bsd.init.mk>
LIB=jemalloc
-.include "Makefile.inc"
+SRCS=jemalloc_stub.c
.include <bsd.lib.mk>
Index: src/external/bsd/jemalloc/lib/Makefile.inc
diff -u src/external/bsd/jemalloc/lib/Makefile.inc:1.5 src/external/bsd/jemalloc/lib/Makefile.inc:1.6
--- src/external/bsd/jemalloc/lib/Makefile.inc:1.5 Sun Mar 10 11:32:42 2019
+++ src/external/bsd/jemalloc/lib/Makefile.inc Tue Mar 12 11:13:25 2019
@@ -1,4 +1,4 @@
-# $NetBSD: Makefile.inc,v 1.5 2019/03/10 15:32:42 christos Exp $
+# $NetBSD: Makefile.inc,v 1.6 2019/03/12 15:13:25 christos Exp $
JEMALLOC:=${.PARSEDIR}/..
@@ -39,7 +39,7 @@ witness.c
.PATH.3: ${JEMALLOC}/dist/doc
.for i in ${JEMALLOC_SRCS}
CPPFLAGS.${i}+=-I${JEMALLOC}/include -DJEMALLOC_NO_PRIVATE_NAMESPACE \
- -DJEMALLOC_WEAK_NOSTD -DJEMALLOC_DEBUG
+ -DJEMALLOC_PROTECT_NOSTD -DJEMALLOC_DEBUG
COPTS.${i}+= -fvisibility=hidden -funroll-loops
.endfor
Added files:
Index: src/external/bsd/jemalloc/Makefile
diff -u /dev/null src/external/bsd/jemalloc/Makefile:1.1
--- /dev/null Tue Mar 12 11:13:26 2019
+++ src/external/bsd/jemalloc/Makefile Tue Mar 12 11:13:25 2019
@@ -0,0 +1,5 @@
+# $NetBSD: Makefile,v 1.1 2019/03/12 15:13:25 christos Exp $
+
+SUBDIR= lib
+
+.include <bsd.subdir.mk>
Index: src/external/bsd/jemalloc/lib/jemalloc_stub.c
diff -u /dev/null src/external/bsd/jemalloc/lib/jemalloc_stub.c:1.1
--- /dev/null Tue Mar 12 11:13:26 2019
+++ src/external/bsd/jemalloc/lib/jemalloc_stub.c Tue Mar 12 11:13:25 2019
@@ -0,0 +1,141 @@
+/*-
+ * Copyright (c) 2019 The NetBSD Foundation, Inc.
+ * All rights reserved.
+ *
+ * This code is derived from software contributed to The NetBSD Foundation
+ * by Christos Zoulas.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
+ * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+#include <malloc.h>
+
+void *__je_mallocx(size_t, int);
+void *
+mallocx(size_t l, int f)
+{
+ return __je_mallocx(l, f);
+}
+
+void *__je_rallocx(void *, size_t, int);
+void *
+rallocx(void *p, size_t l, int f)
+{
+ return __je_rallocx(p, l, f);
+}
+
+size_t __je_xallocx(void *, size_t, size_t, int);
+size_t
+xallocx(void *p, size_t l, size_t s, int f)
+{
+ return __je_xallocx(p, l, s, f);
+}
+
+size_t __je_sallocx(const void *, int);
+size_t
+sallocx(const void *p, int f)
+{
+ return __je_sallocx(p, f);
+}
+
+void __je_dallocx(void *, int);
+void
+dallocx(void *p, int f)
+{
+ __je_dallocx(p, f);
+}
+
+void __je_sdallocx(void *, size_t, int);
+void
+sdallocx(void *p, size_t l, int f)
+{
+ __je_sdallocx(p, l, f);
+}
+
+size_t __je_nallocx(size_t, int);
+size_t
+nallocx(size_t l, int f)
+{
+ return __je_nallocx(l, f);
+}
+
+int __je_mallctl(const char *, void *, size_t *, void *, size_t);
+int
+mallctl(const char *n, void *p, size_t *s, void *v, size_t l)
+{
+ return __je_mallctl(n, p, s, v, l);
+}
+
+int __je_mallctlnametomib(const char *, size_t *, size_t *);
+int
+mallctlnametomib(const char *n, size_t *l, size_t *s)
+{
+ return __je_mallctlnametomib(n, l, s);
+}
+
+int __je_mallctlbymib(const size_t *, size_t, void *, size_t *, void *, size_t);
+int
+mallctlbymib(const size_t *sp, size_t s, void *p , size_t *dp, void *r ,
+ size_t l)
+{
+ return __je_mallctlbymib(sp, s, p , dp, r, l);
+}
+
+void __je_malloc_stats_print(void (*)(void *, const char *), void *,
+ const char *);
+void
+malloc_stats_print(void (*f)(void *, const char *), void *p, const char *n)
+{
+ __je_malloc_stats_print(f, p, n);
+}
+
+size_t __je_malloc_usable_size(const void *);
+size_t
+malloc_usable_size(const void *p)
+{
+ return __je_malloc_usable_size(p);
+}
+void (*__je_malloc_message_get(void))(void *, const char *);
+void (*
+malloc_message_get(void))(void *, const char *)
+{
+ return __je_malloc_message_get();
+}
+
+void __je_malloc_message_set(void (*)(void *, const char *));
+void
+malloc_message_set(void (*m)(void *, const char *))
+{
+ __je_malloc_message_set(m);
+}
+
+const char *__je_malloc_conf_get(void);
+const char *
+malloc_conf_get(void)
+{
+ return __je_malloc_conf_get();
+}
+
+void __je_malloc_conf_set(const char *);
+void malloc_conf_set(const char *m)
+{
+ __je_malloc_conf_set(m);
+}