зеркало из https://github.com/mozilla/gecko-dev.git
Bug 938437 - Replace nsStaticXULComponents.cpp with smart use of sections. r=bsmedberg,irc-r=decoder
This commit is contained in:
Родитель
462cd597b5
Коммит
dc139405e1
|
@ -69,49 +69,6 @@ endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
# component libraries
|
# component libraries
|
||||||
ifdef MOZ_JSDEBUGGER
|
|
||||||
DEFINES += -DMOZ_JSDEBUGGER
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifdef MOZ_PREF_EXTENSIONS
|
|
||||||
DEFINES += -DMOZ_PREF_EXTENSIONS
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifdef MOZ_AUTH_EXTENSION
|
|
||||||
DEFINES += -DMOZ_AUTH_EXTENSION
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifdef MOZ_PERMISSIONS
|
|
||||||
DEFINES += -DMOZ_PERMISSIONS
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifdef MOZ_UNIVERSALCHARDET
|
|
||||||
DEFINES += -DMOZ_UNIVERSALCHARDET
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifeq (,$(filter android gonk qt os2 cocoa windows,$(MOZ_WIDGET_TOOLKIT)))
|
|
||||||
ifdef MOZ_XUL
|
|
||||||
DEFINES += -DMOZ_FILEVIEW
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
|
|
||||||
# Platform-specific icon channel stuff - supported mostly-everywhere
|
|
||||||
ifneq (,$(filter windows os2 mac cocoa gtk2 gtk3 qt android,$(MOZ_WIDGET_TOOLKIT)))
|
|
||||||
DEFINES += -DICON_DECODER
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifdef MOZ_SPELLCHECK
|
|
||||||
DEFINES += -DMOZ_SPELLCHECK
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifdef MOZ_ZIPWRITER
|
|
||||||
DEFINES += -DMOZ_ZIPWRITER
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifdef MOZ_GIO_COMPONENT
|
|
||||||
DEFINES += -DMOZ_GIO_COMPONENT
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifdef MOZ_APP_COMPONENT_LIBS
|
ifdef MOZ_APP_COMPONENT_LIBS
|
||||||
COMPONENT_LIBS += $(MOZ_APP_COMPONENT_LIBS)
|
COMPONENT_LIBS += $(MOZ_APP_COMPONENT_LIBS)
|
||||||
endif
|
endif
|
||||||
|
@ -400,12 +357,6 @@ ifeq ($(MOZ_WIDGET_TOOLKIT),windows)
|
||||||
OS_LIBS += $(call EXPAND_LIBNAME,usp10 oleaut32)
|
OS_LIBS += $(call EXPAND_LIBNAME,usp10 oleaut32)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifdef MOZ_DEBUG
|
|
||||||
ifdef ENABLE_TESTS
|
|
||||||
DEFINES += -DENABLE_LAYOUTDEBUG
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifeq (WINNT_1,$(OS_TARGET)_$(MOZ_PROFILE_USE))
|
ifeq (WINNT_1,$(OS_TARGET)_$(MOZ_PROFILE_USE))
|
||||||
# Wrap linker to measure peak virtual memory usage.
|
# Wrap linker to measure peak virtual memory usage.
|
||||||
LD := $(PYTHON) $(topsrcdir)/build/link.py $(CURDIR)/linker-vsize $(LD)
|
LD := $(PYTHON) $(topsrcdir)/build/link.py $(CURDIR)/linker-vsize $(LD)
|
||||||
|
@ -444,3 +395,5 @@ endif
|
||||||
|
|
||||||
$(FINAL_TARGET)/dependentlibs.list: dependentlibs.py $(SHARED_LIBRARY) $(wildcard $(if $(wildcard $(FINAL_TARGET)/dependentlibs.list),$(addprefix $(FINAL_TARGET)/,$(shell cat $(FINAL_TARGET)/dependentlibs.list))))
|
$(FINAL_TARGET)/dependentlibs.list: dependentlibs.py $(SHARED_LIBRARY) $(wildcard $(if $(wildcard $(FINAL_TARGET)/dependentlibs.list),$(addprefix $(FINAL_TARGET)/,$(shell cat $(FINAL_TARGET)/dependentlibs.list))))
|
||||||
$(PYTHON) $< $(SHARED_LIBRARY) -L $(FINAL_TARGET) $(if $(TOOLCHAIN_PREFIX),$(addprefix -p ,$(TOOLCHAIN_PREFIX))) > $@
|
$(PYTHON) $< $(SHARED_LIBRARY) -L $(FINAL_TARGET) $(if $(TOOLCHAIN_PREFIX),$(addprefix -p ,$(TOOLCHAIN_PREFIX))) > $@
|
||||||
|
|
||||||
|
EXTRA_DSO_LDOPTS += $(call EXPAND_LIBNAME_PATH,StaticXULComponentsEnd,$(CURDIR)/StaticXULComponentsEnd)
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
#include "mozilla/Module.h"
|
||||||
|
#include "mozilla/NullPtr.h"
|
||||||
|
|
||||||
|
NSMODULE_DEFN(end_kPStaticModules) = nullptr;
|
|
@ -0,0 +1,11 @@
|
||||||
|
# This Source Code Form is subject to the terms of the Mozilla Public
|
||||||
|
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||||
|
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||||
|
|
||||||
|
SOURCES += [
|
||||||
|
'StaticXULComponentsEnd.cpp',
|
||||||
|
]
|
||||||
|
|
||||||
|
LIBRARY_NAME = 'StaticXULComponentsEnd'
|
||||||
|
|
||||||
|
LIBXUL_LIBRARY = True
|
|
@ -0,0 +1,4 @@
|
||||||
|
#include "mozilla/Module.h"
|
||||||
|
#include "mozilla/NullPtr.h"
|
||||||
|
|
||||||
|
NSMODULE_DEFN(start_kPStaticModules) = nullptr;
|
|
@ -10,7 +10,7 @@ if CONFIG['MOZ_METRO'] and CONFIG['OS_ARCH'] == 'WINNT':
|
||||||
LIBRARY_NAME = 'xul'
|
LIBRARY_NAME = 'xul'
|
||||||
|
|
||||||
SOURCES += [
|
SOURCES += [
|
||||||
'nsStaticXULComponents.cpp',
|
'StaticXULComponentsStart.cpp',
|
||||||
]
|
]
|
||||||
|
|
||||||
if CONFIG['OS_ARCH'] == 'WINNT':
|
if CONFIG['OS_ARCH'] == 'WINNT':
|
||||||
|
|
|
@ -1,267 +0,0 @@
|
||||||
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
|
|
||||||
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
||||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
||||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
||||||
|
|
||||||
#include "mozilla/Module.h"
|
|
||||||
#include "nsXPCOM.h"
|
|
||||||
#include "nsMemory.h"
|
|
||||||
|
|
||||||
#ifdef MOZ_AUTH_EXTENSION
|
|
||||||
#define AUTH_MODULE MODULE(nsAuthModule)
|
|
||||||
#else
|
|
||||||
#define AUTH_MODULE
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef MOZ_PERMISSIONS
|
|
||||||
#define PERMISSIONS_MODULES \
|
|
||||||
MODULE(nsCookieModule) \
|
|
||||||
MODULE(nsPermissionsModule)
|
|
||||||
#else
|
|
||||||
#define PERMISSIONS_MODULES
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef MOZ_UNIVERSALCHARDET
|
|
||||||
#define UNIVERSALCHARDET_MODULE MODULE(nsUniversalCharDetModule)
|
|
||||||
#else
|
|
||||||
#define UNIVERSALCHARDET_MODULE
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef XP_WIN
|
|
||||||
# define WIDGET_MODULES MODULE(nsWidgetModule)
|
|
||||||
#elif defined(XP_MACOSX)
|
|
||||||
# define WIDGET_MODULES MODULE(nsWidgetMacModule)
|
|
||||||
#elif defined(XP_OS2)
|
|
||||||
# define WIDGET_MODULES MODULE(nsWidgetOS2Module)
|
|
||||||
#elif defined(MOZ_WIDGET_GTK)
|
|
||||||
# define WIDGET_MODULES MODULE(nsWidgetGtk2Module)
|
|
||||||
#elif defined(MOZ_WIDGET_QT)
|
|
||||||
# define WIDGET_MODULES MODULE(nsWidgetQtModule)
|
|
||||||
#elif defined(MOZ_WIDGET_ANDROID)
|
|
||||||
# define WIDGET_MODULES MODULE(nsWidgetAndroidModule)
|
|
||||||
#elif defined(MOZ_WIDGET_GONK)
|
|
||||||
# define WIDGET_MODULES MODULE(nsWidgetGonkModule)
|
|
||||||
#else
|
|
||||||
# error Unknown widget module.
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef ICON_DECODER
|
|
||||||
#define ICON_MODULE MODULE(nsIconDecoderModule)
|
|
||||||
#else
|
|
||||||
#define ICON_MODULE
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef MOZ_ENABLE_XREMOTE
|
|
||||||
#define XREMOTE_MODULES MODULE(RemoteServiceModule)
|
|
||||||
#else
|
|
||||||
#define XREMOTE_MODULES
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef MOZ_PREF_EXTENSIONS
|
|
||||||
#define SYSTEMPREF_MODULES MODULE(nsAutoConfigModule)
|
|
||||||
#else
|
|
||||||
#define SYSTEMPREF_MODULES
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef ENABLE_LAYOUTDEBUG
|
|
||||||
#define LAYOUT_DEBUG_MODULE MODULE(nsLayoutDebugModule)
|
|
||||||
#else
|
|
||||||
#define LAYOUT_DEBUG_MODULE
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef MOZ_JSDEBUGGER
|
|
||||||
#define JSDEBUGGER_MODULES \
|
|
||||||
MODULE(JavaScript_Debugger)
|
|
||||||
#else
|
|
||||||
#define JSDEBUGGER_MODULES
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(MOZ_FILEVIEW) && defined(MOZ_XUL)
|
|
||||||
#define FILEVIEW_MODULE MODULE(nsFileViewModule)
|
|
||||||
#else
|
|
||||||
#define FILEVIEW_MODULE
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef MOZ_ZIPWRITER
|
|
||||||
#define ZIPWRITER_MODULE MODULE(ZipWriterModule)
|
|
||||||
#else
|
|
||||||
#define ZIPWRITER_MODULE
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef MOZ_PLACES
|
|
||||||
#define PLACES_MODULES \
|
|
||||||
MODULE(nsPlacesModule)
|
|
||||||
#else
|
|
||||||
#define PLACES_MODULES
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef MOZ_XUL
|
|
||||||
#define XULENABLED_MODULES \
|
|
||||||
MODULE(tkAutoCompleteModule) \
|
|
||||||
MODULE(satchel) \
|
|
||||||
MODULE(PKI)
|
|
||||||
#else
|
|
||||||
#define XULENABLED_MODULES
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef MOZ_SPELLCHECK
|
|
||||||
#define SPELLCHECK_MODULE MODULE(mozSpellCheckerModule)
|
|
||||||
#else
|
|
||||||
#define SPELLCHECK_MODULE
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef MOZ_XUL
|
|
||||||
#ifdef MOZ_WIDGET_GTK
|
|
||||||
#define UNIXPROXY_MODULE MODULE(nsUnixProxyModule)
|
|
||||||
#endif
|
|
||||||
#if defined(MOZ_WIDGET_QT)
|
|
||||||
#define UNIXPROXY_MODULE MODULE(nsUnixProxyModule)
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
#ifndef UNIXPROXY_MODULE
|
|
||||||
#define UNIXPROXY_MODULE
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(XP_MACOSX)
|
|
||||||
#define OSXPROXY_MODULE MODULE(nsOSXProxyModule)
|
|
||||||
#else
|
|
||||||
#define OSXPROXY_MODULE
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(XP_WIN)
|
|
||||||
#define WINDOWSPROXY_MODULE MODULE(nsWindowsProxyModule)
|
|
||||||
#else
|
|
||||||
#define WINDOWSPROXY_MODULE
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(MOZ_WIDGET_ANDROID)
|
|
||||||
#define ANDROIDPROXY_MODULE MODULE(nsAndroidProxyModule)
|
|
||||||
#else
|
|
||||||
#define ANDROIDPROXY_MODULE
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(BUILD_CTYPES)
|
|
||||||
#define JSCTYPES_MODULE MODULE(jsctypes)
|
|
||||||
#else
|
|
||||||
#define JSCTYPES_MODULE
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef MOZ_APP_COMPONENT_MODULES
|
|
||||||
#if defined(MOZ_APP_COMPONENT_INCLUDE)
|
|
||||||
#include MOZ_APP_COMPONENT_INCLUDE
|
|
||||||
#define MOZ_APP_COMPONENT_MODULES APP_COMPONENT_MODULES
|
|
||||||
#else
|
|
||||||
#define MOZ_APP_COMPONENT_MODULES
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(MOZ_ENABLE_PROFILER_SPS)
|
|
||||||
#define PROFILER_MODULE MODULE(nsProfilerModule)
|
|
||||||
#else
|
|
||||||
#define PROFILER_MODULE
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(MOZ_WEBRTC)
|
|
||||||
#define PEERCONNECTION_MODULE MODULE(peerconnection)
|
|
||||||
#else
|
|
||||||
#define PEERCONNECTION_MODULE
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(MOZ_GIO_COMPONENT)
|
|
||||||
#define GIO_MODULE MODULE(nsGIOModule)
|
|
||||||
#else
|
|
||||||
#define GIO_MODULE
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(MOZ_SYNTH_PICO)
|
|
||||||
#define SYNTH_PICO_MODULE MODULE(synthpico)
|
|
||||||
#else
|
|
||||||
#define SYNTH_PICO_MODULE
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#define XUL_MODULES \
|
|
||||||
MODULE(nsUConvModule) \
|
|
||||||
MODULE(nsI18nModule) \
|
|
||||||
MODULE(nsChardetModule) \
|
|
||||||
UNIVERSALCHARDET_MODULE \
|
|
||||||
MODULE(necko) \
|
|
||||||
PERMISSIONS_MODULES \
|
|
||||||
AUTH_MODULE \
|
|
||||||
MODULE(nsJarModule) \
|
|
||||||
ZIPWRITER_MODULE \
|
|
||||||
MODULE(StartupCacheModule) \
|
|
||||||
MODULE(nsPrefModule) \
|
|
||||||
MODULE(nsRDFModule) \
|
|
||||||
MODULE(nsWindowDataSourceModule) \
|
|
||||||
MODULE(nsParserModule) \
|
|
||||||
MODULE(nsImageLib2Module) \
|
|
||||||
MODULE(nsMediaSnifferModule) \
|
|
||||||
MODULE(nsGfxModule) \
|
|
||||||
PROFILER_MODULE \
|
|
||||||
WIDGET_MODULES \
|
|
||||||
ICON_MODULE \
|
|
||||||
MODULE(nsPluginModule) \
|
|
||||||
MODULE(nsLayoutModule) \
|
|
||||||
MODULE(docshell_provider) \
|
|
||||||
MODULE(embedcomponents) \
|
|
||||||
MODULE(Browser_Embedding_Module) \
|
|
||||||
MODULE(appshell) \
|
|
||||||
MODULE(nsTransactionManagerModule) \
|
|
||||||
MODULE(nsComposerModule) \
|
|
||||||
MODULE(application) \
|
|
||||||
MODULE(Apprunner) \
|
|
||||||
MODULE(CommandLineModule) \
|
|
||||||
FILEVIEW_MODULE \
|
|
||||||
MODULE(mozStorageModule) \
|
|
||||||
PLACES_MODULES \
|
|
||||||
XULENABLED_MODULES \
|
|
||||||
MODULE(nsToolkitCompsModule) \
|
|
||||||
XREMOTE_MODULES \
|
|
||||||
JSDEBUGGER_MODULES \
|
|
||||||
MODULE(BOOT) \
|
|
||||||
MODULE(NSS) \
|
|
||||||
SYSTEMPREF_MODULES \
|
|
||||||
SPELLCHECK_MODULE \
|
|
||||||
LAYOUT_DEBUG_MODULE \
|
|
||||||
UNIXPROXY_MODULE \
|
|
||||||
OSXPROXY_MODULE \
|
|
||||||
WINDOWSPROXY_MODULE \
|
|
||||||
ANDROIDPROXY_MODULE \
|
|
||||||
JSCTYPES_MODULE \
|
|
||||||
MODULE(jsreflect) \
|
|
||||||
MODULE(jsperf) \
|
|
||||||
MODULE(identity) \
|
|
||||||
MODULE(nsServicesCryptoModule) \
|
|
||||||
MOZ_APP_COMPONENT_MODULES \
|
|
||||||
MODULE(nsTelemetryModule) \
|
|
||||||
MODULE(jsinspector) \
|
|
||||||
MODULE(jsdebugger) \
|
|
||||||
PEERCONNECTION_MODULE \
|
|
||||||
GIO_MODULE \
|
|
||||||
SYNTH_PICO_MODULE \
|
|
||||||
MODULE(DiskSpaceWatcherModule) \
|
|
||||||
/* end of list */
|
|
||||||
|
|
||||||
#define MODULE(_name) \
|
|
||||||
NSMODULE_DECL(_name);
|
|
||||||
|
|
||||||
XUL_MODULES
|
|
||||||
|
|
||||||
#ifdef MOZ_WIDGET_GONK
|
|
||||||
MODULE(WifiProxyServiceModule)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#undef MODULE
|
|
||||||
|
|
||||||
#define MODULE(_name) \
|
|
||||||
&NSMODULE_NAME(_name),
|
|
||||||
|
|
||||||
extern const mozilla::Module *const *const kPStaticModules[] = {
|
|
||||||
XUL_MODULES
|
|
||||||
#ifdef MOZ_WIDGET_GONK
|
|
||||||
MODULE(WifiProxyServiceModule)
|
|
||||||
#endif
|
|
||||||
nullptr
|
|
||||||
};
|
|
||||||
|
|
||||||
#undef MODULE
|
|
|
@ -161,6 +161,7 @@ if CONFIG['MOZ_GIO_COMPONENT']:
|
||||||
add_tier_dir('platform', app_libxul_dirs)
|
add_tier_dir('platform', app_libxul_dirs)
|
||||||
add_tier_dir('platform', app_libxul_static_dirs, static=True)
|
add_tier_dir('platform', app_libxul_static_dirs, static=True)
|
||||||
|
|
||||||
|
add_tier_dir('platform', 'toolkit/library/StaticXULComponentsEnd')
|
||||||
add_tier_dir('platform', 'toolkit/library')
|
add_tier_dir('platform', 'toolkit/library')
|
||||||
|
|
||||||
if CONFIG['MOZ_REPLACE_MALLOC']:
|
if CONFIG['MOZ_REPLACE_MALLOC']:
|
||||||
|
|
|
@ -105,8 +105,21 @@ struct Module
|
||||||
|
|
||||||
#if defined(MOZILLA_INTERNAL_API)
|
#if defined(MOZILLA_INTERNAL_API)
|
||||||
# define NSMODULE_NAME(_name) _name##_NSModule
|
# define NSMODULE_NAME(_name) _name##_NSModule
|
||||||
# define NSMODULE_DECL(_name) extern mozilla::Module const *const NSMODULE_NAME(_name)
|
# if defined(_MSC_VER)
|
||||||
# define NSMODULE_DEFN(_name) NSMODULE_DECL(_name)
|
# pragma section(".kPStaticModules", read)
|
||||||
|
# pragma comment(linker, "/merge:.kPStaticModules=.rdata")
|
||||||
|
# define NSMODULE_SECTION __declspec(allocate(".kPStaticModules"))
|
||||||
|
# elif defined(__GNUC__)
|
||||||
|
# if defined(__ELF__)
|
||||||
|
# define NSMODULE_SECTION __attribute__((section(".kPStaticModules"), visibility("protected")))
|
||||||
|
# elif defined(__MACH__)
|
||||||
|
# define NSMODULE_SECTION __attribute__((section("__DATA, .kPStaticModules"), visibility("default")))
|
||||||
|
# endif
|
||||||
|
# endif
|
||||||
|
# if !defined(NSMODULE_SECTION)
|
||||||
|
# error Do not know how to define sections.
|
||||||
|
# endif
|
||||||
|
# define NSMODULE_DEFN(_name) extern NSMODULE_SECTION mozilla::Module const *const NSMODULE_NAME(_name)
|
||||||
#else
|
#else
|
||||||
# define NSMODULE_NAME(_name) NSModule
|
# define NSMODULE_NAME(_name) NSModule
|
||||||
# define NSMODULE_DEFN(_name) extern "C" NS_EXPORT mozilla::Module const *const NSModule
|
# define NSMODULE_DEFN(_name) extern "C" NS_EXPORT mozilla::Module const *const NSModule
|
||||||
|
|
|
@ -79,10 +79,6 @@ using namespace mozilla;
|
||||||
|
|
||||||
PRLogModuleInfo* nsComponentManagerLog = nullptr;
|
PRLogModuleInfo* nsComponentManagerLog = nullptr;
|
||||||
|
|
||||||
// defined in nsStaticXULComponents.cpp to contain all the components in
|
|
||||||
// libxul.
|
|
||||||
extern mozilla::Module const *const *const kPStaticModules[];
|
|
||||||
|
|
||||||
#if 0 || defined (DEBUG_timeless)
|
#if 0 || defined (DEBUG_timeless)
|
||||||
#define SHOW_DENIED_ON_SHUTDOWN
|
#define SHOW_DENIED_ON_SHUTDOWN
|
||||||
#define SHOW_CI_ON_EXISTING_SERVICE
|
#define SHOW_CI_ON_EXISTING_SERVICE
|
||||||
|
@ -322,6 +318,15 @@ nsComponentManagerImpl::nsComponentManagerImpl()
|
||||||
|
|
||||||
nsTArray<const mozilla::Module*>* nsComponentManagerImpl::sStaticModules;
|
nsTArray<const mozilla::Module*>* nsComponentManagerImpl::sStaticModules;
|
||||||
|
|
||||||
|
NSMODULE_DEFN(start_kPStaticModules);
|
||||||
|
NSMODULE_DEFN(end_kPStaticModules);
|
||||||
|
|
||||||
|
/* The content between start_kPStaticModules and end_kPStaticModules is gathered
|
||||||
|
* by the linker from various objects containing symbols in a specific section.
|
||||||
|
* ASAN considers (rightfully) the use of this content as a global buffer
|
||||||
|
* overflow. But this is a deliberate and well-considered choice, with no proper
|
||||||
|
* way to make ASAN happy. */
|
||||||
|
MOZ_ASAN_BLACKLIST
|
||||||
/* static */ void
|
/* static */ void
|
||||||
nsComponentManagerImpl::InitializeStaticModules()
|
nsComponentManagerImpl::InitializeStaticModules()
|
||||||
{
|
{
|
||||||
|
@ -329,9 +334,10 @@ nsComponentManagerImpl::InitializeStaticModules()
|
||||||
return;
|
return;
|
||||||
|
|
||||||
sStaticModules = new nsTArray<const mozilla::Module*>;
|
sStaticModules = new nsTArray<const mozilla::Module*>;
|
||||||
for (const mozilla::Module *const *const *staticModules = kPStaticModules;
|
for (const mozilla::Module *const *staticModules = &NSMODULE_NAME(start_kPStaticModules) + 1;
|
||||||
*staticModules; ++staticModules)
|
staticModules < &NSMODULE_NAME(end_kPStaticModules); ++staticModules)
|
||||||
sStaticModules->AppendElement(**staticModules);
|
if (*staticModules) // ASAN adds padding
|
||||||
|
sStaticModules->AppendElement(*staticModules);
|
||||||
}
|
}
|
||||||
|
|
||||||
nsTArray<nsComponentManagerImpl::ComponentLocation>*
|
nsTArray<nsComponentManagerImpl::ComponentLocation>*
|
||||||
|
|
Загрузка…
Ссылка в новой задаче