mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-24 10:45:42 +00:00
fccd6eb9ba
* At this point our DLL blocking infra is complicated enough that I decided to bite the bullet and move all of this code out of `mozglue/build` and into its own subdirectory, `mozglue/dllservices`. * We delete the original `UntrustedDllsHandler` code which is now obsolete. * We implement mozglue's `LoaderObserver`: ** When this observer registers itself with the launcher process API, it receives a vector containing all saved records of loaded DLLs that happened until that moment. ** This code handles profiler labels and stackwalking suppression. ** Once a load has completed, we either pass the load on to XUL for further processing, or save it for later if XUL is not initialized yet. * mozglue has its own `ModuleLoadFrame` implementation for the legacy blocklist. * `DllServicesBase` is updated to support the new interfaces. * We implement `FallbackLoaderAPI` for `plugin-container`, `xpcshell`, and any other non-`firefox` processes that do not have a launcher process providing a loader API. * We add some wide to UTF8 conversion functions. Depends on D43157 Differential Revision: https://phabricator.services.mozilla.com/D43158 --HG-- rename : mozglue/build/Authenticode.cpp => mozglue/dllservices/Authenticode.cpp rename : mozglue/build/Authenticode.h => mozglue/dllservices/Authenticode.h rename : browser/app/winlauncher/freestanding/LoaderAPIInterfaces.h => mozglue/dllservices/LoaderAPIInterfaces.h rename : browser/app/winlauncher/freestanding/ModuleLoadInfo.h => mozglue/dllservices/ModuleLoadInfo.h rename : browser/app/winlauncher/NtLoaderAPI.h => mozglue/dllservices/NtLoaderAPI.h rename : mozglue/build/WindowsDllBlocklist.cpp => mozglue/dllservices/WindowsDllBlocklist.cpp rename : mozglue/build/WindowsDllBlocklist.h => mozglue/dllservices/WindowsDllBlocklist.h rename : mozglue/build/WindowsDllBlocklistCommon.h => mozglue/dllservices/WindowsDllBlocklistCommon.h rename : mozglue/build/WindowsDllBlocklistDefs.in => mozglue/dllservices/WindowsDllBlocklistDefs.in rename : mozglue/build/WindowsDllServices.h => mozglue/dllservices/WindowsDllServices.h rename : mozglue/build/gen_dll_blocklist_defs.py => mozglue/dllservices/gen_dll_blocklist_defs.py rename : mozglue/build/moz.build => mozglue/dllservices/moz.build rename : mozglue/build/MozglueUtils.h => mozglue/misc/WinUtils.h extra : moz-landing-system : lando
114 lines
3.0 KiB
Python
114 lines
3.0 KiB
Python
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
|
|
# vim: set filetype=python:
|
|
# 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/.
|
|
|
|
# Build mozglue as a shared lib on Windows, OSX and Android. But not for
|
|
# embedders!
|
|
# If this is ever changed, update MOZ_SHARED_MOZGLUE in browser/installer/Makefile.in
|
|
if CONFIG['JS_STANDALONE'] and not CONFIG['MOZ_MEMORY']:
|
|
Library('mozglue')
|
|
elif CONFIG['OS_TARGET'] in ('WINNT', 'Darwin', 'Android'):
|
|
SharedLibrary('mozglue')
|
|
else:
|
|
Library('mozglue')
|
|
|
|
if CONFIG['OS_TARGET'] == 'Android':
|
|
LDFLAGS += ['-Wl,--version-script,%s/mozglue.ver' % SRCDIR]
|
|
SOURCES += [
|
|
'BionicGlue.cpp',
|
|
]
|
|
|
|
if CONFIG['MOZ_ASAN']:
|
|
SOURCES += [
|
|
'AsanOptions.cpp',
|
|
]
|
|
|
|
if CONFIG['MOZ_UBSAN']:
|
|
SOURCES += [
|
|
'UbsanOptions.cpp',
|
|
]
|
|
|
|
if CONFIG['OS_TARGET'] == 'WINNT':
|
|
DEFFILE = '!mozglue.def'
|
|
# We'll break the DLL blocklist if we immediately load user32.dll.
|
|
# For the same reason, we delayload winmm.dll which statically links
|
|
# user32.dll.
|
|
DELAYLOAD_DLLS += [
|
|
'user32.dll',
|
|
'winmm.dll',
|
|
]
|
|
RCINCLUDE = 'mozglue.rc'
|
|
|
|
if CONFIG['MOZ_WIDGET_TOOLKIT']:
|
|
|
|
if CONFIG['MOZ_MEMORY'] and FORCE_SHARED_LIB:
|
|
pass
|
|
# TODO: SHARED_LIBRARY_LIBS go here
|
|
else:
|
|
# Temporary, until bug 662814 lands
|
|
NoVisibilityFlags()
|
|
SOURCES += [
|
|
'dummy.cpp',
|
|
]
|
|
|
|
if CONFIG['OS_TARGET'] == 'WINNT':
|
|
LOCAL_INCLUDES += [
|
|
'/memory/build',
|
|
]
|
|
|
|
EXPORTS.mozilla += [
|
|
'arm.h',
|
|
'mips.h',
|
|
'ppc.h',
|
|
'SSE.h',
|
|
]
|
|
|
|
if CONFIG['CPU_ARCH'].startswith('x86'):
|
|
SOURCES += [
|
|
'SSE.cpp',
|
|
]
|
|
|
|
if CONFIG['CPU_ARCH'] == 'arm':
|
|
SOURCES += [
|
|
'arm.cpp',
|
|
]
|
|
|
|
if CONFIG['CPU_ARCH'].startswith('mips'):
|
|
SOURCES += [
|
|
'mips.cpp',
|
|
]
|
|
|
|
if CONFIG['CPU_ARCH'].startswith('ppc'):
|
|
SOURCES += [
|
|
'ppc.cpp',
|
|
]
|
|
|
|
if CONFIG['MOZ_LINKER']:
|
|
USE_LIBS += [
|
|
'zlib',
|
|
]
|
|
|
|
USE_LIBS += [
|
|
'mfbt',
|
|
]
|
|
|
|
LIBRARY_DEFINES['IMPL_MFBT'] = True
|
|
LIBRARY_DEFINES['MOZ_HAS_MOZGLUE'] = True
|
|
|
|
if CONFIG['OS_TARGET'] == 'Darwin':
|
|
# On OSX 10.10.3, a dead lock happens in some cases involving dynamic
|
|
# symbol resolution for symbols that jemalloc itself uses. While it
|
|
# might be possible to find a way to avoid all such symbol resolutions,
|
|
# it's currently not possible because at the very least there's a call
|
|
# to pthread_self from tsd_init_check_recursion, which is necessary
|
|
# because somehow clang doesn't want to accept the __thread keyword
|
|
# for TLS.
|
|
LDFLAGS += ['-Wl,-bind_at_load']
|
|
|
|
if CONFIG['MOZ_LINKER'] and CONFIG['CPU_ARCH'] == 'arm':
|
|
LDFLAGS += ['-Wl,-version-script,%s/arm-eabi-filter' % SRCDIR]
|
|
|
|
DIST_INSTALL = True
|