mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-25 11:15:34 +00:00
a1e18da1b1
Whereas previously MozDescribeCodeAddress would have handled demangling, we need to explicitly do that from our new GetFunction method. The string we generate is now more useful for the profiler to merge -- having dropped the address in the previous patch, and the file & line number and library in this patch. While we're at it, try to demangle Rust symbols too. Ideally we'd add Rust symbol handling to DemangleSymbol in StackWalk.cpp, but that lives in mozglue, which currently cannot have any Rust crate dependencies. Differential Revision: https://phabricator.services.mozilla.com/D43142 --HG-- extra : moz-landing-system : lando
179 lines
6.0 KiB
Python
179 lines
6.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/.
|
|
|
|
if CONFIG['MOZ_GECKO_PROFILER']:
|
|
DEFINES['MOZ_REPLACE_MALLOC_PREFIX'] = 'profiler'
|
|
XPIDL_MODULE = 'profiler'
|
|
XPIDL_SOURCES += [
|
|
'gecko/nsIProfiler.idl',
|
|
]
|
|
EXPORTS += [
|
|
'public/ChildProfilerController.h',
|
|
'public/GeckoProfilerReporter.h',
|
|
'public/ProfileJSONWriter.h',
|
|
'public/ProfilerChild.h',
|
|
'public/ProfilerCodeAddressService.h',
|
|
'public/ProfilerMarkerPayload.h',
|
|
'public/ProfilerParent.h',
|
|
'public/shared-libraries.h',
|
|
]
|
|
UNIFIED_SOURCES += [
|
|
'core/PageInformation.cpp',
|
|
'core/platform.cpp',
|
|
'core/ProfileBuffer.cpp',
|
|
'core/ProfileBufferEntry.cpp',
|
|
'core/ProfiledThreadData.cpp',
|
|
'core/ProfileJSONWriter.cpp',
|
|
'core/ProfilerBacktrace.cpp',
|
|
'core/ProfilerCodeAddressService.cpp',
|
|
'core/ProfilerMarkerPayload.cpp',
|
|
'core/RegisteredThread.cpp',
|
|
'gecko/ChildProfilerController.cpp',
|
|
'gecko/nsProfilerStartParams.cpp',
|
|
'gecko/ProfilerChild.cpp',
|
|
'gecko/ProfilerIOInterposeObserver.cpp',
|
|
'gecko/ProfilerParent.cpp',
|
|
'gecko/ThreadResponsiveness.cpp',
|
|
]
|
|
if CONFIG['MOZ_REPLACE_MALLOC'] and CONFIG['MOZ_PROFILER_MEMORY']:
|
|
SOURCES += [
|
|
'core/memory_hooks.cpp', # Non-unified because of order of #includes
|
|
]
|
|
|
|
XPCOM_MANIFESTS += [
|
|
'gecko/components.conf',
|
|
]
|
|
|
|
if CONFIG['OS_TARGET'] == 'Darwin':
|
|
# This file cannot be built in unified mode because it includes
|
|
# "nsLocalFile.h", which pulls in a system header which uses a type
|
|
# called TextRange, which conflicts with mozilla::TextRange due to
|
|
# a "using namespace mozilla;" declaration from a different file.
|
|
SOURCES += [
|
|
'gecko/nsProfiler.cpp',
|
|
]
|
|
else:
|
|
UNIFIED_SOURCES += [
|
|
'gecko/nsProfiler.cpp',
|
|
]
|
|
|
|
if CONFIG['OS_TARGET'] in ('Android', 'Linux'):
|
|
if CONFIG['CPU_ARCH'] in ('arm', 'aarch64', 'x86', 'x86_64', 'mips64'):
|
|
UNIFIED_SOURCES += [
|
|
'lul/AutoObjectMapper.cpp',
|
|
'lul/LulCommon.cpp',
|
|
'lul/LulDwarf.cpp',
|
|
'lul/LulDwarfSummariser.cpp',
|
|
'lul/LulElf.cpp',
|
|
'lul/LulMain.cpp',
|
|
'lul/platform-linux-lul.cpp',
|
|
]
|
|
# These files cannot be built in unified mode because of name clashes with mozglue headers on Android.
|
|
SOURCES += [
|
|
'core/shared-libraries-linux.cc',
|
|
]
|
|
if not CONFIG['MOZ_CRASHREPORTER']:
|
|
SOURCES += [
|
|
'/toolkit/crashreporter/google-breakpad/src/common/linux/elfutils.cc',
|
|
'/toolkit/crashreporter/google-breakpad/src/common/linux/file_id.cc',
|
|
'/toolkit/crashreporter/google-breakpad/src/common/linux/linux_libc_support.cc',
|
|
'/toolkit/crashreporter/google-breakpad/src/common/linux/memory_mapped_file.cc',
|
|
]
|
|
if CONFIG['CPU_ARCH'] == 'arm':
|
|
SOURCES += [
|
|
'core/EHABIStackWalk.cpp',
|
|
]
|
|
elif CONFIG['OS_TARGET'] == 'Darwin':
|
|
UNIFIED_SOURCES += [
|
|
'core/shared-libraries-macos.cc',
|
|
]
|
|
elif CONFIG['OS_TARGET'] == 'WINNT':
|
|
SOURCES += [
|
|
'core/shared-libraries-win32.cc',
|
|
]
|
|
|
|
LOCAL_INCLUDES += [
|
|
'/caps',
|
|
'/docshell/base',
|
|
'/ipc/chromium/src',
|
|
'/mozglue/linker',
|
|
'/netwerk/base',
|
|
'/netwerk/protocol/http',
|
|
'/toolkit/crashreporter/google-breakpad/src',
|
|
'/tools/profiler/core/',
|
|
'/tools/profiler/gecko/',
|
|
'/xpcom/base',
|
|
]
|
|
|
|
if CONFIG['OS_TARGET'] == 'Android':
|
|
DEFINES['ANDROID_NDK_MAJOR_VERSION'] = CONFIG['ANDROID_NDK_MAJOR_VERSION']
|
|
DEFINES['ANDROID_NDK_MINOR_VERSION'] = CONFIG['ANDROID_NDK_MINOR_VERSION']
|
|
LOCAL_INCLUDES += [
|
|
# We need access to Breakpad's getcontext(3) which is suitable for Android
|
|
'/toolkit/crashreporter/google-breakpad/src/common/android/include',
|
|
'lul',
|
|
]
|
|
|
|
if not CONFIG['MOZ_CRASHREPORTER'] and CONFIG['OS_TARGET'] == 'Android':
|
|
SOURCES += ['/toolkit/crashreporter/google-breakpad/src/common/android/breakpad_getcontext.S']
|
|
|
|
if CONFIG['ENABLE_TESTS']:
|
|
DIRS += ['tests/gtest']
|
|
|
|
FINAL_LIBRARY = 'xul'
|
|
|
|
IPDL_SOURCES += [
|
|
'gecko/PProfiler.ipdl',
|
|
'gecko/ProfilerTypes.ipdlh',
|
|
]
|
|
|
|
include('/ipc/chromium/chromium-config.mozbuild')
|
|
|
|
# GeckoProfiler.h and ProfilerCounts.h are the only code that's visible in
|
|
# non-MOZ_GECKO_PROFILER builds, and they only contains no-op macros in that
|
|
# case.
|
|
EXPORTS += [
|
|
'public/GeckoProfiler.h',
|
|
]
|
|
|
|
EXPORTS.mozilla += [
|
|
'public/BlocksRingBufferGeckoExtensions.h',
|
|
# vm/GeckoProfiler.h needs to include this and doesn't like #include "ProfilerCounts.h"
|
|
'public/ProfilerCounts.h',
|
|
]
|
|
|
|
if CONFIG['MOZ_VTUNE']:
|
|
DEFINES['MOZ_VTUNE_INSTRUMENTATION'] = True
|
|
UNIFIED_SOURCES += [
|
|
'core/VTuneProfiler.cpp',
|
|
]
|
|
|
|
|
|
if CONFIG['MOZ_TASK_TRACER']:
|
|
EXPORTS += [
|
|
'tasktracer/GeckoTaskTracer.h',
|
|
'tasktracer/GeckoTaskTracerImpl.h',
|
|
'tasktracer/SourceEventTypeMap.h',
|
|
'tasktracer/TracedTaskCommon.h',
|
|
]
|
|
UNIFIED_SOURCES += [
|
|
'tasktracer/GeckoTaskTracer.cpp',
|
|
'tasktracer/TracedTaskCommon.cpp',
|
|
]
|
|
|
|
XPCSHELL_TESTS_MANIFESTS += ['tests/xpcshell/xpcshell.ini']
|
|
MOCHITEST_CHROME_MANIFESTS += ['tests/chrome/chrome.ini']
|
|
BROWSER_CHROME_MANIFESTS += ['tests/browser/browser.ini']
|
|
|
|
if CONFIG['CC_TYPE'] in ('clang', 'gcc'):
|
|
CXXFLAGS += [
|
|
'-Wno-error=shadow',
|
|
'-Wno-ignored-qualifiers', # due to use of breakpad headers
|
|
]
|
|
|
|
with Files('**'):
|
|
BUG_COMPONENT = ('Core', 'Gecko Profiler')
|