components/desktop/firefox/patches/firefox31-43-solaris_jemalloc_linkage.patch
changeset 5527 611b2d6efdfe
parent 5526 570ac9aab8b2
child 5528 f2f5af510081
--- a/components/desktop/firefox/patches/firefox31-43-solaris_jemalloc_linkage.patch	Tue Mar 01 10:33:35 2016 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,157 +0,0 @@
-This patch makes it so jemalloc is not included in firefox. Not accepted by 
-the upstream community. 
-Put jemalloc inside libxul. Then need firefox to depend on libxul
-and build jemalloc library.
-Remove lines - do not include memory for every program
-Need to create/add our own versions of the functions malloc_usable, jemalloc_stats, etc.
-Remove mozalloc library
-Check if we have jemalloc; if not, skip it.
-Build libxul and use flags -Wl,-z,interpose, needed to build the library.
-
---- mozilla-esr31/browser/app/Makefile.in.orig	2015-06-04 17:42:51.441312058 -0700
-+++ mozilla-esr31/browser/app/Makefile.in	2015-06-04 17:42:51.478117039 -0700
-@@ -30,6 +30,12 @@
- 	$(XPCOM_STANDALONE_GLUE_LDOPTS) \
- 	$(NULL)
- 
-+ifdef MOZ_MEMORY
-+ifeq ($(OS_ARCH),SunOS)
-+LIBS += $(LIBXUL_LIBS)
-+endif
-+endif
-+
- ifdef MOZ_LINKER
- LIBS += $(MOZ_ZLIB_LIBS)
- endif
---- mozilla-esr31/config/jemalloc_solaris.map.orig	1969-12-31 16:00:00.000000000 -0800
-+++ mozilla-esr31/config/jemalloc_solaris.map	2015-06-04 17:42:51.478209751 -0700
-@@ -0,0 +1,12 @@
-+{
-+    global:
-+        calloc             = NODIRECT;
-+        free               = NODIRECT;
-+        jemalloc_stats     = NODIRECT;
-+        malloc             = NODIRECT;
-+        malloc_usable_size = NODIRECT;
-+        memalign           = NODIRECT;
-+        posix_memalign     = NODIRECT;
-+        realloc            = NODIRECT;
-+        valloc             = NODIRECT;
-+};
---- mozilla-esr31//configure.orig	2015-06-04 17:42:51.444508647 -0700
-+++ mozilla-esr31//configure	2015-06-04 17:42:51.480874311 -0700
-@@ -24162,9 +24162,6 @@
-   fi
- else
-     MOZ_GLUE_PROGRAM_LDFLAGS='$(MKSHLIB_FORCE_ALL) $(call EXPAND_LIBNAME_PATH,mozglue,$(LIBXUL_DIST)/lib)'
--      if test "$MOZ_MEMORY" = 1 -o \( "$LIBXUL_SDK" -a -f "$LIBXUL_SDK/lib/${LIB_PREFIX}memory.${LIB_SUFFIX}" \); then
--    MOZ_GLUE_PROGRAM_LDFLAGS="$MOZ_GLUE_PROGRAM_LDFLAGS "'$(call EXPAND_LIBNAME_PATH,memory,$(LIBXUL_DIST)/lib)'
--  fi
-   MOZ_GLUE_PROGRAM_LDFLAGS="$MOZ_GLUE_PROGRAM_LDFLAGS "'$(MKSHLIB_UNFORCE_ALL)'
-   if test -n "$GNU_CC"; then
-         MOZ_GLUE_PROGRAM_LDFLAGS="$MOZ_GLUE_PROGRAM_LDFLAGS -rdynamic"
---- mozilla-esr31/memory/mozalloc/mozalloc.cpp.orig	2015-06-04 17:42:51.453412680 -0700
-+++ mozilla-esr31/memory/mozalloc/mozalloc.cpp	2015-06-04 17:42:51.481002191 -0700
-@@ -200,6 +200,14 @@
- }
- #endif // if defined(HAVE_VALLOC)
- 
-+#if defined(MOZ_MEMORY_SOLARIS)
-+#include "jemalloc_types.h"
-+extern "C" {
-+extern size_t malloc_usable_size(const void *ptr);
-+extern void jemalloc_stats(jemalloc_stats_t* stats);
-+}
-+#endif
-+
- size_t
- moz_malloc_usable_size(void *ptr)
- {
-@@ -209,7 +217,22 @@
- #if defined(XP_MACOSX)
-     return malloc_size(ptr);
- #elif defined(HAVE_MALLOC_USABLE_SIZE) || defined(MOZ_MEMORY)
-+#if defined(SOLARIS)
-+    static bool checked = false;
-+    static bool using_jemalloc = false;
-+    if (!checked) {
-+        checked = true;
-+        jemalloc_stats_t stats;
-+        jemalloc_stats(&stats);
-+        using_jemalloc = stats.allocated;
-+    }
-+    if (using_jemalloc)
-+        return malloc_usable_size(ptr);
-+    else
-+        return 0;
-+#else
-     return malloc_usable_size(ptr);
-+#endif
- #elif defined(XP_WIN)
-     return _msize(ptr);
- #else
---- mozilla-esr31/security/manager/ssl/tests/unit/tlsserver/cmd/Makefile.in.orig	2015-06-04 17:42:51.459223858 -0700
-+++ mozilla-esr31/security/manager/ssl/tests/unit/tlsserver/cmd/Makefile.in	2015-06-04 17:42:51.481099560 -0700
-@@ -9,7 +9,6 @@
- LIBS = \
-   $(NSPR_LIBS) \
-   $(NSS_LIBS) \
--  $(MOZALLOC_LIB) \
-   ../../../../../../pkix/$(LIB_PREFIX)mozillapkix.$(LIB_SUFFIX) \
-   ../../../../../../pkix/test/lib/$(LIB_PREFIX)pkixtestutil.$(LIB_SUFFIX) \
-   ../lib/$(LIB_PREFIX)tlsserver.$(LIB_SUFFIX) \
---- mozilla-esr31/storage/src/mozStorageService.cpp.orig	2015-06-04 17:42:51.464827762 -0700
-+++ mozilla-esr31/storage/src/mozStorageService.cpp	2015-06-04 17:42:51.481242977 -0700
-@@ -503,9 +503,14 @@
-   int rc;
- 
- #ifdef MOZ_STORAGE_MEMORY
--  rc = ::sqlite3_config(SQLITE_CONFIG_MALLOC, &memMethods);
--  if (rc != SQLITE_OK)
--    return convertResultCode(rc);
-+  // in case other malloc library is PRELOAD-ed
-+  void *test_jemalloc = malloc(4);
-+  if (::moz_malloc_usable_size(test_jemalloc)) {
-+    rc = ::sqlite3_config(SQLITE_CONFIG_MALLOC, &memMethods);
-+    if (rc != SQLITE_OK)
-+      return convertResultCode(rc);
-+  }
-+  free(test_jemalloc);
- #endif
- 
-   // Explicitly initialize sqlite3.  Although this is implicitly called by
---- mozilla-esr31/toolkit/library/Makefile.in.orig	2015-06-04 17:42:51.470433696 -0700
-+++ mozilla-esr31/toolkit/library/Makefile.in	2015-06-04 17:42:51.481334017 -0700
-@@ -24,6 +24,16 @@
- 
- include $(topsrcdir)/config/rules.mk
- 
-+ifdef MOZ_MEMORY
-+ifeq ($(OS_ARCH),SunOS)
-+EXTRA_DSO_LDOPTS += $(call EXPAND_LIBNAME_PATH,memory,$(LIBXUL_DIST)/lib) -Wl,-M $(topsrcdir)/config/jemalloc_solaris.map -Wl,-z,interpose
-+endif
-+endif
-+
-+ifeq ($(OS_ARCH),SunOS)
-+EXTRA_DSO_LDOPTS += -lintl_unicharutil_util_internal -lxpt -lm -Wl,-z,defs
-+endif
-+
- .PHONY: gtestxul
- gtestxul:
- 	$(MAKE) -C gtest libs LINK_GTEST=1
---- mozilla-esr31/toolkit/library/libxul.mk.orig	2015-06-04 17:42:51.475797585 -0700
-+++ mozilla-esr31/toolkit/library/libxul.mk	2015-06-04 17:42:51.481432770 -0700
-@@ -253,3 +253,13 @@
- ifeq ($(MOZ_WIDGET_TOOLKIT),windows)
- OS_LIBS += $(call EXPAND_LIBNAME,usp10 oleaut32)
- endif
-+
-+ifdef MOZ_MEMORY
-+ifeq ($(OS_ARCH),SunOS)
-+EXTRA_DSO_LDOPTS += $(call EXPAND_LIBNAME_PATH,memory,$(LIBXUL_DIST)/lib) -Wl,-M $(topsrcdir)/config/jemalloc_solaris.map -Wl,-z,interpose
-+endif
-+endif
-+
-+ifeq ($(OS_ARCH),SunOS)
-+EXTRA_DSO_LDOPTS += -lintl_unicharutil_util_internal -lxpt -lm -Wl,-z,defs
-+endif