Automatically generate private symbol name mangling macros.
Rather than using a manually maintained list of internal symbols to drive name mangling, add a compilation phase to automatically extract the list of internal symbols. This resolves #677.
This commit is contained in:
parent
a4ae9707da
commit
909f0482e4
18
.gitignore
vendored
18
.gitignore
vendored
@ -1,5 +1,3 @@
|
|||||||
/*.gcov.*
|
|
||||||
|
|
||||||
/bin/jemalloc-config
|
/bin/jemalloc-config
|
||||||
/bin/jemalloc.sh
|
/bin/jemalloc.sh
|
||||||
/bin/jeprof
|
/bin/jeprof
|
||||||
@ -24,6 +22,9 @@
|
|||||||
/include/jemalloc/internal/jemalloc_preamble.h
|
/include/jemalloc/internal/jemalloc_preamble.h
|
||||||
/include/jemalloc/internal/jemalloc_internal_defs.h
|
/include/jemalloc/internal/jemalloc_internal_defs.h
|
||||||
/include/jemalloc/internal/private_namespace.h
|
/include/jemalloc/internal/private_namespace.h
|
||||||
|
/include/jemalloc/internal/private_namespace_jet.h
|
||||||
|
/include/jemalloc/internal/private_symbols.awk
|
||||||
|
/include/jemalloc/internal/private_symbols_jet.awk
|
||||||
/include/jemalloc/internal/public_namespace.h
|
/include/jemalloc/internal/public_namespace.h
|
||||||
/include/jemalloc/internal/public_symbols.txt
|
/include/jemalloc/internal/public_symbols.txt
|
||||||
/include/jemalloc/internal/public_unnamespace.h
|
/include/jemalloc/internal/public_unnamespace.h
|
||||||
@ -39,8 +40,7 @@
|
|||||||
/include/jemalloc/jemalloc_typedefs.h
|
/include/jemalloc/jemalloc_typedefs.h
|
||||||
|
|
||||||
/src/*.[od]
|
/src/*.[od]
|
||||||
/src/*.gcda
|
/src/*.sym
|
||||||
/src/*.gcno
|
|
||||||
|
|
||||||
/test/test.sh
|
/test/test.sh
|
||||||
test/include/test/jemalloc_test.h
|
test/include/test/jemalloc_test.h
|
||||||
@ -49,33 +49,23 @@ test/include/test/jemalloc_test_defs.h
|
|||||||
/test/integration/[A-Za-z]*
|
/test/integration/[A-Za-z]*
|
||||||
!/test/integration/[A-Za-z]*.*
|
!/test/integration/[A-Za-z]*.*
|
||||||
/test/integration/*.[od]
|
/test/integration/*.[od]
|
||||||
/test/integration/*.gcda
|
|
||||||
/test/integration/*.gcno
|
|
||||||
/test/integration/*.out
|
/test/integration/*.out
|
||||||
|
|
||||||
/test/integration/cpp/[A-Za-z]*
|
/test/integration/cpp/[A-Za-z]*
|
||||||
!/test/integration/cpp/[A-Za-z]*.*
|
!/test/integration/cpp/[A-Za-z]*.*
|
||||||
/test/integration/cpp/*.[od]
|
/test/integration/cpp/*.[od]
|
||||||
/test/integration/cpp/*.gcda
|
|
||||||
/test/integration/cpp/*.gcno
|
|
||||||
/test/integration/cpp/*.out
|
/test/integration/cpp/*.out
|
||||||
|
|
||||||
/test/src/*.[od]
|
/test/src/*.[od]
|
||||||
/test/src/*.gcda
|
|
||||||
/test/src/*.gcno
|
|
||||||
|
|
||||||
/test/stress/[A-Za-z]*
|
/test/stress/[A-Za-z]*
|
||||||
!/test/stress/[A-Za-z]*.*
|
!/test/stress/[A-Za-z]*.*
|
||||||
/test/stress/*.[od]
|
/test/stress/*.[od]
|
||||||
/test/stress/*.gcda
|
|
||||||
/test/stress/*.gcno
|
|
||||||
/test/stress/*.out
|
/test/stress/*.out
|
||||||
|
|
||||||
/test/unit/[A-Za-z]*
|
/test/unit/[A-Za-z]*
|
||||||
!/test/unit/[A-Za-z]*.*
|
!/test/unit/[A-Za-z]*.*
|
||||||
/test/unit/*.[od]
|
/test/unit/*.[od]
|
||||||
/test/unit/*.gcda
|
|
||||||
/test/unit/*.gcno
|
|
||||||
/test/unit/*.out
|
/test/unit/*.out
|
||||||
|
|
||||||
/VERSION
|
/VERSION
|
||||||
|
53
Makefile.in
53
Makefile.in
@ -68,6 +68,8 @@ TEST_LD_MODE = @TEST_LD_MODE@
|
|||||||
MKLIB = @MKLIB@
|
MKLIB = @MKLIB@
|
||||||
AR = @AR@
|
AR = @AR@
|
||||||
ARFLAGS = @ARFLAGS@
|
ARFLAGS = @ARFLAGS@
|
||||||
|
DUMP_SYMS = @DUMP_SYMS@
|
||||||
|
AWK := @AWK@
|
||||||
CC_MM = @CC_MM@
|
CC_MM = @CC_MM@
|
||||||
LM := @LM@
|
LM := @LM@
|
||||||
INSTALL = @INSTALL@
|
INSTALL = @INSTALL@
|
||||||
@ -224,10 +226,15 @@ TESTS_STRESS := $(srcroot)test/stress/microbench.c
|
|||||||
|
|
||||||
TESTS := $(TESTS_UNIT) $(TESTS_INTEGRATION) $(TESTS_INTEGRATION_CPP) $(TESTS_STRESS)
|
TESTS := $(TESTS_UNIT) $(TESTS_INTEGRATION) $(TESTS_INTEGRATION_CPP) $(TESTS_STRESS)
|
||||||
|
|
||||||
|
PRIVATE_NAMESPACE_HDRS := $(objroot)include/jemalloc/internal/private_namespace.h $(objroot)include/jemalloc/internal/private_namespace_jet.h
|
||||||
|
C_SYM_OBJS := $(C_SRCS:$(srcroot)%.c=$(objroot)%.sym.$(O))
|
||||||
|
C_SYMS := $(C_SRCS:$(srcroot)%.c=$(objroot)%.sym)
|
||||||
C_OBJS := $(C_SRCS:$(srcroot)%.c=$(objroot)%.$(O))
|
C_OBJS := $(C_SRCS:$(srcroot)%.c=$(objroot)%.$(O))
|
||||||
CPP_OBJS := $(CPP_SRCS:$(srcroot)%.cpp=$(objroot)%.$(O))
|
CPP_OBJS := $(CPP_SRCS:$(srcroot)%.cpp=$(objroot)%.$(O))
|
||||||
C_PIC_OBJS := $(C_SRCS:$(srcroot)%.c=$(objroot)%.pic.$(O))
|
C_PIC_OBJS := $(C_SRCS:$(srcroot)%.c=$(objroot)%.pic.$(O))
|
||||||
CPP_PIC_OBJS := $(CPP_SRCS:$(srcroot)%.cpp=$(objroot)%.pic.$(O))
|
CPP_PIC_OBJS := $(CPP_SRCS:$(srcroot)%.cpp=$(objroot)%.pic.$(O))
|
||||||
|
C_JET_SYM_OBJS := $(C_SRCS:$(srcroot)%.c=$(objroot)%.jet.sym.$(O))
|
||||||
|
C_JET_SYMS := $(C_SRCS:$(srcroot)%.c=$(objroot)%.jet.sym)
|
||||||
C_JET_OBJS := $(C_SRCS:$(srcroot)%.c=$(objroot)%.jet.$(O))
|
C_JET_OBJS := $(C_SRCS:$(srcroot)%.c=$(objroot)%.jet.$(O))
|
||||||
C_TESTLIB_UNIT_OBJS := $(C_TESTLIB_SRCS:$(srcroot)%.c=$(objroot)%.unit.$(O))
|
C_TESTLIB_UNIT_OBJS := $(C_TESTLIB_SRCS:$(srcroot)%.c=$(objroot)%.unit.$(O))
|
||||||
C_TESTLIB_INTEGRATION_OBJS := $(C_TESTLIB_SRCS:$(srcroot)%.c=$(objroot)%.integration.$(O))
|
C_TESTLIB_INTEGRATION_OBJS := $(C_TESTLIB_SRCS:$(srcroot)%.c=$(objroot)%.integration.$(O))
|
||||||
@ -268,24 +275,32 @@ build_doc: $(DOCS)
|
|||||||
# Include generated dependency files.
|
# Include generated dependency files.
|
||||||
#
|
#
|
||||||
ifdef CC_MM
|
ifdef CC_MM
|
||||||
|
-include $(C_SYM_OBJS:%.$(O)=%.d)
|
||||||
-include $(C_OBJS:%.$(O)=%.d)
|
-include $(C_OBJS:%.$(O)=%.d)
|
||||||
-include $(CPP_OBJS:%.$(O)=%.d)
|
-include $(CPP_OBJS:%.$(O)=%.d)
|
||||||
-include $(C_PIC_OBJS:%.$(O)=%.d)
|
-include $(C_PIC_OBJS:%.$(O)=%.d)
|
||||||
-include $(CPP_PIC_OBJS:%.$(O)=%.d)
|
-include $(CPP_PIC_OBJS:%.$(O)=%.d)
|
||||||
|
-include $(C_JET_SYM_OBJS:%.$(O)=%.d)
|
||||||
-include $(C_JET_OBJS:%.$(O)=%.d)
|
-include $(C_JET_OBJS:%.$(O)=%.d)
|
||||||
-include $(C_TESTLIB_OBJS:%.$(O)=%.d)
|
-include $(C_TESTLIB_OBJS:%.$(O)=%.d)
|
||||||
-include $(TESTS_OBJS:%.$(O)=%.d)
|
-include $(TESTS_OBJS:%.$(O)=%.d)
|
||||||
-include $(TESTS_CPP_OBJS:%.$(O)=%.d)
|
-include $(TESTS_CPP_OBJS:%.$(O)=%.d)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
$(C_SYM_OBJS): $(objroot)src/%.sym.$(O): $(srcroot)src/%.c
|
||||||
|
$(C_SYM_OBJS): CPPFLAGS += -DJEMALLOC_NO_PRIVATE_NAMESPACE
|
||||||
|
$(C_SYMS): $(objroot)src/%.sym: $(objroot)src/%.sym.$(O)
|
||||||
$(C_OBJS): $(objroot)src/%.$(O): $(srcroot)src/%.c
|
$(C_OBJS): $(objroot)src/%.$(O): $(srcroot)src/%.c
|
||||||
$(CPP_OBJS): $(objroot)src/%.$(O): $(srcroot)src/%.cpp
|
$(CPP_OBJS): $(objroot)src/%.$(O): $(srcroot)src/%.cpp
|
||||||
$(C_PIC_OBJS): $(objroot)src/%.pic.$(O): $(srcroot)src/%.c
|
$(C_PIC_OBJS): $(objroot)src/%.pic.$(O): $(srcroot)src/%.c
|
||||||
$(C_PIC_OBJS): CFLAGS += $(PIC_CFLAGS)
|
$(C_PIC_OBJS): CFLAGS += $(PIC_CFLAGS)
|
||||||
$(CPP_PIC_OBJS): $(objroot)src/%.pic.$(O): $(srcroot)src/%.cpp
|
$(CPP_PIC_OBJS): $(objroot)src/%.pic.$(O): $(srcroot)src/%.cpp
|
||||||
$(CPP_PIC_OBJS): CXXFLAGS += $(PIC_CFLAGS)
|
$(CPP_PIC_OBJS): CXXFLAGS += $(PIC_CFLAGS)
|
||||||
|
$(C_JET_SYM_OBJS): $(objroot)src/%.jet.sym.$(O): $(srcroot)src/%.c
|
||||||
|
$(C_JET_SYM_OBJS): CPPFLAGS += -DJEMALLOC_JET -DJEMALLOC_NO_PRIVATE_NAMESPACE
|
||||||
|
$(C_JET_SYMS): $(objroot)src/%.jet.sym: $(objroot)src/%.jet.sym.$(O)
|
||||||
$(C_JET_OBJS): $(objroot)src/%.jet.$(O): $(srcroot)src/%.c
|
$(C_JET_OBJS): $(objroot)src/%.jet.$(O): $(srcroot)src/%.c
|
||||||
$(C_JET_OBJS): CFLAGS += -DJEMALLOC_JET
|
$(C_JET_OBJS): CPPFLAGS += -DJEMALLOC_JET
|
||||||
$(C_TESTLIB_UNIT_OBJS): $(objroot)test/src/%.unit.$(O): $(srcroot)test/src/%.c
|
$(C_TESTLIB_UNIT_OBJS): $(objroot)test/src/%.unit.$(O): $(srcroot)test/src/%.c
|
||||||
$(C_TESTLIB_UNIT_OBJS): CPPFLAGS += -DJEMALLOC_UNIT_TEST
|
$(C_TESTLIB_UNIT_OBJS): CPPFLAGS += -DJEMALLOC_UNIT_TEST
|
||||||
$(C_TESTLIB_INTEGRATION_OBJS): $(objroot)test/src/%.integration.$(O): $(srcroot)test/src/%.c
|
$(C_TESTLIB_INTEGRATION_OBJS): $(objroot)test/src/%.integration.$(O): $(srcroot)test/src/%.c
|
||||||
@ -303,25 +318,42 @@ $(TESTS_CPP_OBJS): $(objroot)test/%.$(O): $(srcroot)test/%.cpp
|
|||||||
$(TESTS_OBJS): CPPFLAGS += -I$(srcroot)test/include -I$(objroot)test/include
|
$(TESTS_OBJS): CPPFLAGS += -I$(srcroot)test/include -I$(objroot)test/include
|
||||||
$(TESTS_CPP_OBJS): CPPFLAGS += -I$(srcroot)test/include -I$(objroot)test/include
|
$(TESTS_CPP_OBJS): CPPFLAGS += -I$(srcroot)test/include -I$(objroot)test/include
|
||||||
ifneq ($(IMPORTLIB),$(SO))
|
ifneq ($(IMPORTLIB),$(SO))
|
||||||
$(CPP_OBJS) $(C_OBJS) $(C_JET_OBJS): CPPFLAGS += -DDLLEXPORT
|
$(CPP_OBJS) $(C_SYM_OBJS) $(C_OBJS) $(C_JET_SYM_OBJS) $(C_JET_OBJS): CPPFLAGS += -DDLLEXPORT
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifndef CC_MM
|
|
||||||
# Dependencies.
|
# Dependencies.
|
||||||
|
ifndef CC_MM
|
||||||
HEADER_DIRS = $(srcroot)include/jemalloc/internal \
|
HEADER_DIRS = $(srcroot)include/jemalloc/internal \
|
||||||
$(objroot)include/jemalloc $(objroot)include/jemalloc/internal
|
$(objroot)include/jemalloc $(objroot)include/jemalloc/internal
|
||||||
HEADERS = $(wildcard $(foreach dir,$(HEADER_DIRS),$(dir)/*.h))
|
HEADERS = $(filter-out $(PRIVATE_NAMESPACE_HDRS),$(wildcard $(foreach dir,$(HEADER_DIRS),$(dir)/*.h)))
|
||||||
$(C_OBJS) $(CPP_OBJS) $(C_PIC_OBJS) $(CPP_PIC_OBJS) $(C_JET_OBJS) $(C_TESTLIB_OBJS) $(TESTS_OBJS): $(HEADERS)
|
$(C_SYM_OBJS) $(C_OBJS) $(CPP_OBJS) $(C_PIC_OBJS) $(CPP_PIC_OBJS) $(C_JET_SYM_OBJS) $(C_JET_OBJS) $(C_TESTLIB_OBJS) $(TESTS_OBJS) $(TESTS_CPP_OBJS): $(HEADERS)
|
||||||
$(TESTS_OBJS) $(TESTS_CPP_OBJS): $(objroot)test/include/test/jemalloc_test.h
|
$(TESTS_OBJS) $(TESTS_CPP_OBJS): $(objroot)test/include/test/jemalloc_test.h
|
||||||
endif
|
endif
|
||||||
|
|
||||||
$(C_OBJS) $(C_PIC_OBJS) $(C_JET_OBJS) $(C_TESTLIB_OBJS) $(TESTS_OBJS): %.$(O):
|
$(C_OBJS) $(CPP_OBJS) $(C_PIC_OBJS) $(CPP_PIC_OBJS) $(C_TESTLIB_INTEGRATION_OBJS) $(C_UTIL_INTEGRATION_OBJS) $(TESTS_INTEGRATION_OBJS) $(TESTS_INTEGRATION_CPP_OBJS): $(objroot)include/jemalloc/internal/private_namespace.h
|
||||||
|
$(C_JET_OBJS) $(C_TESTLIB_UNIT_OBJS) $(C_TESTLIB_STRESS_OBJS) $(TESTS_UNIT_OBJS) $(TESTS_STRESS_OBJS): $(objroot)include/jemalloc/internal/private_namespace_jet.h
|
||||||
|
|
||||||
|
$(C_SYM_OBJS) $(C_OBJS) $(C_PIC_OBJS) $(C_JET_SYM_OBJS) $(C_JET_OBJS) $(C_TESTLIB_OBJS) $(TESTS_OBJS): %.$(O):
|
||||||
@mkdir -p $(@D)
|
@mkdir -p $(@D)
|
||||||
$(CC) $(CFLAGS) -c $(CPPFLAGS) $(CTARGET) $<
|
$(CC) $(CFLAGS) -c $(CPPFLAGS) $(CTARGET) $<
|
||||||
ifdef CC_MM
|
ifdef CC_MM
|
||||||
@$(CC) -MM $(CPPFLAGS) -MT $@ -o $(@:%.$(O)=%.d) $<
|
@$(CC) -MM $(CPPFLAGS) -MT $@ -o $(@:%.$(O)=%.d) $<
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
$(C_SYMS): %.sym:
|
||||||
|
@mkdir -p $(@D)
|
||||||
|
$(DUMP_SYMS) $< | $(AWK) -f $(objroot)include/jemalloc/internal/private_symbols.awk > $@
|
||||||
|
|
||||||
|
$(C_JET_SYMS): %.sym:
|
||||||
|
@mkdir -p $(@D)
|
||||||
|
$(DUMP_SYMS) $< | $(AWK) -f $(objroot)include/jemalloc/internal/private_symbols_jet.awk > $@
|
||||||
|
|
||||||
|
$(objroot)include/jemalloc/internal/private_namespace.h: $(C_SYMS)
|
||||||
|
$(SHELL) $(objdir)include/jemalloc/internal/private_namespace.sh $^ > $@
|
||||||
|
|
||||||
|
$(objroot)include/jemalloc/internal/private_namespace_jet.h: $(C_JET_SYMS)
|
||||||
|
$(SHELL) $(objdir)include/jemalloc/internal/private_namespace.sh $^ > $@
|
||||||
|
|
||||||
$(CPP_OBJS) $(CPP_PIC_OBJS) $(TESTS_CPP_OBJS): %.$(O):
|
$(CPP_OBJS) $(CPP_PIC_OBJS) $(TESTS_CPP_OBJS): %.$(O):
|
||||||
@mkdir -p $(@D)
|
@mkdir -p $(@D)
|
||||||
$(CXX) $(CXXFLAGS) -c $(CPPFLAGS) $(CTARGET) $<
|
$(CXX) $(CXXFLAGS) -c $(CPPFLAGS) $(CTARGET) $<
|
||||||
@ -347,7 +379,7 @@ $(STATIC_LIBS):
|
|||||||
@mkdir -p $(@D)
|
@mkdir -p $(@D)
|
||||||
$(AR) $(ARFLAGS)@AROUT@ $+
|
$(AR) $(ARFLAGS)@AROUT@ $+
|
||||||
|
|
||||||
$(objroot)test/unit/%$(EXE): $(objroot)test/unit/%.$(O) $(TESTS_UNIT_LINK_OBJS) $(C_JET_OBJS) $(C_TESTLIB_UNIT_OBJS)
|
$(objroot)test/unit/%$(EXE): $(objroot)test/unit/%.$(O) $(C_JET_OBJS) $(C_TESTLIB_UNIT_OBJS)
|
||||||
@mkdir -p $(@D)
|
@mkdir -p $(@D)
|
||||||
$(CC) $(LDTARGET) $(filter %.$(O),$^) $(call RPATH,$(objroot)lib) $(LDFLAGS) $(filter-out -lm,$(LIBS)) $(LM) $(EXTRA_LDFLAGS)
|
$(CC) $(LDTARGET) $(filter %.$(O),$^) $(call RPATH,$(objroot)lib) $(LDFLAGS) $(filter-out -lm,$(LIBS)) $(LM) $(EXTRA_LDFLAGS)
|
||||||
|
|
||||||
@ -452,16 +484,23 @@ stress: tests_stress stress_dir
|
|||||||
check: check_unit check_integration check_integration_decay check_integration_prof
|
check: check_unit check_integration check_integration_decay check_integration_prof
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
|
rm -f $(PRIVATE_NAMESPACE_HDRS)
|
||||||
|
rm -f $(C_SYM_OBJS)
|
||||||
|
rm -f $(C_SYMS)
|
||||||
rm -f $(C_OBJS)
|
rm -f $(C_OBJS)
|
||||||
rm -f $(CPP_OBJS)
|
rm -f $(CPP_OBJS)
|
||||||
rm -f $(C_PIC_OBJS)
|
rm -f $(C_PIC_OBJS)
|
||||||
rm -f $(CPP_PIC_OBJS)
|
rm -f $(CPP_PIC_OBJS)
|
||||||
|
rm -f $(C_JET_SYM_OBJS)
|
||||||
|
rm -f $(C_JET_SYMS)
|
||||||
rm -f $(C_JET_OBJS)
|
rm -f $(C_JET_OBJS)
|
||||||
rm -f $(C_TESTLIB_OBJS)
|
rm -f $(C_TESTLIB_OBJS)
|
||||||
|
rm -f $(C_SYM_OBJS:%.$(O)=%.d)
|
||||||
rm -f $(C_OBJS:%.$(O)=%.d)
|
rm -f $(C_OBJS:%.$(O)=%.d)
|
||||||
rm -f $(CPP_OBJS:%.$(O)=%.d)
|
rm -f $(CPP_OBJS:%.$(O)=%.d)
|
||||||
rm -f $(C_PIC_OBJS:%.$(O)=%.d)
|
rm -f $(C_PIC_OBJS:%.$(O)=%.d)
|
||||||
rm -f $(CPP_PIC_OBJS:%.$(O)=%.d)
|
rm -f $(CPP_PIC_OBJS:%.$(O)=%.d)
|
||||||
|
rm -f $(C_JET_SYM_OBJS:%.$(O)=%.d)
|
||||||
rm -f $(C_JET_OBJS:%.$(O)=%.d)
|
rm -f $(C_JET_OBJS:%.$(O)=%.d)
|
||||||
rm -f $(C_TESTLIB_OBJS:%.$(O)=%.d)
|
rm -f $(C_TESTLIB_OBJS:%.$(O)=%.d)
|
||||||
rm -f $(TESTS_OBJS:%.$(O)=%$(EXE))
|
rm -f $(TESTS_OBJS:%.$(O)=%$(EXE))
|
||||||
|
110
configure.ac
110
configure.ac
@ -510,6 +510,8 @@ AN_PROGRAM([ar], [AC_PROG_AR])
|
|||||||
AC_DEFUN([AC_PROG_AR], [AC_CHECK_TOOL(AR, ar, :)])
|
AC_DEFUN([AC_PROG_AR], [AC_CHECK_TOOL(AR, ar, :)])
|
||||||
AC_PROG_AR
|
AC_PROG_AR
|
||||||
|
|
||||||
|
AC_PROG_AWK
|
||||||
|
|
||||||
dnl Platform-specific settings. abi and RPATH can probably be determined
|
dnl Platform-specific settings. abi and RPATH can probably be determined
|
||||||
dnl programmatically, but doing so is error-prone, which makes it generally
|
dnl programmatically, but doing so is error-prone, which makes it generally
|
||||||
dnl not worth the trouble.
|
dnl not worth the trouble.
|
||||||
@ -519,6 +521,8 @@ dnl definitions need to be seen before any headers are included, which is a pain
|
|||||||
dnl to make happen otherwise.
|
dnl to make happen otherwise.
|
||||||
default_retain="0"
|
default_retain="0"
|
||||||
maps_coalesce="1"
|
maps_coalesce="1"
|
||||||
|
DUMP_SYMS="nm -a"
|
||||||
|
SYM_PREFIX=""
|
||||||
case "${host}" in
|
case "${host}" in
|
||||||
*-*-darwin* | *-*-ios*)
|
*-*-darwin* | *-*-ios*)
|
||||||
abi="macho"
|
abi="macho"
|
||||||
@ -530,6 +534,7 @@ case "${host}" in
|
|||||||
DSO_LDFLAGS='-shared -Wl,-install_name,$(LIBDIR)/$(@F)'
|
DSO_LDFLAGS='-shared -Wl,-install_name,$(LIBDIR)/$(@F)'
|
||||||
SOREV="${rev}.${so}"
|
SOREV="${rev}.${so}"
|
||||||
sbrk_deprecated="1"
|
sbrk_deprecated="1"
|
||||||
|
SYM_PREFIX="_"
|
||||||
;;
|
;;
|
||||||
*-*-freebsd*)
|
*-*-freebsd*)
|
||||||
abi="elf"
|
abi="elf"
|
||||||
@ -624,6 +629,7 @@ case "${host}" in
|
|||||||
DSO_LDFLAGS="-shared"
|
DSO_LDFLAGS="-shared"
|
||||||
link_whole_archive="1"
|
link_whole_archive="1"
|
||||||
fi
|
fi
|
||||||
|
DUMP_SYMS="dumpbin /SYMBOLS"
|
||||||
a="lib"
|
a="lib"
|
||||||
libprefix=""
|
libprefix=""
|
||||||
SOREV="${so}"
|
SOREV="${so}"
|
||||||
@ -671,6 +677,7 @@ AC_SUBST([TEST_LD_MODE])
|
|||||||
AC_SUBST([MKLIB])
|
AC_SUBST([MKLIB])
|
||||||
AC_SUBST([ARFLAGS])
|
AC_SUBST([ARFLAGS])
|
||||||
AC_SUBST([AROUT])
|
AC_SUBST([AROUT])
|
||||||
|
AC_SUBST([DUMP_SYMS])
|
||||||
AC_SUBST([CC_MM])
|
AC_SUBST([CC_MM])
|
||||||
|
|
||||||
dnl Determine whether libm must be linked to use e.g. log(3).
|
dnl Determine whether libm must be linked to use e.g. log(3).
|
||||||
@ -773,16 +780,6 @@ AC_PROG_RANLIB
|
|||||||
AC_PATH_PROG([LD], [ld], [false], [$PATH])
|
AC_PATH_PROG([LD], [ld], [false], [$PATH])
|
||||||
AC_PATH_PROG([AUTOCONF], [autoconf], [false], [$PATH])
|
AC_PATH_PROG([AUTOCONF], [autoconf], [false], [$PATH])
|
||||||
|
|
||||||
public_syms="malloc_conf malloc_message malloc calloc posix_memalign aligned_alloc realloc free mallocx rallocx xallocx sallocx dallocx sdallocx nallocx mallctl mallctlnametomib mallctlbymib malloc_stats_print malloc_usable_size"
|
|
||||||
|
|
||||||
dnl Check for allocator-related functions that should be wrapped.
|
|
||||||
AC_CHECK_FUNC([memalign],
|
|
||||||
[AC_DEFINE([JEMALLOC_OVERRIDE_MEMALIGN], [ ])
|
|
||||||
public_syms="${public_syms} memalign"])
|
|
||||||
AC_CHECK_FUNC([valloc],
|
|
||||||
[AC_DEFINE([JEMALLOC_OVERRIDE_VALLOC], [ ])
|
|
||||||
public_syms="${public_syms} valloc"])
|
|
||||||
|
|
||||||
dnl Perform no name mangling by default.
|
dnl Perform no name mangling by default.
|
||||||
AC_ARG_WITH([mangling],
|
AC_ARG_WITH([mangling],
|
||||||
[AS_HELP_STRING([--with-mangling=<map>], [Mangle symbols in <map>])],
|
[AS_HELP_STRING([--with-mangling=<map>], [Mangle symbols in <map>])],
|
||||||
@ -814,6 +811,49 @@ AC_ARG_WITH([export],
|
|||||||
fi]
|
fi]
|
||||||
)
|
)
|
||||||
|
|
||||||
|
public_syms="aligned_alloc calloc dallocx free mallctl mallctlbymib mallctlnametomib malloc malloc_conf malloc_message malloc_stats_print malloc_usable_size mallocx nallocx posix_memalign rallocx realloc sallocx sdallocx xallocx"
|
||||||
|
dnl Check for additional platform-specific public API functions.
|
||||||
|
AC_CHECK_FUNC([memalign],
|
||||||
|
[AC_DEFINE([JEMALLOC_OVERRIDE_MEMALIGN], [ ])
|
||||||
|
public_syms="${public_syms} memalign"])
|
||||||
|
AC_CHECK_FUNC([valloc],
|
||||||
|
[AC_DEFINE([JEMALLOC_OVERRIDE_VALLOC], [ ])
|
||||||
|
public_syms="${public_syms} valloc"])
|
||||||
|
|
||||||
|
dnl Check for allocator-related functions that should be wrapped.
|
||||||
|
wrap_syms=
|
||||||
|
if test "x${JEMALLOC_PREFIX}" = "x" ; then
|
||||||
|
AC_CHECK_FUNC([__libc_calloc],
|
||||||
|
[AC_DEFINE([JEMALLOC_OVERRIDE___LIBC_CALLOC], [ ])
|
||||||
|
wrap_syms="${wrap_syms} __libc_calloc"])
|
||||||
|
AC_CHECK_FUNC([__libc_free],
|
||||||
|
[AC_DEFINE([JEMALLOC_OVERRIDE___LIBC_FREE], [ ])
|
||||||
|
wrap_syms="${wrap_syms} __libc_free"])
|
||||||
|
AC_CHECK_FUNC([__libc_malloc],
|
||||||
|
[AC_DEFINE([JEMALLOC_OVERRIDE___LIBC_MALLOC], [ ])
|
||||||
|
wrap_syms="${wrap_syms} __libc_malloc"])
|
||||||
|
AC_CHECK_FUNC([__libc_memalign],
|
||||||
|
[AC_DEFINE([JEMALLOC_OVERRIDE___LIBC_MEMALIGN], [ ])
|
||||||
|
wrap_syms="${wrap_syms} __libc_memalign"])
|
||||||
|
AC_CHECK_FUNC([__libc_realloc],
|
||||||
|
[AC_DEFINE([JEMALLOC_OVERRIDE___LIBC_REALLOC], [ ])
|
||||||
|
wrap_syms="${wrap_syms} __libc_realloc"])
|
||||||
|
AC_CHECK_FUNC([__libc_valloc],
|
||||||
|
[AC_DEFINE([JEMALLOC_OVERRIDE___LIBC_VALLOC], [ ])
|
||||||
|
wrap_syms="${wrap_syms} __libc_valloc"])
|
||||||
|
AC_CHECK_FUNC([__posix_memalign],
|
||||||
|
[AC_DEFINE([JEMALLOC_OVERRIDE___POSIX_MEMALIGN], [ ])
|
||||||
|
wrap_syms="${wrap_syms} __posix_memalign"])
|
||||||
|
fi
|
||||||
|
|
||||||
|
case "${host}" in
|
||||||
|
*-*-mingw* | *-*-cygwin*)
|
||||||
|
wrap_syms="${wrap_syms} tls_callback"
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
dnl Mangle library-private APIs.
|
dnl Mangle library-private APIs.
|
||||||
AC_ARG_WITH([private_namespace],
|
AC_ARG_WITH([private_namespace],
|
||||||
[AS_HELP_STRING([--with-private-namespace=<prefix>], [Prefix to prepend to all library-private APIs])],
|
[AS_HELP_STRING([--with-private-namespace=<prefix>], [Prefix to prepend to all library-private APIs])],
|
||||||
@ -885,8 +925,8 @@ cfgoutputs_tup="${cfgoutputs_tup} test/include/test/jemalloc_test.h:test/include
|
|||||||
|
|
||||||
cfghdrs_in="include/jemalloc/jemalloc_defs.h.in"
|
cfghdrs_in="include/jemalloc/jemalloc_defs.h.in"
|
||||||
cfghdrs_in="${cfghdrs_in} include/jemalloc/internal/jemalloc_internal_defs.h.in"
|
cfghdrs_in="${cfghdrs_in} include/jemalloc/internal/jemalloc_internal_defs.h.in"
|
||||||
|
cfghdrs_in="${cfghdrs_in} include/jemalloc/internal/private_symbols.sh"
|
||||||
cfghdrs_in="${cfghdrs_in} include/jemalloc/internal/private_namespace.sh"
|
cfghdrs_in="${cfghdrs_in} include/jemalloc/internal/private_namespace.sh"
|
||||||
cfghdrs_in="${cfghdrs_in} include/jemalloc/internal/private_symbols.txt"
|
|
||||||
cfghdrs_in="${cfghdrs_in} include/jemalloc/internal/public_namespace.sh"
|
cfghdrs_in="${cfghdrs_in} include/jemalloc/internal/public_namespace.sh"
|
||||||
cfghdrs_in="${cfghdrs_in} include/jemalloc/internal/public_unnamespace.sh"
|
cfghdrs_in="${cfghdrs_in} include/jemalloc/internal/public_unnamespace.sh"
|
||||||
cfghdrs_in="${cfghdrs_in} include/jemalloc/internal/size_classes.sh"
|
cfghdrs_in="${cfghdrs_in} include/jemalloc/internal/size_classes.sh"
|
||||||
@ -897,7 +937,8 @@ cfghdrs_in="${cfghdrs_in} test/include/test/jemalloc_test_defs.h.in"
|
|||||||
|
|
||||||
cfghdrs_out="include/jemalloc/jemalloc_defs.h"
|
cfghdrs_out="include/jemalloc/jemalloc_defs.h"
|
||||||
cfghdrs_out="${cfghdrs_out} include/jemalloc/jemalloc${install_suffix}.h"
|
cfghdrs_out="${cfghdrs_out} include/jemalloc/jemalloc${install_suffix}.h"
|
||||||
cfghdrs_out="${cfghdrs_out} include/jemalloc/internal/private_namespace.h"
|
cfghdrs_out="${cfghdrs_out} include/jemalloc/internal/private_symbols.awk"
|
||||||
|
cfghdrs_out="${cfghdrs_out} include/jemalloc/internal/private_symbols_jet.awk"
|
||||||
cfghdrs_out="${cfghdrs_out} include/jemalloc/internal/public_symbols.txt"
|
cfghdrs_out="${cfghdrs_out} include/jemalloc/internal/public_symbols.txt"
|
||||||
cfghdrs_out="${cfghdrs_out} include/jemalloc/internal/public_namespace.h"
|
cfghdrs_out="${cfghdrs_out} include/jemalloc/internal/public_namespace.h"
|
||||||
cfghdrs_out="${cfghdrs_out} include/jemalloc/internal/public_unnamespace.h"
|
cfghdrs_out="${cfghdrs_out} include/jemalloc/internal/public_unnamespace.h"
|
||||||
@ -1541,6 +1582,7 @@ AC_CHECK_FUNC([_malloc_thread_cleanup],
|
|||||||
)
|
)
|
||||||
if test "x$have__malloc_thread_cleanup" = "x1" ; then
|
if test "x$have__malloc_thread_cleanup" = "x1" ; then
|
||||||
AC_DEFINE([JEMALLOC_MALLOC_THREAD_CLEANUP], [ ])
|
AC_DEFINE([JEMALLOC_MALLOC_THREAD_CLEANUP], [ ])
|
||||||
|
wrap_syms="${wrap_syms} _malloc_thread_cleanup"
|
||||||
force_tls="1"
|
force_tls="1"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@ -1553,6 +1595,7 @@ AC_CHECK_FUNC([_pthread_mutex_init_calloc_cb],
|
|||||||
)
|
)
|
||||||
if test "x$have__pthread_mutex_init_calloc_cb" = "x1" ; then
|
if test "x$have__pthread_mutex_init_calloc_cb" = "x1" ; then
|
||||||
AC_DEFINE([JEMALLOC_MUTEX_INIT_CB])
|
AC_DEFINE([JEMALLOC_MUTEX_INIT_CB])
|
||||||
|
wrap_syms="${wrap_syms} _malloc_prefork _malloc_postfork"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
dnl Disable lazy locking by default.
|
dnl Disable lazy locking by default.
|
||||||
@ -1588,6 +1631,7 @@ if test "x$enable_lazy_lock" = "x1" ; then
|
|||||||
])
|
])
|
||||||
fi
|
fi
|
||||||
AC_DEFINE([JEMALLOC_LAZY_LOCK], [ ])
|
AC_DEFINE([JEMALLOC_LAZY_LOCK], [ ])
|
||||||
|
wrap_syms="${wrap_syms} pthread_create"
|
||||||
fi
|
fi
|
||||||
AC_SUBST([enable_lazy_lock])
|
AC_SUBST([enable_lazy_lock])
|
||||||
|
|
||||||
@ -1870,7 +1914,10 @@ extern void *(* __realloc_hook)(void *ptr, size_t size);
|
|||||||
if (__free_hook && ptr) __free_hook(ptr);
|
if (__free_hook && ptr) __free_hook(ptr);
|
||||||
], [je_cv_glibc_malloc_hook])
|
], [je_cv_glibc_malloc_hook])
|
||||||
if test "x${je_cv_glibc_malloc_hook}" = "xyes" ; then
|
if test "x${je_cv_glibc_malloc_hook}" = "xyes" ; then
|
||||||
AC_DEFINE([JEMALLOC_GLIBC_MALLOC_HOOK], [ ])
|
if test "x${JEMALLOC_PREFIX}" = "x" ; then
|
||||||
|
AC_DEFINE([JEMALLOC_GLIBC_MALLOC_HOOK], [ ])
|
||||||
|
wrap_syms="${wrap_syms} __free_hook __malloc_hook __realloc_hook"
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
JE_COMPILABLE([glibc memalign hook], [
|
JE_COMPILABLE([glibc memalign hook], [
|
||||||
@ -1882,7 +1929,10 @@ extern void *(* __memalign_hook)(size_t alignment, size_t size);
|
|||||||
if (__memalign_hook) ptr = __memalign_hook(16, 7);
|
if (__memalign_hook) ptr = __memalign_hook(16, 7);
|
||||||
], [je_cv_glibc_memalign_hook])
|
], [je_cv_glibc_memalign_hook])
|
||||||
if test "x${je_cv_glibc_memalign_hook}" = "xyes" ; then
|
if test "x${je_cv_glibc_memalign_hook}" = "xyes" ; then
|
||||||
AC_DEFINE([JEMALLOC_GLIBC_MEMALIGN_HOOK], [ ])
|
if test "x${JEMALLOC_PREFIX}" = "x" ; then
|
||||||
|
AC_DEFINE([JEMALLOC_GLIBC_MEMALIGN_HOOK], [ ])
|
||||||
|
wrap_syms="${wrap_syms} __memalign_hook"
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
JE_COMPILABLE([pthreads adaptive mutexes], [
|
JE_COMPILABLE([pthreads adaptive mutexes], [
|
||||||
@ -1904,13 +1954,6 @@ AC_HEADER_STDBOOL
|
|||||||
dnl ============================================================================
|
dnl ============================================================================
|
||||||
dnl Define commands that generate output files.
|
dnl Define commands that generate output files.
|
||||||
|
|
||||||
AC_CONFIG_COMMANDS([include/jemalloc/internal/private_namespace.h], [
|
|
||||||
mkdir -p "${objroot}include/jemalloc/internal"
|
|
||||||
"${srcdir}/include/jemalloc/internal/private_namespace.sh" "${srcdir}/include/jemalloc/internal/private_symbols.txt" > "${objroot}include/jemalloc/internal/private_namespace.h"
|
|
||||||
], [
|
|
||||||
srcdir="${srcdir}"
|
|
||||||
objroot="${objroot}"
|
|
||||||
])
|
|
||||||
AC_CONFIG_COMMANDS([include/jemalloc/internal/public_symbols.txt], [
|
AC_CONFIG_COMMANDS([include/jemalloc/internal/public_symbols.txt], [
|
||||||
f="${objroot}include/jemalloc/internal/public_symbols.txt"
|
f="${objroot}include/jemalloc/internal/public_symbols.txt"
|
||||||
mkdir -p "${objroot}include/jemalloc/internal"
|
mkdir -p "${objroot}include/jemalloc/internal"
|
||||||
@ -1934,6 +1977,31 @@ AC_CONFIG_COMMANDS([include/jemalloc/internal/public_symbols.txt], [
|
|||||||
public_syms="${public_syms}"
|
public_syms="${public_syms}"
|
||||||
JEMALLOC_PREFIX="${JEMALLOC_PREFIX}"
|
JEMALLOC_PREFIX="${JEMALLOC_PREFIX}"
|
||||||
])
|
])
|
||||||
|
AC_CONFIG_COMMANDS([include/jemalloc/internal/private_symbols.awk], [
|
||||||
|
f="${objroot}include/jemalloc/internal/private_symbols.awk"
|
||||||
|
mkdir -p "${objroot}include/jemalloc/internal"
|
||||||
|
export_syms=`for sym in ${public_syms}; do echo "${JEMALLOC_PREFIX}${sym}"; done; for sym in ${wrap_syms}; do echo "${sym}"; done;`
|
||||||
|
"${srcdir}/include/jemalloc/internal/private_symbols.sh" "${SYM_PREFIX}" ${export_syms} > "${objroot}include/jemalloc/internal/private_symbols.awk"
|
||||||
|
], [
|
||||||
|
srcdir="${srcdir}"
|
||||||
|
objroot="${objroot}"
|
||||||
|
public_syms="${public_syms}"
|
||||||
|
wrap_syms="${wrap_syms}"
|
||||||
|
SYM_PREFIX="${SYM_PREFIX}"
|
||||||
|
JEMALLOC_PREFIX="${JEMALLOC_PREFIX}"
|
||||||
|
])
|
||||||
|
AC_CONFIG_COMMANDS([include/jemalloc/internal/private_symbols_jet.awk], [
|
||||||
|
f="${objroot}include/jemalloc/internal/private_symbols_jet.awk"
|
||||||
|
mkdir -p "${objroot}include/jemalloc/internal"
|
||||||
|
export_syms=`for sym in ${public_syms}; do echo "jet_${sym}"; done; for sym in ${wrap_syms}; do echo "${sym}"; done;`
|
||||||
|
"${srcdir}/include/jemalloc/internal/private_symbols.sh" "${SYM_PREFIX}" ${export_syms} > "${objroot}include/jemalloc/internal/private_symbols_jet.awk"
|
||||||
|
], [
|
||||||
|
srcdir="${srcdir}"
|
||||||
|
objroot="${objroot}"
|
||||||
|
public_syms="${public_syms}"
|
||||||
|
wrap_syms="${wrap_syms}"
|
||||||
|
SYM_PREFIX="${SYM_PREFIX}"
|
||||||
|
])
|
||||||
AC_CONFIG_COMMANDS([include/jemalloc/internal/public_namespace.h], [
|
AC_CONFIG_COMMANDS([include/jemalloc/internal/public_namespace.h], [
|
||||||
mkdir -p "${objroot}include/jemalloc/internal"
|
mkdir -p "${objroot}include/jemalloc/internal"
|
||||||
"${srcdir}/include/jemalloc/internal/public_namespace.sh" "${objroot}include/jemalloc/internal/public_symbols.txt" > "${objroot}include/jemalloc/internal/public_namespace.h"
|
"${srcdir}/include/jemalloc/internal/public_namespace.sh" "${objroot}include/jemalloc/internal/public_symbols.txt" > "${objroot}include/jemalloc/internal/public_namespace.h"
|
||||||
|
@ -8,6 +8,18 @@
|
|||||||
#undef JEMALLOC_PREFIX
|
#undef JEMALLOC_PREFIX
|
||||||
#undef JEMALLOC_CPREFIX
|
#undef JEMALLOC_CPREFIX
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Define overrides for non-standard allocator-related functions if they are
|
||||||
|
* present on the system.
|
||||||
|
*/
|
||||||
|
#undef JEMALLOC_OVERRIDE___LIBC_CALLOC
|
||||||
|
#undef JEMALLOC_OVERRIDE___LIBC_FREE
|
||||||
|
#undef JEMALLOC_OVERRIDE___LIBC_MALLOC
|
||||||
|
#undef JEMALLOC_OVERRIDE___LIBC_MEMALIGN
|
||||||
|
#undef JEMALLOC_OVERRIDE___LIBC_REALLOC
|
||||||
|
#undef JEMALLOC_OVERRIDE___LIBC_VALLOC
|
||||||
|
#undef JEMALLOC_OVERRIDE___POSIX_MEMALIGN
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* JEMALLOC_PRIVATE_NAMESPACE is used as a prefix for all library-private APIs.
|
* JEMALLOC_PRIVATE_NAMESPACE is used as a prefix for all library-private APIs.
|
||||||
* For shared libraries, symbol visibility mechanisms prevent these symbols
|
* For shared libraries, symbol visibility mechanisms prevent these symbols
|
||||||
|
@ -38,7 +38,13 @@
|
|||||||
* want the inclusion of hooks to happen early, so that we hook as much as
|
* want the inclusion of hooks to happen early, so that we hook as much as
|
||||||
* possible.
|
* possible.
|
||||||
*/
|
*/
|
||||||
#include "jemalloc/internal/private_namespace.h"
|
#ifndef JEMALLOC_NO_PRIVATE_NAMESPACE
|
||||||
|
# ifndef JEMALLOC_JET
|
||||||
|
# include "jemalloc/internal/private_namespace.h"
|
||||||
|
# else
|
||||||
|
# include "jemalloc/internal/private_namespace_jet.h"
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
#include "jemalloc/internal/hooks.h"
|
#include "jemalloc/internal/hooks.h"
|
||||||
|
|
||||||
static const bool config_debug =
|
static const bool config_debug =
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
|
|
||||||
for symbol in `cat $1` ; do
|
for symbol in `cat "$@"` ; do
|
||||||
echo "#define ${symbol} JEMALLOC_N(${symbol})"
|
echo "#define ${symbol} JEMALLOC_N(${symbol})"
|
||||||
done
|
done
|
||||||
|
51
include/jemalloc/internal/private_symbols.sh
Executable file
51
include/jemalloc/internal/private_symbols.sh
Executable file
@ -0,0 +1,51 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
#
|
||||||
|
# Generate private_symbols[_jet].awk.
|
||||||
|
#
|
||||||
|
# Usage: private_symbols.sh <sym_prefix> <sym>*
|
||||||
|
#
|
||||||
|
# <sym_prefix> is typically "" or "_".
|
||||||
|
|
||||||
|
sym_prefix=$1
|
||||||
|
shift
|
||||||
|
|
||||||
|
cat <<EOF
|
||||||
|
#!/usr/bin/env awk -f
|
||||||
|
|
||||||
|
BEGIN {
|
||||||
|
sym_prefix = "${sym_prefix}"
|
||||||
|
split("\\
|
||||||
|
EOF
|
||||||
|
|
||||||
|
for public_sym in "$@" ; do
|
||||||
|
cat <<EOF
|
||||||
|
${sym_prefix}${public_sym} \\
|
||||||
|
EOF
|
||||||
|
done
|
||||||
|
|
||||||
|
cat <<"EOF"
|
||||||
|
", exported_symbol_names)
|
||||||
|
# Store exported symbol names as keys in exported_symbols.
|
||||||
|
for (i in exported_symbol_names) {
|
||||||
|
exported_symbols[exported_symbol_names[i]] = 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
# Process 'nm -a <c_source.o>' output.
|
||||||
|
#
|
||||||
|
# Handle lines like:
|
||||||
|
# 0000000000000008 D opt_junk
|
||||||
|
# 0000000000007574 T malloc_initialized
|
||||||
|
(NF == 3 && $2 ~ /^[ABCDGRSTVW]$/ && !($3 in exported_symbols) && $3 ~ /^[A-Za-z0-9_]+$/) {
|
||||||
|
print substr($3, 1+length(sym_prefix), length($3)-length(sym_prefix))
|
||||||
|
}
|
||||||
|
|
||||||
|
# Process 'dumpbin /SYMBOLS <c_source.obj>' output.
|
||||||
|
#
|
||||||
|
# Handle lines like:
|
||||||
|
# 353 00008098 SECT4 notype External | opt_junk
|
||||||
|
# 3F1 00000000 SECT7 notype () External | malloc_initialized
|
||||||
|
($3 ~ /^SECT[0-9]+/ && $(NF-2) == "External" && !($NF in exported_symbols)) {
|
||||||
|
print $NF
|
||||||
|
}
|
||||||
|
EOF
|
@ -1,609 +0,0 @@
|
|||||||
a0dalloc
|
|
||||||
a0malloc
|
|
||||||
arena_aalloc
|
|
||||||
arena_alloc_junk_small
|
|
||||||
arena_basic_stats_merge
|
|
||||||
arena_bin_index
|
|
||||||
arena_bin_info
|
|
||||||
arena_boot
|
|
||||||
arena_choose
|
|
||||||
arena_choose_hard
|
|
||||||
arena_choose_impl
|
|
||||||
arena_cleanup
|
|
||||||
arena_dalloc
|
|
||||||
arena_dalloc_bin_junked_locked
|
|
||||||
arena_dalloc_junk_small
|
|
||||||
arena_dalloc_no_tcache
|
|
||||||
arena_dalloc_promoted
|
|
||||||
arena_dalloc_small
|
|
||||||
arena_decay
|
|
||||||
arena_decay_tick
|
|
||||||
arena_decay_ticks
|
|
||||||
arena_dirty_decay_time_default_get
|
|
||||||
arena_dirty_decay_time_default_set
|
|
||||||
arena_dirty_decay_time_get
|
|
||||||
arena_dirty_decay_time_set
|
|
||||||
arena_muzzy_decay_time_default_get
|
|
||||||
arena_muzzy_decay_time_default_set
|
|
||||||
arena_muzzy_decay_time_get
|
|
||||||
arena_muzzy_decay_time_set
|
|
||||||
arena_destroy
|
|
||||||
arena_dss_prec_get
|
|
||||||
arena_dss_prec_set
|
|
||||||
arena_extent_alloc_large
|
|
||||||
arena_extent_dalloc_large_prep
|
|
||||||
arena_extent_ralloc_large_expand
|
|
||||||
arena_extent_ralloc_large_shrink
|
|
||||||
arena_extent_sn_next
|
|
||||||
arena_extents_dirty_dalloc
|
|
||||||
arena_get
|
|
||||||
arena_ichoose
|
|
||||||
arena_ind_get
|
|
||||||
arena_init
|
|
||||||
arena_internal_add
|
|
||||||
arena_internal_get
|
|
||||||
arena_internal_sub
|
|
||||||
arena_malloc
|
|
||||||
arena_malloc_hard
|
|
||||||
arena_migrate
|
|
||||||
arena_new
|
|
||||||
arena_nthreads_dec
|
|
||||||
arena_nthreads_get
|
|
||||||
arena_nthreads_inc
|
|
||||||
arena_palloc
|
|
||||||
arena_postfork_child
|
|
||||||
arena_postfork_parent
|
|
||||||
arena_prefork0
|
|
||||||
arena_prefork1
|
|
||||||
arena_prefork2
|
|
||||||
arena_prefork3
|
|
||||||
arena_prefork4
|
|
||||||
arena_prefork5
|
|
||||||
arena_prefork6
|
|
||||||
arena_prof_accum
|
|
||||||
arena_prof_promote
|
|
||||||
arena_prof_tctx_get
|
|
||||||
arena_prof_tctx_reset
|
|
||||||
arena_prof_tctx_set
|
|
||||||
arena_ralloc
|
|
||||||
arena_ralloc_no_move
|
|
||||||
arena_reset
|
|
||||||
arena_salloc
|
|
||||||
arena_sdalloc
|
|
||||||
arena_sdalloc_no_tcache
|
|
||||||
arena_set
|
|
||||||
arena_slab_regind
|
|
||||||
arena_stats_init
|
|
||||||
arena_stats_mapped_add
|
|
||||||
arena_stats_merge
|
|
||||||
arena_tcache_fill_small
|
|
||||||
arena_tdata_get
|
|
||||||
arena_tdata_get_hard
|
|
||||||
arena_vsalloc
|
|
||||||
arenas
|
|
||||||
arenas_tdata_cleanup
|
|
||||||
b0get
|
|
||||||
base_alloc
|
|
||||||
base_boot
|
|
||||||
base_delete
|
|
||||||
base_extent_alloc
|
|
||||||
base_extent_hooks_get
|
|
||||||
base_extent_hooks_set
|
|
||||||
base_ind_get
|
|
||||||
base_new
|
|
||||||
base_postfork_child
|
|
||||||
base_postfork_parent
|
|
||||||
base_prefork
|
|
||||||
base_stats_get
|
|
||||||
bitmap_ffu
|
|
||||||
bitmap_full
|
|
||||||
bitmap_get
|
|
||||||
bitmap_info_init
|
|
||||||
bitmap_init
|
|
||||||
bitmap_set
|
|
||||||
bitmap_sfu
|
|
||||||
bitmap_size
|
|
||||||
bitmap_unset
|
|
||||||
bootstrap_calloc
|
|
||||||
bootstrap_free
|
|
||||||
bootstrap_malloc
|
|
||||||
bt_init
|
|
||||||
bt2gctx_mtx
|
|
||||||
buferror
|
|
||||||
ckh_count
|
|
||||||
ckh_delete
|
|
||||||
ckh_insert
|
|
||||||
ckh_iter
|
|
||||||
ckh_new
|
|
||||||
ckh_pointer_hash
|
|
||||||
ckh_pointer_keycomp
|
|
||||||
ckh_remove
|
|
||||||
ckh_search
|
|
||||||
ckh_string_hash
|
|
||||||
ckh_string_keycomp
|
|
||||||
ctl_boot
|
|
||||||
ctl_bymib
|
|
||||||
ctl_byname
|
|
||||||
ctl_nametomib
|
|
||||||
ctl_postfork_child
|
|
||||||
ctl_postfork_parent
|
|
||||||
ctl_prefork
|
|
||||||
decay_ticker_get
|
|
||||||
dss_prec_names
|
|
||||||
extent_ad_comp
|
|
||||||
extent_addr_get
|
|
||||||
extent_addr_randomize
|
|
||||||
extent_addr_set
|
|
||||||
extent_alloc
|
|
||||||
extent_alloc_cache
|
|
||||||
extent_alloc_dss
|
|
||||||
extent_alloc_mmap
|
|
||||||
extent_alloc_wrapper
|
|
||||||
extent_arena_get
|
|
||||||
extent_arena_set
|
|
||||||
extent_base_get
|
|
||||||
extent_before_get
|
|
||||||
extent_boot
|
|
||||||
extent_binit
|
|
||||||
extent_bsize_get
|
|
||||||
extent_bsize_set
|
|
||||||
extent_commit_wrapper
|
|
||||||
extent_committed_get
|
|
||||||
extent_committed_set
|
|
||||||
extent_dalloc
|
|
||||||
extent_dalloc_gap
|
|
||||||
extent_dalloc_mmap
|
|
||||||
extent_dalloc_wrapper
|
|
||||||
extent_decommit_wrapper
|
|
||||||
extent_destroy_wrapper
|
|
||||||
extent_dss_boot
|
|
||||||
extent_dss_mergeable
|
|
||||||
extent_dss_prec_get
|
|
||||||
extent_dss_prec_set
|
|
||||||
extent_ead_comp
|
|
||||||
extent_esn_comp
|
|
||||||
extent_esn_get
|
|
||||||
extent_esn_set
|
|
||||||
extent_esnead_comp
|
|
||||||
extent_heap_empty
|
|
||||||
extent_heap_first
|
|
||||||
extent_heap_insert
|
|
||||||
extent_heap_new
|
|
||||||
extent_heap_remove
|
|
||||||
extent_heap_remove_first
|
|
||||||
extent_hooks_default
|
|
||||||
extent_hooks_get
|
|
||||||
extent_hooks_set
|
|
||||||
extent_in_dss
|
|
||||||
extent_init
|
|
||||||
extent_last_get
|
|
||||||
extent_list_append
|
|
||||||
extent_list_first
|
|
||||||
extent_list_init
|
|
||||||
extent_list_last
|
|
||||||
extent_list_remove
|
|
||||||
extent_list_replace
|
|
||||||
extent_merge_wrapper
|
|
||||||
extent_nfree_dec
|
|
||||||
extent_nfree_get
|
|
||||||
extent_nfree_inc
|
|
||||||
extent_nfree_set
|
|
||||||
extent_past_get
|
|
||||||
extent_prof_tctx_get
|
|
||||||
extent_prof_tctx_set
|
|
||||||
extent_purge_forced_wrapper
|
|
||||||
extent_purge_lazy_wrapper
|
|
||||||
extent_size_get
|
|
||||||
extent_size_quantize_ceil
|
|
||||||
extent_size_quantize_floor
|
|
||||||
extent_size_set
|
|
||||||
extent_slab_data_get
|
|
||||||
extent_slab_data_get_const
|
|
||||||
extent_slab_get
|
|
||||||
extent_slab_set
|
|
||||||
extent_sn_comp
|
|
||||||
extent_sn_get
|
|
||||||
extent_sn_set
|
|
||||||
extent_snad_comp
|
|
||||||
extent_split_wrapper
|
|
||||||
extent_state_get
|
|
||||||
extent_state_set
|
|
||||||
extent_szind_get
|
|
||||||
extent_szind_get_maybe_invalid
|
|
||||||
extent_szind_set
|
|
||||||
extent_usize_get
|
|
||||||
extent_zeroed_get
|
|
||||||
extent_zeroed_set
|
|
||||||
extents_alloc
|
|
||||||
extents_dalloc
|
|
||||||
extents_evict
|
|
||||||
extents_init
|
|
||||||
extents_npages_get
|
|
||||||
extents_prefork
|
|
||||||
extents_postfork_child
|
|
||||||
extents_postfork_parent
|
|
||||||
extents_rtree
|
|
||||||
extents_state_get
|
|
||||||
ffs_llu
|
|
||||||
ffs_lu
|
|
||||||
ffs_u
|
|
||||||
ffs_u32
|
|
||||||
ffs_u64
|
|
||||||
ffs_zu
|
|
||||||
get_errno
|
|
||||||
hash
|
|
||||||
hash_fmix_32
|
|
||||||
hash_fmix_64
|
|
||||||
hash_get_block_32
|
|
||||||
hash_get_block_64
|
|
||||||
hash_rotl_32
|
|
||||||
hash_rotl_64
|
|
||||||
hash_x64_128
|
|
||||||
hash_x86_128
|
|
||||||
hash_x86_32
|
|
||||||
hooks_arena_new_hook
|
|
||||||
hooks_libc_hook
|
|
||||||
iaalloc
|
|
||||||
ialloc
|
|
||||||
iallocztm
|
|
||||||
iarena_cleanup
|
|
||||||
idalloc
|
|
||||||
idalloctm
|
|
||||||
iealloc
|
|
||||||
index2size
|
|
||||||
index2size_compute
|
|
||||||
index2size_lookup
|
|
||||||
index2size_tab
|
|
||||||
ipalloc
|
|
||||||
ipalloct
|
|
||||||
ipallocztm
|
|
||||||
iralloc
|
|
||||||
iralloct
|
|
||||||
iralloct_realign
|
|
||||||
isalloc
|
|
||||||
isdalloct
|
|
||||||
isthreaded
|
|
||||||
ivsalloc
|
|
||||||
ixalloc
|
|
||||||
jemalloc_postfork_child
|
|
||||||
jemalloc_postfork_parent
|
|
||||||
jemalloc_prefork
|
|
||||||
large_dalloc
|
|
||||||
large_dalloc_finish
|
|
||||||
large_dalloc_junk
|
|
||||||
large_dalloc_maybe_junk
|
|
||||||
large_dalloc_prep_junked_locked
|
|
||||||
large_malloc
|
|
||||||
large_palloc
|
|
||||||
large_prof_tctx_get
|
|
||||||
large_prof_tctx_reset
|
|
||||||
large_prof_tctx_set
|
|
||||||
large_ralloc
|
|
||||||
large_ralloc_no_move
|
|
||||||
large_salloc
|
|
||||||
lg_floor
|
|
||||||
lg_prof_sample
|
|
||||||
malloc_cprintf
|
|
||||||
malloc_getcpu
|
|
||||||
malloc_initialized
|
|
||||||
malloc_mutex_prof_data_reset
|
|
||||||
malloc_mutex_assert_not_owner
|
|
||||||
malloc_mutex_assert_owner
|
|
||||||
malloc_mutex_boot
|
|
||||||
malloc_mutex_init
|
|
||||||
malloc_mutex_lock
|
|
||||||
malloc_mutex_lock_final
|
|
||||||
malloc_mutex_lock_slow
|
|
||||||
malloc_mutex_postfork_child
|
|
||||||
malloc_mutex_postfork_parent
|
|
||||||
malloc_mutex_prefork
|
|
||||||
malloc_mutex_trylock
|
|
||||||
malloc_mutex_trylock_final
|
|
||||||
malloc_mutex_unlock
|
|
||||||
malloc_printf
|
|
||||||
malloc_slow
|
|
||||||
malloc_snprintf
|
|
||||||
malloc_strtoumax
|
|
||||||
malloc_tsd_boot0
|
|
||||||
malloc_tsd_boot1
|
|
||||||
malloc_tsd_cleanup_register
|
|
||||||
malloc_tsd_dalloc
|
|
||||||
malloc_tsd_malloc
|
|
||||||
malloc_vcprintf
|
|
||||||
malloc_vsnprintf
|
|
||||||
malloc_write
|
|
||||||
mutex_owner_stats_update
|
|
||||||
narenas_auto
|
|
||||||
narenas_total_get
|
|
||||||
ncpus
|
|
||||||
nhbins
|
|
||||||
nstime_add
|
|
||||||
nstime_compare
|
|
||||||
nstime_copy
|
|
||||||
nstime_divide
|
|
||||||
nstime_idivide
|
|
||||||
nstime_imultiply
|
|
||||||
nstime_init
|
|
||||||
nstime_init2
|
|
||||||
nstime_monotonic
|
|
||||||
nstime_msec
|
|
||||||
nstime_ns
|
|
||||||
nstime_nsec
|
|
||||||
nstime_sec
|
|
||||||
nstime_subtract
|
|
||||||
nstime_update
|
|
||||||
opt_abort
|
|
||||||
opt_dirty_decay_time
|
|
||||||
opt_muzzy_decay_time
|
|
||||||
opt_dss
|
|
||||||
opt_junk
|
|
||||||
opt_junk_alloc
|
|
||||||
opt_junk_free
|
|
||||||
opt_lg_prof_interval
|
|
||||||
opt_lg_prof_sample
|
|
||||||
opt_lg_tcache_max
|
|
||||||
opt_narenas
|
|
||||||
opt_prof
|
|
||||||
opt_prof_accum
|
|
||||||
opt_prof_active
|
|
||||||
opt_prof_final
|
|
||||||
opt_prof_gdump
|
|
||||||
opt_prof_leak
|
|
||||||
opt_prof_prefix
|
|
||||||
opt_prof_thread_active_init
|
|
||||||
opt_stats_print
|
|
||||||
opt_tcache
|
|
||||||
opt_utrace
|
|
||||||
opt_xmalloc
|
|
||||||
opt_zero
|
|
||||||
pages_boot
|
|
||||||
pages_commit
|
|
||||||
pages_decommit
|
|
||||||
pages_huge
|
|
||||||
pages_map
|
|
||||||
pages_nohuge
|
|
||||||
pages_purge_forced
|
|
||||||
pages_purge_lazy
|
|
||||||
pages_unmap
|
|
||||||
percpu_arena_choose
|
|
||||||
percpu_arena_ind_limit
|
|
||||||
percpu_arena_update
|
|
||||||
pind2sz
|
|
||||||
pind2sz_compute
|
|
||||||
pind2sz_lookup
|
|
||||||
pind2sz_tab
|
|
||||||
pow2_ceil_u32
|
|
||||||
pow2_ceil_u64
|
|
||||||
pow2_ceil_zu
|
|
||||||
prng_lg_range_u32
|
|
||||||
prng_lg_range_u64
|
|
||||||
prng_lg_range_zu
|
|
||||||
prng_range_u32
|
|
||||||
prng_range_u64
|
|
||||||
prng_range_zu
|
|
||||||
prng_state_next_u32
|
|
||||||
prng_state_next_u64
|
|
||||||
prng_state_next_zu
|
|
||||||
prof_accum_add
|
|
||||||
prof_accum_cancel
|
|
||||||
prof_accum_init
|
|
||||||
prof_active
|
|
||||||
prof_active_get
|
|
||||||
prof_active_get_unlocked
|
|
||||||
prof_active_set
|
|
||||||
prof_alloc_prep
|
|
||||||
prof_alloc_rollback
|
|
||||||
prof_backtrace
|
|
||||||
prof_boot0
|
|
||||||
prof_boot1
|
|
||||||
prof_boot2
|
|
||||||
prof_bt_count
|
|
||||||
prof_cnt_all
|
|
||||||
prof_dump_header
|
|
||||||
prof_dump_open
|
|
||||||
prof_free
|
|
||||||
prof_free_sampled_object
|
|
||||||
prof_gdump
|
|
||||||
prof_gdump_get
|
|
||||||
prof_gdump_get_unlocked
|
|
||||||
prof_gdump_set
|
|
||||||
prof_gdump_val
|
|
||||||
prof_idump
|
|
||||||
prof_interval
|
|
||||||
prof_lookup
|
|
||||||
prof_malloc
|
|
||||||
prof_malloc_sample_object
|
|
||||||
prof_mdump
|
|
||||||
prof_postfork_child
|
|
||||||
prof_postfork_parent
|
|
||||||
prof_prefork0
|
|
||||||
prof_prefork1
|
|
||||||
prof_realloc
|
|
||||||
prof_reset
|
|
||||||
prof_sample_accum_update
|
|
||||||
prof_sample_threshold_update
|
|
||||||
prof_tctx_get
|
|
||||||
prof_tctx_reset
|
|
||||||
prof_tctx_set
|
|
||||||
prof_tdata_cleanup
|
|
||||||
prof_tdata_count
|
|
||||||
prof_tdata_get
|
|
||||||
prof_tdata_init
|
|
||||||
prof_tdata_reinit
|
|
||||||
prof_thread_active_get
|
|
||||||
prof_thread_active_init_get
|
|
||||||
prof_thread_active_init_set
|
|
||||||
prof_thread_active_set
|
|
||||||
prof_thread_name_get
|
|
||||||
prof_thread_name_set
|
|
||||||
psz2ind
|
|
||||||
psz2u
|
|
||||||
rtree_clear
|
|
||||||
rtree_ctx_data_init
|
|
||||||
rtree_delete
|
|
||||||
rtree_extent_read
|
|
||||||
rtree_extent_szind_read
|
|
||||||
rtree_leaf_alloc
|
|
||||||
rtree_leaf_dalloc
|
|
||||||
rtree_leaf_elm_acquire
|
|
||||||
rtree_leaf_elm_bits_extent_get
|
|
||||||
rtree_leaf_elm_bits_locked_get
|
|
||||||
rtree_leaf_elm_bits_read
|
|
||||||
rtree_leaf_elm_bits_slab_get
|
|
||||||
rtree_leaf_elm_bits_szind_get
|
|
||||||
rtree_leaf_elm_extent_read
|
|
||||||
rtree_leaf_elm_extent_write
|
|
||||||
rtree_leaf_elm_lookup
|
|
||||||
rtree_leaf_elm_lookup_hard
|
|
||||||
rtree_leaf_elm_release
|
|
||||||
rtree_leaf_elm_slab_read
|
|
||||||
rtree_leaf_elm_slab_write
|
|
||||||
rtree_leaf_elm_szind_read
|
|
||||||
rtree_leaf_elm_szind_slab_update
|
|
||||||
rtree_leaf_elm_szind_write
|
|
||||||
rtree_leaf_elm_witness_access
|
|
||||||
rtree_leaf_elm_witness_acquire
|
|
||||||
rtree_leaf_elm_witness_release
|
|
||||||
rtree_leaf_elm_write
|
|
||||||
rtree_leafkey
|
|
||||||
rtree_new
|
|
||||||
rtree_node_alloc
|
|
||||||
rtree_node_dalloc
|
|
||||||
rtree_read
|
|
||||||
rtree_subkey
|
|
||||||
rtree_szind_read
|
|
||||||
rtree_szind_slab_read
|
|
||||||
rtree_szind_slab_update
|
|
||||||
rtree_write
|
|
||||||
s2u
|
|
||||||
s2u_compute
|
|
||||||
s2u_lookup
|
|
||||||
sa2u
|
|
||||||
set_errno
|
|
||||||
size2index
|
|
||||||
size2index_compute
|
|
||||||
size2index_lookup
|
|
||||||
size2index_tab
|
|
||||||
spin_adaptive
|
|
||||||
stats_print
|
|
||||||
tcache_alloc_easy
|
|
||||||
tcache_alloc_large
|
|
||||||
tcache_alloc_small
|
|
||||||
tcache_alloc_small_hard
|
|
||||||
tcache_arena_associate
|
|
||||||
tcache_arena_reassociate
|
|
||||||
tcache_bin_flush_large
|
|
||||||
tcache_bin_flush_small
|
|
||||||
tcache_bin_info
|
|
||||||
tcache_boot
|
|
||||||
tcache_cleanup
|
|
||||||
tcache_create_explicit
|
|
||||||
tcache_dalloc_large
|
|
||||||
tcache_dalloc_small
|
|
||||||
tcache_data_init
|
|
||||||
tcache_enabled_get
|
|
||||||
tcache_enabled_set
|
|
||||||
tcache_event
|
|
||||||
tcache_event_hard
|
|
||||||
tcache_flush
|
|
||||||
tcache_get
|
|
||||||
tcache_maxclass
|
|
||||||
tcache_prefork
|
|
||||||
tcache_postfork_child
|
|
||||||
tcache_postfork_parent
|
|
||||||
tcache_salloc
|
|
||||||
tcache_stats_merge
|
|
||||||
tcaches
|
|
||||||
tcaches_create
|
|
||||||
tcaches_destroy
|
|
||||||
tcaches_flush
|
|
||||||
tcaches_get
|
|
||||||
ticker_copy
|
|
||||||
ticker_init
|
|
||||||
ticker_read
|
|
||||||
ticker_tick
|
|
||||||
ticker_ticks
|
|
||||||
tsd_arena_get
|
|
||||||
tsd_arena_set
|
|
||||||
tsd_arenap_get
|
|
||||||
tsd_arenas_tdata_bypassp_get
|
|
||||||
tsd_arenas_tdata_get
|
|
||||||
tsd_arenas_tdata_set
|
|
||||||
tsd_arenas_tdatap_get
|
|
||||||
tsd_boot
|
|
||||||
tsd_boot0
|
|
||||||
tsd_boot1
|
|
||||||
tsd_booted
|
|
||||||
tsd_booted_get
|
|
||||||
tsd_cleanup
|
|
||||||
tsd_cleanup_wrapper
|
|
||||||
tsd_fetch
|
|
||||||
tsd_fetch_impl
|
|
||||||
tsd_fetch_slow
|
|
||||||
tsd_get
|
|
||||||
tsd_get_allocates
|
|
||||||
tsd_iarena_get
|
|
||||||
tsd_iarena_set
|
|
||||||
tsd_iarenap_get
|
|
||||||
tsd_initialized
|
|
||||||
tsd_init_check_recursion
|
|
||||||
tsd_init_finish
|
|
||||||
tsd_init_head
|
|
||||||
tsd_narenas_tdata_get
|
|
||||||
tsd_narenas_tdata_set
|
|
||||||
tsd_narenas_tdatap_get
|
|
||||||
tsd_reentrancy_level_get
|
|
||||||
tsd_reentrancy_level_set
|
|
||||||
tsd_reentrancy_levelp_get
|
|
||||||
tsd_slow_update
|
|
||||||
tsd_wrapper_get
|
|
||||||
tsd_wrapper_set
|
|
||||||
tsd_nominal
|
|
||||||
tsd_prof_tdata_get
|
|
||||||
tsd_prof_tdata_set
|
|
||||||
tsd_prof_tdatap_get
|
|
||||||
tsd_rtree_ctx
|
|
||||||
tsd_rtree_ctxp_get
|
|
||||||
tsd_rtree_leaf_elm_witnessesp_get
|
|
||||||
tsd_set
|
|
||||||
tsd_tcache_enabled_get
|
|
||||||
tsd_tcache_enabled_set
|
|
||||||
tsd_tcache_enabledp_get
|
|
||||||
tsd_tcache_get
|
|
||||||
tsd_tcache_set
|
|
||||||
tsd_tcachep_get
|
|
||||||
tsd_thread_allocated_get
|
|
||||||
tsd_thread_allocated_set
|
|
||||||
tsd_thread_allocatedp_get
|
|
||||||
tsd_thread_deallocated_get
|
|
||||||
tsd_thread_deallocated_set
|
|
||||||
tsd_thread_deallocatedp_get
|
|
||||||
tsd_tls
|
|
||||||
tsd_tsd
|
|
||||||
tsd_tsdn
|
|
||||||
tsd_witness_fork_get
|
|
||||||
tsd_witness_fork_set
|
|
||||||
tsd_witness_forkp_get
|
|
||||||
tsd_witnessesp_get
|
|
||||||
tsdn_fetch
|
|
||||||
tsdn_null
|
|
||||||
tsdn_rtree_ctx
|
|
||||||
tsdn_tsd
|
|
||||||
witness_assert_depth
|
|
||||||
witness_assert_depth_to_rank
|
|
||||||
witness_assert_lockless
|
|
||||||
witness_assert_not_owner
|
|
||||||
witness_assert_owner
|
|
||||||
witness_depth_error
|
|
||||||
witness_init
|
|
||||||
witness_lock
|
|
||||||
witness_lock_error
|
|
||||||
witness_not_owner_error
|
|
||||||
witness_owner
|
|
||||||
witness_owner_error
|
|
||||||
witness_postfork_child
|
|
||||||
witness_postfork_parent
|
|
||||||
witness_prefork
|
|
||||||
witness_unlock
|
|
||||||
witnesses_cleanup
|
|
||||||
zone_register
|
|
@ -2299,33 +2299,44 @@ je_valloc(size_t size) {
|
|||||||
JEMALLOC_EXPORT void (*__free_hook)(void *ptr) = je_free;
|
JEMALLOC_EXPORT void (*__free_hook)(void *ptr) = je_free;
|
||||||
JEMALLOC_EXPORT void *(*__malloc_hook)(size_t size) = je_malloc;
|
JEMALLOC_EXPORT void *(*__malloc_hook)(size_t size) = je_malloc;
|
||||||
JEMALLOC_EXPORT void *(*__realloc_hook)(void *ptr, size_t size) = je_realloc;
|
JEMALLOC_EXPORT void *(*__realloc_hook)(void *ptr, size_t size) = je_realloc;
|
||||||
# ifdef JEMALLOC_GLIBC_MEMALIGN_HOOK
|
# ifdef JEMALLOC_GLIBC_MEMALIGN_HOOK
|
||||||
JEMALLOC_EXPORT void *(*__memalign_hook)(size_t alignment, size_t size) =
|
JEMALLOC_EXPORT void *(*__memalign_hook)(size_t alignment, size_t size) =
|
||||||
je_memalign;
|
je_memalign;
|
||||||
# endif
|
# endif
|
||||||
|
|
||||||
#ifdef CPU_COUNT
|
# ifdef CPU_COUNT
|
||||||
/*
|
/*
|
||||||
* To enable static linking with glibc, the libc specific malloc interface must
|
* To enable static linking with glibc, the libc specific malloc interface must
|
||||||
* be implemented also, so none of glibc's malloc.o functions are added to the
|
* be implemented also, so none of glibc's malloc.o functions are added to the
|
||||||
* link.
|
* link.
|
||||||
*/
|
*/
|
||||||
#define ALIAS(je_fn) __attribute__((alias (#je_fn), used))
|
# define ALIAS(je_fn) __attribute__((alias (#je_fn), used))
|
||||||
/* To force macro expansion of je_ prefix before stringification. */
|
/* To force macro expansion of je_ prefix before stringification. */
|
||||||
#define PREALIAS(je_fn) ALIAS(je_fn)
|
# define PREALIAS(je_fn) ALIAS(je_fn)
|
||||||
void *__libc_malloc(size_t size) PREALIAS(je_malloc);
|
# ifdef JEMALLOC_OVERRIDE___LIBC_CALLOC
|
||||||
void __libc_free(void* ptr) PREALIAS(je_free);
|
void *__libc_calloc(size_t n, size_t size) PREALIAS(je_calloc);
|
||||||
void *__libc_realloc(void* ptr, size_t size) PREALIAS(je_realloc);
|
# endif
|
||||||
void *__libc_calloc(size_t n, size_t size) PREALIAS(je_calloc);
|
# ifdef JEMALLOC_OVERRIDE___LIBC_FREE
|
||||||
void *__libc_memalign(size_t align, size_t s) PREALIAS(je_memalign);
|
void __libc_free(void* ptr) PREALIAS(je_free);
|
||||||
void *__libc_valloc(size_t size) PREALIAS(je_valloc);
|
# endif
|
||||||
int __posix_memalign(void** r, size_t a, size_t s)
|
# ifdef JEMALLOC_OVERRIDE___LIBC_MALLOC
|
||||||
PREALIAS(je_posix_memalign);
|
void *__libc_malloc(size_t size) PREALIAS(je_malloc);
|
||||||
#undef PREALIAS
|
# endif
|
||||||
#undef ALIAS
|
# ifdef JEMALLOC_OVERRIDE___LIBC_MEMALIGN
|
||||||
|
void *__libc_memalign(size_t align, size_t s) PREALIAS(je_memalign);
|
||||||
#endif
|
# endif
|
||||||
|
# ifdef JEMALLOC_OVERRIDE___LIBC_REALLOC
|
||||||
|
void *__libc_realloc(void* ptr, size_t size) PREALIAS(je_realloc);
|
||||||
|
# endif
|
||||||
|
# ifdef JEMALLOC_OVERRIDE___LIBC_VALLOC
|
||||||
|
void *__libc_valloc(size_t size) PREALIAS(je_valloc);
|
||||||
|
# endif
|
||||||
|
# ifdef JEMALLOC_OVERRIDE___POSIX_MEMALIGN
|
||||||
|
int __posix_memalign(void** r, size_t a, size_t s) PREALIAS(je_posix_memalign);
|
||||||
|
# endif
|
||||||
|
# undef PREALIAS
|
||||||
|
# undef ALIAS
|
||||||
|
# endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
Loading…
Reference in New Issue
Block a user