Commit 2de1cc0b authored by agrieve's avatar agrieve Committed by Commit bot

Create a star symbol for gaps at the start & end of sections

This eliminates the chance of a diff coming up where the symbols do not
sum up to the entire section delta

Other misc changes here:
 * Improves the size summary messaging.
 * Kills nm subprocess upon exit (rather than letting process finish)
 * Allows linker maps to not have a Common Symbols section

BUG=714180

Review-Url: https://codereview.chromium.org/2858793002
Cr-Commit-Position: refs/heads/master@{#469017}
parent e01cd8a6
...@@ -437,6 +437,7 @@ def CreateSizeInfo(map_path, elf_path, tool_prefix, output_directory, ...@@ -437,6 +437,7 @@ def CreateSizeInfo(map_path, elf_path, tool_prefix, output_directory,
bulk_analyzer = nm.BulkObjectFileAnalyzer(tool_prefix, output_directory) bulk_analyzer = nm.BulkObjectFileAnalyzer(tool_prefix, output_directory)
bulk_analyzer.AnalyzePaths(elf_object_paths) bulk_analyzer.AnalyzePaths(elf_object_paths)
logging.info('Parsing Linker Map')
with _OpenMaybeGz(map_path) as map_file: with _OpenMaybeGz(map_path) as map_file:
section_sizes, raw_symbols = ( section_sizes, raw_symbols = (
linker_map_parser.MapFileParser().Parse(map_file)) linker_map_parser.MapFileParser().Parse(map_file))
......
...@@ -22,13 +22,13 @@ def ClusterSymbols(symbols): ...@@ -22,13 +22,13 @@ def ClusterSymbols(symbols):
logging.debug('Creating name -> symbol map') logging.debug('Creating name -> symbol map')
clone_indices = [] clone_indices = []
indices_by_full_name = {} indices_by_full_name = {}
# (name, full_name) -> [(index, sym),...] # (section_name, name, full_name) -> [(index, sym),...]
replacements_by_name = collections.defaultdict(list) replacements_by_tup = collections.defaultdict(list)
for i, symbol in enumerate(symbols): for i, symbol in enumerate(symbols):
if symbol.name.startswith('**'): if symbol.name.startswith('**'):
# "symbol gap 3" -> "symbol gaps" # "symbol gap 3" -> "symbol gaps"
name = re.sub(r'\s+\d+$', 's', symbol.name) name = re.sub(r'\s+\d+( \(.*\))?$', 's', symbol.name)
replacements_by_name[(name, None)].append((i, symbol)) replacements_by_tup[(symbol.section_name, name, None)].append((i, symbol))
elif symbol.full_name: elif symbol.full_name:
if symbol.full_name.endswith(']') and ' [clone ' in symbol.full_name: if symbol.full_name.endswith(']') and ' [clone ' in symbol.full_name:
clone_indices.append(i) clone_indices.append(i)
...@@ -43,8 +43,8 @@ def ClusterSymbols(symbols): ...@@ -43,8 +43,8 @@ def ClusterSymbols(symbols):
# Multiple attributes could exist, so search from left-to-right. # Multiple attributes could exist, so search from left-to-right.
stripped_name = symbol.name[:symbol.name.index(' [clone ')] stripped_name = symbol.name[:symbol.name.index(' [clone ')]
stripped_full_name = symbol.full_name[:symbol.full_name.index(' [clone ')] stripped_full_name = symbol.full_name[:symbol.full_name.index(' [clone ')]
name_tup = (stripped_name, stripped_full_name) name_tup = (symbol.section_name, stripped_name, stripped_full_name)
replacement_list = replacements_by_name[name_tup] replacement_list = replacements_by_tup[name_tup]
if not replacement_list: if not replacement_list:
# First occurance, check for non-clone symbol. # First occurance, check for non-clone symbol.
...@@ -60,29 +60,29 @@ def ClusterSymbols(symbols): ...@@ -60,29 +60,29 @@ def ClusterSymbols(symbols):
# Step 3: Undo clustering when length=1. # Step 3: Undo clustering when length=1.
# Removing these groups means Diff() logic must know about [clone] suffix. # Removing these groups means Diff() logic must know about [clone] suffix.
to_clear = [] to_clear = []
for name_tup, replacement_list in replacements_by_name.iteritems(): for name_tup, replacement_list in replacements_by_tup.iteritems():
if len(replacement_list) == 1: if len(replacement_list) == 1:
to_clear.append(name_tup) to_clear.append(name_tup)
for name_tup in to_clear: for name_tup in to_clear:
del replacements_by_name[name_tup] del replacements_by_tup[name_tup]
# Step 4: Replace first symbol from each cluster with a SymbolGroup. # Step 4: Replace first symbol from each cluster with a SymbolGroup.
before_symbol_count = sum(len(x) for x in replacements_by_name.itervalues()) before_symbol_count = sum(len(x) for x in replacements_by_tup.itervalues())
logging.debug('Creating %d symbol groups from %d symbols. %d clones had only ' logging.debug('Creating %d symbol groups from %d symbols. %d clones had only '
'one symbol.', len(replacements_by_name), before_symbol_count, 'one symbol.', len(replacements_by_tup), before_symbol_count,
len(to_clear)) len(to_clear))
len_delta = len(replacements_by_name) - before_symbol_count len_delta = len(replacements_by_tup) - before_symbol_count
grouped_symbols = [None] * (len(symbols) + len_delta) grouped_symbols = [None] * (len(symbols) + len_delta)
dest_index = 0 dest_index = 0
src_index = 0 src_index = 0
seen_names = set() seen_tups = set()
replacement_names_by_index = {} replacement_tup_by_index = {}
for name_tup, replacement_list in replacements_by_name.iteritems(): for name_tup, replacement_list in replacements_by_tup.iteritems():
for tup in replacement_list: for tup in replacement_list:
replacement_names_by_index[tup[0]] = name_tup replacement_tup_by_index[tup[0]] = name_tup
sorted_items = replacement_names_by_index.items() sorted_items = replacement_tup_by_index.items()
sorted_items.sort(key=lambda tup: tup[0]) sorted_items.sort(key=lambda tup: tup[0])
for index, name_tup in sorted_items: for index, name_tup in sorted_items:
count = index - src_index count = index - src_index
...@@ -90,12 +90,12 @@ def ClusterSymbols(symbols): ...@@ -90,12 +90,12 @@ def ClusterSymbols(symbols):
symbols[src_index:src_index + count]) symbols[src_index:src_index + count])
src_index = index + 1 src_index = index + 1
dest_index += count dest_index += count
if name_tup not in seen_names: if name_tup not in seen_tups:
seen_names.add(name_tup) seen_tups.add(name_tup)
group_symbols = [tup[1] for tup in replacements_by_name[name_tup]] group_symbols = [tup[1] for tup in replacements_by_tup[name_tup]]
grouped_symbols[dest_index] = symbols._CreateTransformed( grouped_symbols[dest_index] = symbols._CreateTransformed(
group_symbols, name=name_tup[0], full_name=name_tup[1], group_symbols, name=name_tup[1], full_name=name_tup[2],
section_name=group_symbols[0].section_name) section_name=name_tup[0])
dest_index += 1 dest_index += 1
assert len(grouped_symbols[dest_index:None]) == len(symbols[src_index:None]) assert len(grouped_symbols[dest_index:None]) == len(symbols[src_index:None])
......
...@@ -228,26 +228,37 @@ def DescribeSizeInfoCoverage(size_info): ...@@ -228,26 +228,37 @@ def DescribeSizeInfoCoverage(size_info):
expected_size = size_info.section_sizes[ expected_size = size_info.section_sizes[
models.SECTION_TO_SECTION_NAME[section]] models.SECTION_TO_SECTION_NAME[section]]
def one_stat(group):
template = ('Section {}: has {:.1%} of {} bytes accounted for from '
'{} symbols. {} bytes are unaccounted for.')
actual_size = group.size
size_percent = float(actual_size) / expected_size
return template.format(section, size_percent, actual_size, len(group),
expected_size - actual_size)
in_section = size_info.symbols.WhereInSection(section) in_section = size_info.symbols.WhereInSection(section)
yield one_stat(in_section) actual_size = in_section.size
size_percent = float(actual_size) / expected_size
yield ('Section {}: has {:.1%} of {} bytes accounted for from '
'{} symbols. {} bytes are unaccounted for.').format(
section, size_percent, actual_size, len(in_section),
expected_size - actual_size)
star_syms = in_section.WhereNameMatches(r'^\*')
padding = in_section.padding - star_syms.padding
anonymous_syms = star_syms.Inverted().WhereHasAnyAttribution().Inverted()
yield '* Padding accounts for {} bytes ({:.1%})'.format( yield '* Padding accounts for {} bytes ({:.1%})'.format(
in_section.padding, float(in_section.padding) / in_section.size) padding, float(padding) / in_section.size)
if len(star_syms):
yield ('* {} placeholders (symbols that start with **) account for '
'{} bytes ({:.1%})').format(
len(star_syms), star_syms.pss, star_syms.pss / in_section.size)
if anonymous_syms:
yield '* {} anonymous symbols account for {} bytes ({:.1%})'.format(
len(anonymous_syms), int(anonymous_syms.pss),
star_syms.pss / in_section.size)
aliased_symbols = in_section.Filter(lambda s: s.aliases) aliased_symbols = in_section.Filter(lambda s: s.aliases)
if len(aliased_symbols): if section == 't':
uniques = sum(1 for s in aliased_symbols.IterUniqueSymbols()) if len(aliased_symbols):
yield '* Contains {} aliases, mapped to {} addresses ({} bytes)'.format( uniques = sum(1 for s in aliased_symbols.IterUniqueSymbols())
len(aliased_symbols), uniques, aliased_symbols.size) yield ('* Contains {} aliases, mapped to {} unique addresses '
else: '({} bytes)').format(
yield '* Contains 0 aliases' len(aliased_symbols), uniques, aliased_symbols.size)
else:
yield '* Contains 0 aliases'
inlined_symbols = in_section.WhereObjectPathMatches('{shared}') inlined_symbols = in_section.WhereObjectPathMatches('{shared}')
if len(inlined_symbols): if len(inlined_symbols):
...@@ -256,17 +267,6 @@ def DescribeSizeInfoCoverage(size_info): ...@@ -256,17 +267,6 @@ def DescribeSizeInfoCoverage(size_info):
else: else:
yield '* 0 symbols have shared ownership' yield '* 0 symbols have shared ownership'
star_syms = in_section.WhereNameMatches(r'^\*')
attributed_syms = star_syms.Inverted().WhereHasAnyAttribution()
anonymous_syms = attributed_syms.Inverted()
if star_syms or anonymous_syms:
missing_size = star_syms.pss + anonymous_syms.pss
anon_str = ''
if len(anonymous_syms):
anon_str = 'and {} anonymous entries '.format(len(anonymous_syms))
yield '* Without {} merge sections {}(accounting for {} bytes):'.format(
len(star_syms), anon_str, int(missing_size))
yield ' * ' + one_stat(attributed_syms)
def _UtcToLocal(utc): def _UtcToLocal(utc):
......
...@@ -35,16 +35,22 @@ class MapFileParser(object): ...@@ -35,16 +35,22 @@ class MapFileParser(object):
A tuple of (section_sizes, symbols). A tuple of (section_sizes, symbols).
""" """
self._lines = iter(lines) self._lines = iter(lines)
logging.info('Parsing common symbols') logging.debug('Scanning for Header')
self._common_symbols = self._ParseCommonSymbols()
logging.debug('.bss common entries: %d', len(self._common_symbols)) while True:
logging.info('Parsing section symbols') line = self._SkipToLineWithPrefix('Common symbol', 'Memory map')
self._ParseSections() if line.startswith('Common symbol'):
self._common_symbols = self._ParseCommonSymbols()
logging.debug('.bss common entries: %d', len(self._common_symbols))
continue
elif line.startswith('Memory map'):
self._ParseSections()
break
return self._section_sizes, self._symbols return self._section_sizes, self._symbols
def _SkipToLineWithPrefix(self, prefix): def _SkipToLineWithPrefix(self, prefix, prefix2=None):
for l in self._lines: for l in self._lines:
if l.startswith(prefix): if l.startswith(prefix) or (prefix2 and l.startswith(prefix2)):
return l return l
def _ParsePossiblyWrappedParts(self, line, count): def _ParsePossiblyWrappedParts(self, line, count):
...@@ -65,7 +71,6 @@ class MapFileParser(object): ...@@ -65,7 +71,6 @@ class MapFileParser(object):
# ff_cos_131072_fixed # ff_cos_131072_fixed
# 0x20000 obj/third_party/<snip> # 0x20000 obj/third_party/<snip>
ret = [] ret = []
self._SkipToLineWithPrefix('Common symbol')
next(self._lines) # Skip past blank line next(self._lines) # Skip past blank line
name, size_str, path = None, None, None name, size_str, path = None, None, None
...@@ -105,7 +110,6 @@ class MapFileParser(object): ...@@ -105,7 +110,6 @@ class MapFileParser(object):
# ** merge constants # ** merge constants
# 0x0255fb00 0x8 # 0x0255fb00 0x8
# ** common 0x02db5700 0x13ab48 # ** common 0x02db5700 0x13ab48
self._SkipToLineWithPrefix('Memory map')
syms = self._symbols syms = self._symbols
symbol_gap_count = 0 symbol_gap_count = 0
while True: while True:
...@@ -118,15 +122,18 @@ class MapFileParser(object): ...@@ -118,15 +122,18 @@ class MapFileParser(object):
parts = self._ParsePossiblyWrappedParts(line, 3) parts = self._ParsePossiblyWrappedParts(line, 3)
if not parts: if not parts:
break break
section_name, address, size_str = parts section_name, section_address_str, section_size_str = parts
self._section_sizes[section_name] = int(size_str[2:], 16) section_address = int(section_address_str[2:], 16)
section_size = int(section_size_str[2:], 16)
self._section_sizes[section_name] = section_size
if (section_name in ('.bss', '.rodata', '.text') or if (section_name in ('.bss', '.rodata', '.text') or
section_name.startswith('.data')): section_name.startswith('.data')):
logging.info('Parsing %s', section_name) logging.info('Parsing %s', section_name)
if section_name == '.bss': if section_name == '.bss':
# Common symbols have no address.
syms.extend(self._common_symbols) syms.extend(self._common_symbols)
prefix_len = len(section_name) + 1 # + 1 for the trailing . prefix_len = len(section_name) + 1 # + 1 for the trailing .
merge_symbol_start_address = 0 merge_symbol_start_address = section_address
sym_count_at_start = len(syms) sym_count_at_start = len(syms)
line = next(self._lines) line = next(self._lines)
# Parse section symbols. # Parse section symbols.
...@@ -202,21 +209,32 @@ class MapFileParser(object): ...@@ -202,21 +209,32 @@ class MapFileParser(object):
# Finish off active address gap / merge section. # Finish off active address gap / merge section.
if merge_symbol_start_address: if merge_symbol_start_address:
merge_size = address - merge_symbol_start_address merge_size = address - merge_symbol_start_address
logging.debug('Merge symbol of size %d found at:\n %r',
merge_size, syms[-1])
# Set size=0 so that it will show up as padding.
sym = models.Symbol(
section_name, 0,
address=address,
name='** symbol gap %d' % symbol_gap_count,
object_path=path)
symbol_gap_count += 1
syms.append(sym)
merge_symbol_start_address = 0 merge_symbol_start_address = 0
if merge_size > 0:
# merge_size == 0 for the initial symbol generally.
logging.debug('Merge symbol of size %d found at:\n %r',
merge_size, syms[-1])
# Set size=0 so that it will show up as padding.
sym = models.Symbol(
section_name, 0,
address=address,
name='** symbol gap %d' % symbol_gap_count,
object_path=path)
symbol_gap_count += 1
syms.append(sym)
sym = models.Symbol(section_name, size, address=address, sym = models.Symbol(section_name, size, address=address,
name=name or mangled_name, object_path=path) name=name or mangled_name, object_path=path)
syms.append(sym) syms.append(sym)
section_end_address = section_address + section_size
if section_name != '.bss' and (
syms[-1].end_address < section_end_address):
# Set size=0 so that it will show up as padding.
sym = models.Symbol(
section_name, 0,
address=section_end_address,
name='** symbol gap %d (end of section)' % symbol_gap_count)
syms.append(sym)
logging.debug('Symbol count for %s: %d', section_name, logging.debug('Symbol count for %s: %d', section_name,
len(syms) - sym_count_at_start) len(syms) - sym_count_at_start)
except: except:
......
...@@ -360,7 +360,7 @@ class SymbolGroup(BaseSymbol): ...@@ -360,7 +360,7 @@ class SymbolGroup(BaseSymbol):
def pss(self): def pss(self):
if self._pss is None: if self._pss is None:
if self.IsBss(): if self.IsBss():
self._pss = self.size self._pss = float(self.size)
else: else:
self._pss = sum(s.pss for s in self) self._pss = sum(s.pss for s in self)
return self._pss return self._pss
......
...@@ -4,7 +4,9 @@ ...@@ -4,7 +4,9 @@
"""Functions that rely on parsing output of "nm" tool.""" """Functions that rely on parsing output of "nm" tool."""
import atexit
import collections import collections
import errno
import logging import logging
import os import os
import subprocess import subprocess
...@@ -12,6 +14,8 @@ import sys ...@@ -12,6 +14,8 @@ import sys
import concurrent import concurrent
_active_subprocesses = None
def CollectAliasesByAddress(elf_path, tool_prefix): def CollectAliasesByAddress(elf_path, tool_prefix):
"""Runs nm on |elf_path| and returns a dict of address->[names]""" """Runs nm on |elf_path| and returns a dict of address->[names]"""
...@@ -168,6 +172,11 @@ class _BulkObjectFileAnalyzerWorker(object): ...@@ -168,6 +172,11 @@ class _BulkObjectFileAnalyzerWorker(object):
return self._result return self._result
def _TerminateSubprocesses():
for proc in _active_subprocesses:
proc.kill()
class _BulkObjectFileAnalyzerMaster(object): class _BulkObjectFileAnalyzerMaster(object):
"""Runs BulkObjectFileAnalyzer in a subprocess.""" """Runs BulkObjectFileAnalyzer in a subprocess."""
...@@ -177,11 +186,16 @@ class _BulkObjectFileAnalyzerMaster(object): ...@@ -177,11 +186,16 @@ class _BulkObjectFileAnalyzerMaster(object):
self._output_directory = output_directory self._output_directory = output_directory
def _Spawn(self): def _Spawn(self):
global _active_subprocesses
log_level = str(logging.getLogger().getEffectiveLevel()) log_level = str(logging.getLogger().getEffectiveLevel())
args = [sys.executable, __file__, log_level, self._tool_prefix, args = [sys.executable, __file__, log_level, self._tool_prefix,
self._output_directory] self._output_directory]
self._process = subprocess.Popen( self._process = subprocess.Popen(
args, stdin=subprocess.PIPE, stdout=subprocess.PIPE) args, stdin=subprocess.PIPE, stdout=subprocess.PIPE)
if _active_subprocesses is None:
_active_subprocesses = []
atexit.register(_TerminateSubprocesses)
_active_subprocesses.append(self._process)
def AnalyzePaths(self, paths): def AnalyzePaths(self, paths):
if self._process is None: if self._process is None:
...@@ -195,6 +209,7 @@ class _BulkObjectFileAnalyzerMaster(object): ...@@ -195,6 +209,7 @@ class _BulkObjectFileAnalyzerMaster(object):
def Close(self): def Close(self):
assert not self._process.stdin.closed assert not self._process.stdin.closed
self._process.stdin.close() self._process.stdin.close()
_active_subprocesses.remove(self._process)
def Get(self): def Get(self):
assert self._process.stdin.closed assert self._process.stdin.closed
...@@ -212,8 +227,9 @@ if concurrent.DISABLE_ASYNC: ...@@ -212,8 +227,9 @@ if concurrent.DISABLE_ASYNC:
def _SubMain(log_level, tool_prefix, output_directory): def _SubMain(log_level, tool_prefix, output_directory):
logging.basicConfig(level=int(log_level), logging.basicConfig(
format='%(levelname).1s %(relativeCreated)6d %(message)s') level=int(log_level),
format='nm: %(levelname).1s %(relativeCreated)6d %(message)s')
bulk_analyzer = _BulkObjectFileAnalyzerWorker(tool_prefix, output_directory) bulk_analyzer = _BulkObjectFileAnalyzerWorker(tool_prefix, output_directory)
while True: while True:
payload_len = int(sys.stdin.read(8) or '0', 16) payload_len = int(sys.stdin.read(8) or '0', 16)
...@@ -226,9 +242,15 @@ def _SubMain(log_level, tool_prefix, output_directory): ...@@ -226,9 +242,15 @@ def _SubMain(log_level, tool_prefix, output_directory):
bulk_analyzer.Close() bulk_analyzer.Close()
paths_by_name = bulk_analyzer.Get() paths_by_name = bulk_analyzer.Get()
encoded_keys, encoded_values = concurrent.EncodeDictOfLists(paths_by_name) encoded_keys, encoded_values = concurrent.EncodeDictOfLists(paths_by_name)
sys.stdout.write('%08x' % len(encoded_keys)) try:
sys.stdout.write(encoded_keys) sys.stdout.write('%08x' % len(encoded_keys))
sys.stdout.write(encoded_values) sys.stdout.write(encoded_keys)
sys.stdout.write(encoded_values)
except IOError, e:
# Parent process exited.
if e.errno == errno.EPIPE:
sys.exit(1)
logging.debug('nm bulk subprocess finished.') logging.debug('nm bulk subprocess finished.')
......
Section r: has 44.6% of 2641540 bytes accounted for from 7 symbols. 3286112 bytes are unaccounted for. Section r: has 100.0% of 5927652 bytes accounted for from 9 symbols. 0 bytes are unaccounted for.
* Padding accounts for 366 bytes (0.0%) * Padding accounts for 11 bytes (0.0%)
* Contains 0 aliases * 4 placeholders (symbols that start with **) account for 5927509.0 bytes (100.0%)
* 0 symbols have shared ownership * 0 symbols have shared ownership
* Without 2 merge sections (accounting for 2641394 bytes):
* Section r: has 0.0% of 146 bytes accounted for from 5 symbols. 5927506 bytes are unaccounted for.
Section b: has 40.3% of 524520 bytes accounted for from 6 symbols. 775936 bytes are unaccounted for. Section b: has 40.3% of 524520 bytes accounted for from 6 symbols. 775936 bytes are unaccounted for.
* Padding accounts for 196 bytes (0.0%) * Padding accounts for 196 bytes (0.0%)
* Contains 0 aliases
* 0 symbols have shared ownership * 0 symbols have shared ownership
Section d: has 40.4% of 790284 bytes accounted for from 13 symbols. 1166732 bytes are unaccounted for. Section d: has 100.0% of 1957016 bytes accounted for from 15 symbols. 0 bytes are unaccounted for.
* Padding accounts for 16 bytes (0.0%) * Padding accounts for 16 bytes (0.0%)
* Contains 0 aliases * 2 placeholders (symbols that start with **) account for 1166732.0 bytes (59.6%)
* 0 symbols have shared ownership * 0 symbols have shared ownership
Section t: has 0.2% of 79710 bytes accounted for from 14 symbols. 35821002 bytes are unaccounted for. Section t: has 100.0% of 35900712 bytes accounted for from 15 symbols. 0 bytes are unaccounted for.
* Padding accounts for 9806 bytes (12.3%) * Padding accounts for 48 bytes (0.0%)
* 3 placeholders (symbols that start with **) account for 35830760.0 bytes (99.8%)
* Contains 0 aliases * Contains 0 aliases
* 0 symbols have shared ownership * 0 symbols have shared ownership
* Without 2 merge sections (accounting for 9758 bytes):
* Section t: has 0.2% of 69952 bytes accounted for from 12 symbols. 35830760 bytes are unaccounted for.
.bss@0(size_without_padding=262144,padding=0,name=ff_cos_131072,object_path=third_party/ffmpeg/libffmpeg_internal.a/fft_float.o,source_path=,flags={}) .bss@0(size_without_padding=262144,padding=0,name=ff_cos_131072,object_path=third_party/ffmpeg/libffmpeg_internal.a/fft_float.o,source_path=,flags={})
.bss@0(size_without_padding=131072,padding=0,name=ff_cos_131072_fixed,object_path=third_party/ffmpeg/libffmpeg_internal.a/fft_fixed.o,source_path=,flags={}) .bss@0(size_without_padding=131072,padding=0,name=ff_cos_131072_fixed,object_path=third_party/ffmpeg/libffmpeg_internal.a/fft_fixed.o,source_path=,flags={})
.bss@0(size_without_padding=131072,padding=0,name=ff_cos_65536,object_path=third_party/ffmpeg/libffmpeg_internal.a/fft_float.o,source_path=,flags={}) .bss@0(size_without_padding=131072,padding=0,name=ff_cos_65536,object_path=third_party/ffmpeg/libffmpeg_internal.a/fft_float.o,source_path=,flags={})
...@@ -29,21 +25,25 @@ Section t: has 0.2% of 79710 bytes accounted for from 14 symbols. 35821002 bytes ...@@ -29,21 +25,25 @@ Section t: has 0.2% of 79710 bytes accounted for from 14 symbols. 35821002 bytes
.data@2de7008(size_without_padding=152,padding=0,name=base::android::kBaseRegisteredMethods,object_path=third_party/WebKit.a/ContiguousContainer.o,source_path=,flags={rel}) .data@2de7008(size_without_padding=152,padding=0,name=base::android::kBaseRegisteredMethods,object_path=third_party/WebKit.a/ContiguousContainer.o,source_path=,flags={rel})
.data@2de70a0(size_without_padding=4,padding=0,name=base::android::g_renderer_histogram_code,object_path=third_party/WebKit.a/ContiguousContainer.o,source_path=,flags={anon}) .data@2de70a0(size_without_padding=4,padding=0,name=base::android::g_renderer_histogram_code,object_path=third_party/WebKit.a/ContiguousContainer.o,source_path=,flags={anon})
.data@2de70a4(size_without_padding=4,padding=0,name=base::android::g_library_version_number,object_path=third_party/WebKit.a/ContiguousContainer.o,source_path=,flags={anon,rel.loc}) .data@2de70a4(size_without_padding=4,padding=0,name=base::android::g_library_version_number,object_path=third_party/WebKit.a/ContiguousContainer.o,source_path=,flags={anon,rel.loc})
.data@2dffd88(size_without_padding=0,padding=101600,name=** symbol gap 3 (end of section),object_path=,source_path=,flags={})
.data.rel.ro@2cd8500(size_without_padding=56,padding=0,name=ChromeMainDelegateAndroid [vtable],object_path=third_party/WebKit.a/PaintChunker.o,source_path=,flags={}) .data.rel.ro@2cd8500(size_without_padding=56,padding=0,name=ChromeMainDelegateAndroid [vtable],object_path=third_party/WebKit.a/PaintChunker.o,source_path=,flags={})
.data.rel.ro@2cd8538(size_without_padding=24,padding=0,name=mojo::MessageReceiver [vtable],object_path=base/base/page_allocator.o,source_path=,flags={}) .data.rel.ro@2cd8538(size_without_padding=24,padding=0,name=mojo::MessageReceiver [vtable],object_path=base/base/page_allocator.o,source_path=,flags={})
.data.rel.ro@2cd8550(size_without_padding=12,padding=0,name=kMethodsAnimationFrameTimeHistogram,object_path=base/base/page_allocator.o,source_path=,flags={}) .data.rel.ro@2cd8550(size_without_padding=12,padding=0,name=kMethodsAnimationFrameTimeHistogram,object_path=base/base/page_allocator.o,source_path=,flags={})
.data.rel.ro@2ddc608(size_without_padding=0,padding=1065132,name=** symbol gap 3 (end of section),object_path=,source_path=,flags={})
.data.rel.ro.local@2c176f0(size_without_padding=56,padding=0,name=ChromeMainDelegate [vtable],object_path=third_party/icu/icuuc/ucnv_ext.o,source_path=,flags={}) .data.rel.ro.local@2c176f0(size_without_padding=56,padding=0,name=ChromeMainDelegate [vtable],object_path=third_party/icu/icuuc/ucnv_ext.o,source_path=,flags={})
.data.rel.ro.local@2c17728(size_without_padding=24,padding=0,name=chrome::mojom::FieldTrialRecorder [vtable],object_path=third_party/icu/icuuc/ucnv_ext.o,source_path=,flags={}) .data.rel.ro.local@2c17728(size_without_padding=24,padding=0,name=chrome::mojom::FieldTrialRecorder [vtable],object_path=third_party/icu/icuuc/ucnv_ext.o,source_path=,flags={})
.data.rel.ro.local@2c17740(size_without_padding=789904,padding=0,name=chrome::mojom::FieldTrialRecorderProxy [vtable],object_path=third_party/WebKit.a/ContiguousContainer.o,source_path=,flags={}) .data.rel.ro.local@2c17740(size_without_padding=789904,padding=0,name=chrome::mojom::FieldTrialRecorderProxy [vtable],object_path=third_party/WebKit.a/ContiguousContainer.o,source_path=,flags={})
.data.rel.ro.local@2cd84e0(size_without_padding=16,padding=16,name=.Lswitch.table.45,object_path=third_party/gvr-android-sdk/libgvr_shim_static_arm.a/libcontroller_api_impl.a_controller_api_impl.o,source_path=,flags={}) .data.rel.ro.local@2cd84e0(size_without_padding=16,padding=16,name=.Lswitch.table.45,object_path=third_party/gvr-android-sdk/libgvr_shim_static_arm.a/libcontroller_api_impl.a_controller_api_impl.o,source_path=,flags={})
.data.rel.ro.local@2cd84f0(size_without_padding=8,padding=0,name=kSystemClassPrefixes,object_path=third_party/gvr-android-sdk/libgvr_shim_static_arm.a/libport_android_jni.a_jni_utils.o,source_path=,flags={anon}) .data.rel.ro.local@2cd84f0(size_without_padding=8,padding=0,name=kSystemClassPrefixes,object_path=third_party/gvr-android-sdk/libgvr_shim_static_arm.a/libport_android_jni.a_jni_utils.o,source_path=,flags={anon})
.rodata@266e600(size_without_padding=1965409,padding=0,name=** merge strings,object_path=,source_path=,flags={}) .rodata@266e600(size_without_padding=1965409,padding=0,name=** merge strings,object_path=,source_path=,flags={})
.rodata@284e364(size_without_padding=8,padding=3,name=,object_path=base/base/page_allocator.o,source_path=,flags={}) .rodata@284e364(size_without_padding=0,padding=3,name=** symbol gap 2,object_path=base/base/page_allocator.o,source_path=,flags={})
.rodata@284e364(size_without_padding=8,padding=0,name=,object_path=base/base/page_allocator.o,source_path=,flags={})
.rodata@284e370(size_without_padding=40,padding=4,name=Name,object_path=base/base/page_allocator.o,source_path=,flags={}) .rodata@284e370(size_without_padding=40,padding=4,name=Name,object_path=base/base/page_allocator.o,source_path=,flags={})
.rodata@284e398(size_without_padding=32,padding=0,name=chrome::mojom::FilePatcher::Name_,object_path=third_party/WebKit.a/ContiguousContainer.o,source_path=,flags={}) .rodata@284e398(size_without_padding=32,padding=0,name=chrome::mojom::FilePatcher::Name_,object_path=third_party/WebKit.a/ContiguousContainer.o,source_path=,flags={})
.rodata@284e518(size_without_padding=675633,padding=352,name=** merge strings,object_path=,source_path=,flags={}) .rodata@284e518(size_without_padding=675633,padding=352,name=** merge strings,object_path=,source_path=,flags={})
.rodata@28f3450(size_without_padding=48,padding=7,name=kAnimationFrameTimeHistogramClassPath,object_path=third_party/WebKit.a/PaintChunker.o,source_path=,flags={anon}) .rodata@28f3450(size_without_padding=48,padding=7,name=kAnimationFrameTimeHistogramClassPath,object_path=third_party/WebKit.a/PaintChunker.o,source_path=,flags={anon})
.rodata@28f3480(size_without_padding=4,padding=0,name=blink::CSSValueKeywordsHash::findValueImpl::value_word_list,object_path=third_party/WebKit.a/PaintChunker.o,source_path=,flags={anon}) .rodata@28f3480(size_without_padding=4,padding=0,name=blink::CSSValueKeywordsHash::findValueImpl::value_word_list,object_path=third_party/WebKit.a/PaintChunker.o,source_path=,flags={anon})
.rodata@2c158e4(size_without_padding=0,padding=3286112,name=** symbol gap 3 (end of section),object_path=,source_path=,flags={})
.text@28d900(size_without_padding=16,padding=0,name=_GLOBAL__sub_I_page_allocator.cc,object_path=base/base/page_allocator.o,source_path=,flags={startup}) .text@28d900(size_without_padding=16,padding=0,name=_GLOBAL__sub_I_page_allocator.cc,object_path=base/base/page_allocator.o,source_path=,flags={startup})
.text@28d910(size_without_padding=56,padding=0,name=_GLOBAL__sub_I_bbr_sender.cc,object_path=base/base/page_allocator.o,source_path=,flags={startup}) .text@28d910(size_without_padding=56,padding=0,name=_GLOBAL__sub_I_bbr_sender.cc,object_path=base/base/page_allocator.o,source_path=,flags={startup})
.text@28d948(size_without_padding=28,padding=0,name=_GLOBAL__sub_I_pacing_sender.cc,object_path=base/base/page_allocator.o,source_path=,flags={startup}) .text@28d948(size_without_padding=28,padding=0,name=_GLOBAL__sub_I_pacing_sender.cc,object_path=base/base/page_allocator.o,source_path=,flags={startup})
...@@ -58,3 +58,4 @@ Section t: has 0.2% of 79710 bytes accounted for from 14 symbols. 35821002 bytes ...@@ -58,3 +58,4 @@ Section t: has 0.2% of 79710 bytes accounted for from 14 symbols. 35821002 bytes
.text@2a0020(size_without_padding=24,padding=4,name=blink::ContiguousContainerBase::ContiguousContainerBase,object_path=third_party/WebKit.a/ContiguousContainer.o,source_path=,flags={}) .text@2a0020(size_without_padding=24,padding=4,name=blink::ContiguousContainerBase::ContiguousContainerBase,object_path=third_party/WebKit.a/ContiguousContainer.o,source_path=,flags={})
.text@2a1000(size_without_padding=0,padding=4040,name=** symbol gap 1,object_path=third_party/WebKit.a/ContiguousContainer.o,source_path=,flags={}) .text@2a1000(size_without_padding=0,padding=4040,name=** symbol gap 1,object_path=third_party/WebKit.a/ContiguousContainer.o,source_path=,flags={})
.text@2a1000(size_without_padding=94,padding=0,name=blink::PaintChunker::releasePaintChunks [clone .part.1],object_path=third_party/WebKit.a/ContiguousContainer.o,source_path=,flags={anon}) .text@2a1000(size_without_padding=94,padding=0,name=blink::PaintChunker::releasePaintChunks [clone .part.1],object_path=third_party/WebKit.a/ContiguousContainer.o,source_path=,flags={anon})
.text@24ca628(size_without_padding=0,padding=35821002,name=** symbol gap 2 (end of section),object_path=,source_path=,flags={})
...@@ -5,26 +5,22 @@ elf_mtime={redacted} ...@@ -5,26 +5,22 @@ elf_mtime={redacted}
git_revision=abc123 git_revision=abc123
gn_args=var1=true var2="foo" gn_args=var1=true var2="foo"
map_file_name=../test.map map_file_name=../test.map
Section r: has 44.6% of 2641540 bytes accounted for from 7 symbols. 3286112 bytes are unaccounted for. Section r: has 100.0% of 5927652 bytes accounted for from 9 symbols. 0 bytes are unaccounted for.
* Padding accounts for 366 bytes (0.0%) * Padding accounts for 11 bytes (0.0%)
* Contains 0 aliases * 4 placeholders (symbols that start with **) account for 5927509.0 bytes (100.0%)
* 0 symbols have shared ownership * 0 symbols have shared ownership
* Without 2 merge sections (accounting for 2641394 bytes):
* Section r: has 0.0% of 146 bytes accounted for from 5 symbols. 5927506 bytes are unaccounted for.
Section b: has 40.3% of 524520 bytes accounted for from 6 symbols. 775936 bytes are unaccounted for. Section b: has 40.3% of 524520 bytes accounted for from 6 symbols. 775936 bytes are unaccounted for.
* Padding accounts for 196 bytes (0.0%) * Padding accounts for 196 bytes (0.0%)
* Contains 0 aliases
* 0 symbols have shared ownership * 0 symbols have shared ownership
Section d: has 40.4% of 790284 bytes accounted for from 13 symbols. 1166732 bytes are unaccounted for. Section d: has 100.0% of 1957016 bytes accounted for from 15 symbols. 0 bytes are unaccounted for.
* Padding accounts for 16 bytes (0.0%) * Padding accounts for 16 bytes (0.0%)
* Contains 0 aliases * 2 placeholders (symbols that start with **) account for 1166732.0 bytes (59.6%)
* 0 symbols have shared ownership * 0 symbols have shared ownership
Section t: has 0.2% of 79710 bytes accounted for from 17 symbols. 35821002 bytes are unaccounted for. Section t: has 100.0% of 35900712 bytes accounted for from 18 symbols. 0 bytes are unaccounted for.
* Padding accounts for 9806 bytes (12.3%) * Padding accounts for 48 bytes (0.0%)
* Contains 5 aliases, mapped to 2 addresses (60 bytes) * 3 placeholders (symbols that start with **) account for 35830760.0 bytes (99.8%)
* Contains 5 aliases, mapped to 2 unique addresses (60 bytes)
* 1 symbols have shared ownership (12 bytes) * 1 symbols have shared ownership (12 bytes)
* Without 2 merge sections (accounting for 9758 bytes):
* Section t: has 0.2% of 69952 bytes accounted for from 15 symbols. 35830760 bytes are unaccounted for.
.bss@0(size_without_padding=262144,padding=0,name=ff_cos_131072,object_path=third_party/ffmpeg/libffmpeg_internal.a/fft_float.o,source_path=third_party/fft_float.cc,flags={}) .bss@0(size_without_padding=262144,padding=0,name=ff_cos_131072,object_path=third_party/ffmpeg/libffmpeg_internal.a/fft_float.o,source_path=third_party/fft_float.cc,flags={})
.bss@0(size_without_padding=131072,padding=0,name=ff_cos_131072_fixed,object_path=third_party/ffmpeg/libffmpeg_internal.a/fft_fixed.o,source_path=third_party/fft_fixed.cc,flags={}) .bss@0(size_without_padding=131072,padding=0,name=ff_cos_131072_fixed,object_path=third_party/ffmpeg/libffmpeg_internal.a/fft_fixed.o,source_path=third_party/fft_fixed.cc,flags={})
.bss@0(size_without_padding=131072,padding=0,name=ff_cos_65536,object_path=third_party/ffmpeg/libffmpeg_internal.a/fft_float.o,source_path=third_party/fft_float.cc,flags={}) .bss@0(size_without_padding=131072,padding=0,name=ff_cos_65536,object_path=third_party/ffmpeg/libffmpeg_internal.a/fft_float.o,source_path=third_party/fft_float.cc,flags={})
...@@ -36,21 +32,25 @@ Section t: has 0.2% of 79710 bytes accounted for from 17 symbols. 35821002 bytes ...@@ -36,21 +32,25 @@ Section t: has 0.2% of 79710 bytes accounted for from 17 symbols. 35821002 bytes
.data@2de7008(size_without_padding=152,padding=0,name=base::android::kBaseRegisteredMethods,object_path=third_party/WebKit.a/ContiguousContainer.o,source_path=third_party/container.c,flags={rel}) .data@2de7008(size_without_padding=152,padding=0,name=base::android::kBaseRegisteredMethods,object_path=third_party/WebKit.a/ContiguousContainer.o,source_path=third_party/container.c,flags={rel})
.data@2de70a0(size_without_padding=4,padding=0,name=base::android::g_renderer_histogram_code,object_path=third_party/WebKit.a/ContiguousContainer.o,source_path=third_party/container.c,flags={anon}) .data@2de70a0(size_without_padding=4,padding=0,name=base::android::g_renderer_histogram_code,object_path=third_party/WebKit.a/ContiguousContainer.o,source_path=third_party/container.c,flags={anon})
.data@2de70a4(size_without_padding=4,padding=0,name=base::android::g_library_version_number,object_path=third_party/WebKit.a/ContiguousContainer.o,source_path=third_party/container.c,flags={anon,rel.loc}) .data@2de70a4(size_without_padding=4,padding=0,name=base::android::g_library_version_number,object_path=third_party/WebKit.a/ContiguousContainer.o,source_path=third_party/container.c,flags={anon,rel.loc})
.data@2dffd88(size_without_padding=0,padding=101600,name=** symbol gap 3 (end of section),object_path=,source_path=,flags={})
.data.rel.ro@2cd8500(size_without_padding=56,padding=0,name=ChromeMainDelegateAndroid [vtable],object_path=third_party/WebKit.a/PaintChunker.o,source_path=third_party/paint.cc,flags={}) .data.rel.ro@2cd8500(size_without_padding=56,padding=0,name=ChromeMainDelegateAndroid [vtable],object_path=third_party/WebKit.a/PaintChunker.o,source_path=third_party/paint.cc,flags={})
.data.rel.ro@2cd8538(size_without_padding=24,padding=0,name=mojo::MessageReceiver [vtable],object_path=base/base/page_allocator.o,source_path=base/page_allocator.cc,flags={}) .data.rel.ro@2cd8538(size_without_padding=24,padding=0,name=mojo::MessageReceiver [vtable],object_path=base/base/page_allocator.o,source_path=base/page_allocator.cc,flags={})
.data.rel.ro@2cd8550(size_without_padding=12,padding=0,name=kMethodsAnimationFrameTimeHistogram,object_path=base/base/page_allocator.o,source_path=base/page_allocator.cc,flags={}) .data.rel.ro@2cd8550(size_without_padding=12,padding=0,name=kMethodsAnimationFrameTimeHistogram,object_path=base/base/page_allocator.o,source_path=base/page_allocator.cc,flags={})
.data.rel.ro@2ddc608(size_without_padding=0,padding=1065132,name=** symbol gap 3 (end of section),object_path=,source_path=,flags={})
.data.rel.ro.local@2c176f0(size_without_padding=56,padding=0,name=ChromeMainDelegate [vtable],object_path=third_party/icu/icuuc/ucnv_ext.o,source_path=third_party/icu/ucnv_ext.c,flags={}) .data.rel.ro.local@2c176f0(size_without_padding=56,padding=0,name=ChromeMainDelegate [vtable],object_path=third_party/icu/icuuc/ucnv_ext.o,source_path=third_party/icu/ucnv_ext.c,flags={})
.data.rel.ro.local@2c17728(size_without_padding=24,padding=0,name=chrome::mojom::FieldTrialRecorder [vtable],object_path=third_party/icu/icuuc/ucnv_ext.o,source_path=third_party/icu/ucnv_ext.c,flags={}) .data.rel.ro.local@2c17728(size_without_padding=24,padding=0,name=chrome::mojom::FieldTrialRecorder [vtable],object_path=third_party/icu/icuuc/ucnv_ext.o,source_path=third_party/icu/ucnv_ext.c,flags={})
.data.rel.ro.local@2c17740(size_without_padding=789904,padding=0,name=chrome::mojom::FieldTrialRecorderProxy [vtable],object_path=third_party/WebKit.a/ContiguousContainer.o,source_path=third_party/container.c,flags={}) .data.rel.ro.local@2c17740(size_without_padding=789904,padding=0,name=chrome::mojom::FieldTrialRecorderProxy [vtable],object_path=third_party/WebKit.a/ContiguousContainer.o,source_path=third_party/container.c,flags={})
.data.rel.ro.local@2cd84e0(size_without_padding=16,padding=16,name=.Lswitch.table.45,object_path=third_party/gvr-android-sdk/libgvr_shim_static_arm.a/libcontroller_api_impl.a_controller_api_impl.o,source_path=,flags={}) .data.rel.ro.local@2cd84e0(size_without_padding=16,padding=16,name=.Lswitch.table.45,object_path=third_party/gvr-android-sdk/libgvr_shim_static_arm.a/libcontroller_api_impl.a_controller_api_impl.o,source_path=,flags={})
.data.rel.ro.local@2cd84f0(size_without_padding=8,padding=0,name=kSystemClassPrefixes,object_path=third_party/gvr-android-sdk/libgvr_shim_static_arm.a/libport_android_jni.a_jni_utils.o,source_path=,flags={anon}) .data.rel.ro.local@2cd84f0(size_without_padding=8,padding=0,name=kSystemClassPrefixes,object_path=third_party/gvr-android-sdk/libgvr_shim_static_arm.a/libport_android_jni.a_jni_utils.o,source_path=,flags={anon})
.rodata@266e600(size_without_padding=1965409,padding=0,name=** merge strings,object_path=,source_path=,flags={}) .rodata@266e600(size_without_padding=1965409,padding=0,name=** merge strings,object_path=,source_path=,flags={})
.rodata@284e364(size_without_padding=8,padding=3,name=,object_path=base/base/page_allocator.o,source_path=base/page_allocator.cc,flags={}) .rodata@284e364(size_without_padding=0,padding=3,name=** symbol gap 2,object_path=base/base/page_allocator.o,source_path=base/page_allocator.cc,flags={})
.rodata@284e364(size_without_padding=8,padding=0,name=,object_path=base/base/page_allocator.o,source_path=base/page_allocator.cc,flags={})
.rodata@284e370(size_without_padding=40,padding=4,name=Name,object_path=base/base/page_allocator.o,source_path=base/page_allocator.cc,flags={}) .rodata@284e370(size_without_padding=40,padding=4,name=Name,object_path=base/base/page_allocator.o,source_path=base/page_allocator.cc,flags={})
.rodata@284e398(size_without_padding=32,padding=0,name=chrome::mojom::FilePatcher::Name_,object_path=third_party/WebKit.a/ContiguousContainer.o,source_path=third_party/container.c,flags={}) .rodata@284e398(size_without_padding=32,padding=0,name=chrome::mojom::FilePatcher::Name_,object_path=third_party/WebKit.a/ContiguousContainer.o,source_path=third_party/container.c,flags={})
.rodata@284e518(size_without_padding=675633,padding=352,name=** merge strings,object_path=,source_path=,flags={}) .rodata@284e518(size_without_padding=675633,padding=352,name=** merge strings,object_path=,source_path=,flags={})
.rodata@28f3450(size_without_padding=48,padding=7,name=kAnimationFrameTimeHistogramClassPath,object_path=third_party/WebKit.a/PaintChunker.o,source_path=third_party/paint.cc,flags={anon}) .rodata@28f3450(size_without_padding=48,padding=7,name=kAnimationFrameTimeHistogramClassPath,object_path=third_party/WebKit.a/PaintChunker.o,source_path=third_party/paint.cc,flags={anon})
.rodata@28f3480(size_without_padding=4,padding=0,name=blink::CSSValueKeywordsHash::findValueImpl::value_word_list,object_path=third_party/WebKit.a/PaintChunker.o,source_path=third_party/paint.cc,flags={anon}) .rodata@28f3480(size_without_padding=4,padding=0,name=blink::CSSValueKeywordsHash::findValueImpl::value_word_list,object_path=third_party/WebKit.a/PaintChunker.o,source_path=third_party/paint.cc,flags={anon})
.rodata@2c158e4(size_without_padding=0,padding=3286112,name=** symbol gap 3 (end of section),object_path=,source_path=,flags={})
.text@28d900(size_without_padding=16,padding=0,name=_GLOBAL__sub_I_page_allocator.cc,object_path=base/base/page_allocator.o,source_path=base/page_allocator.cc,flags={startup}) .text@28d900(size_without_padding=16,padding=0,name=_GLOBAL__sub_I_page_allocator.cc,object_path=base/base/page_allocator.o,source_path=base/page_allocator.cc,flags={startup})
.text@28d910(size_without_padding=56,padding=0,name=_GLOBAL__sub_I_bbr_sender.cc,object_path=base/base/page_allocator.o,source_path=base/page_allocator.cc,flags={startup}) .text@28d910(size_without_padding=56,padding=0,name=_GLOBAL__sub_I_bbr_sender.cc,object_path=base/base/page_allocator.o,source_path=base/page_allocator.cc,flags={startup})
.text@28d948(size_without_padding=28,padding=0,name=_GLOBAL__sub_I_pacing_sender.cc,object_path=base/base/page_allocator.o,source_path=base/page_allocator.cc,flags={startup}) .text@28d948(size_without_padding=28,padding=0,name=_GLOBAL__sub_I_pacing_sender.cc,object_path=base/base/page_allocator.o,source_path=base/page_allocator.cc,flags={startup})
...@@ -68,3 +68,4 @@ Section t: has 0.2% of 79710 bytes accounted for from 17 symbols. 35821002 bytes ...@@ -68,3 +68,4 @@ Section t: has 0.2% of 79710 bytes accounted for from 17 symbols. 35821002 bytes
.text@2a0020(size_without_padding=24,padding=4,name=blink::ContiguousContainerBase::ContiguousContainerBase,object_path=third_party/WebKit.a/ContiguousContainer.o,source_path=third_party/container.c,flags={}) .text@2a0020(size_without_padding=24,padding=4,name=blink::ContiguousContainerBase::ContiguousContainerBase,object_path=third_party/WebKit.a/ContiguousContainer.o,source_path=third_party/container.c,flags={})
.text@2a1000(size_without_padding=0,padding=4040,name=** symbol gap 1,object_path=third_party/WebKit.a/ContiguousContainer.o,source_path=third_party/container.c,flags={}) .text@2a1000(size_without_padding=0,padding=4040,name=** symbol gap 1,object_path=third_party/WebKit.a/ContiguousContainer.o,source_path=third_party/container.c,flags={})
.text@2a1000(size_without_padding=94,padding=0,name=blink::PaintChunker::releasePaintChunks [clone .part.1],object_path=third_party/WebKit.a/ContiguousContainer.o,source_path=third_party/container.c,flags={anon}) .text@2a1000(size_without_padding=94,padding=0,name=blink::PaintChunker::releasePaintChunks [clone .part.1],object_path=third_party/WebKit.a/ContiguousContainer.o,source_path=third_party/container.c,flags={anon})
.text@24ca628(size_without_padding=0,padding=35821002,name=** symbol gap 2 (end of section),object_path=,source_path=,flags={})
Section r: has 44.6% of 2641540 bytes accounted for from 7 symbols. 3286112 bytes are unaccounted for. Section r: has 100.0% of 5927652 bytes accounted for from 9 symbols. 0 bytes are unaccounted for.
* Padding accounts for 366 bytes (0.0%) * Padding accounts for 11 bytes (0.0%)
* Contains 0 aliases * 4 placeholders (symbols that start with **) account for 5927509.0 bytes (100.0%)
* 0 symbols have shared ownership * 0 symbols have shared ownership
* Without 2 merge sections (accounting for 2641394 bytes):
* Section r: has 0.0% of 146 bytes accounted for from 5 symbols. 5927506 bytes are unaccounted for.
Section b: has 40.3% of 524520 bytes accounted for from 6 symbols. 775936 bytes are unaccounted for. Section b: has 40.3% of 524520 bytes accounted for from 6 symbols. 775936 bytes are unaccounted for.
* Padding accounts for 196 bytes (0.0%) * Padding accounts for 196 bytes (0.0%)
* Contains 0 aliases
* 0 symbols have shared ownership * 0 symbols have shared ownership
Section d: has 40.4% of 790284 bytes accounted for from 13 symbols. 1166732 bytes are unaccounted for. Section d: has 100.0% of 1957016 bytes accounted for from 15 symbols. 0 bytes are unaccounted for.
* Padding accounts for 16 bytes (0.0%) * Padding accounts for 16 bytes (0.0%)
* Contains 0 aliases * 2 placeholders (symbols that start with **) account for 1166732.0 bytes (59.6%)
* 0 symbols have shared ownership * 0 symbols have shared ownership
Section t: has 0.2% of 79710 bytes accounted for from 14 symbols. 35821002 bytes are unaccounted for. Section t: has 100.0% of 35900712 bytes accounted for from 15 symbols. 0 bytes are unaccounted for.
* Padding accounts for 9806 bytes (12.3%) * Padding accounts for 48 bytes (0.0%)
* 3 placeholders (symbols that start with **) account for 35830760.0 bytes (99.8%)
* Contains 0 aliases * Contains 0 aliases
* 0 symbols have shared ownership * 0 symbols have shared ownership
* Without 2 merge sections (accounting for 9758 bytes):
* Section t: has 0.2% of 69952 bytes accounted for from 12 symbols. 35830760 bytes are unaccounted for.
.bss@0(size_without_padding=262144,padding=0,name=ff_cos_131072,object_path=third_party/ffmpeg/libffmpeg_internal.a/fft_float.o,source_path=third_party/fft_float.cc,flags={}) .bss@0(size_without_padding=262144,padding=0,name=ff_cos_131072,object_path=third_party/ffmpeg/libffmpeg_internal.a/fft_float.o,source_path=third_party/fft_float.cc,flags={})
.bss@0(size_without_padding=131072,padding=0,name=ff_cos_131072_fixed,object_path=third_party/ffmpeg/libffmpeg_internal.a/fft_fixed.o,source_path=third_party/fft_fixed.cc,flags={}) .bss@0(size_without_padding=131072,padding=0,name=ff_cos_131072_fixed,object_path=third_party/ffmpeg/libffmpeg_internal.a/fft_fixed.o,source_path=third_party/fft_fixed.cc,flags={})
.bss@0(size_without_padding=131072,padding=0,name=ff_cos_65536,object_path=third_party/ffmpeg/libffmpeg_internal.a/fft_float.o,source_path=third_party/fft_float.cc,flags={}) .bss@0(size_without_padding=131072,padding=0,name=ff_cos_65536,object_path=third_party/ffmpeg/libffmpeg_internal.a/fft_float.o,source_path=third_party/fft_float.cc,flags={})
...@@ -29,21 +25,25 @@ Section t: has 0.2% of 79710 bytes accounted for from 14 symbols. 35821002 bytes ...@@ -29,21 +25,25 @@ Section t: has 0.2% of 79710 bytes accounted for from 14 symbols. 35821002 bytes
.data@2de7008(size_without_padding=152,padding=0,name=base::android::kBaseRegisteredMethods,object_path=third_party/WebKit.a/ContiguousContainer.o,source_path=third_party/container.c,flags={rel}) .data@2de7008(size_without_padding=152,padding=0,name=base::android::kBaseRegisteredMethods,object_path=third_party/WebKit.a/ContiguousContainer.o,source_path=third_party/container.c,flags={rel})
.data@2de70a0(size_without_padding=4,padding=0,name=base::android::g_renderer_histogram_code,object_path=third_party/WebKit.a/ContiguousContainer.o,source_path=third_party/container.c,flags={anon}) .data@2de70a0(size_without_padding=4,padding=0,name=base::android::g_renderer_histogram_code,object_path=third_party/WebKit.a/ContiguousContainer.o,source_path=third_party/container.c,flags={anon})
.data@2de70a4(size_without_padding=4,padding=0,name=base::android::g_library_version_number,object_path=third_party/WebKit.a/ContiguousContainer.o,source_path=third_party/container.c,flags={anon,rel.loc}) .data@2de70a4(size_without_padding=4,padding=0,name=base::android::g_library_version_number,object_path=third_party/WebKit.a/ContiguousContainer.o,source_path=third_party/container.c,flags={anon,rel.loc})
.data@2dffd88(size_without_padding=0,padding=101600,name=** symbol gap 3 (end of section),object_path=,source_path=,flags={})
.data.rel.ro@2cd8500(size_without_padding=56,padding=0,name=ChromeMainDelegateAndroid [vtable],object_path=third_party/WebKit.a/PaintChunker.o,source_path=third_party/paint.cc,flags={}) .data.rel.ro@2cd8500(size_without_padding=56,padding=0,name=ChromeMainDelegateAndroid [vtable],object_path=third_party/WebKit.a/PaintChunker.o,source_path=third_party/paint.cc,flags={})
.data.rel.ro@2cd8538(size_without_padding=24,padding=0,name=mojo::MessageReceiver [vtable],object_path=base/base/page_allocator.o,source_path=base/page_allocator.cc,flags={}) .data.rel.ro@2cd8538(size_without_padding=24,padding=0,name=mojo::MessageReceiver [vtable],object_path=base/base/page_allocator.o,source_path=base/page_allocator.cc,flags={})
.data.rel.ro@2cd8550(size_without_padding=12,padding=0,name=kMethodsAnimationFrameTimeHistogram,object_path=base/base/page_allocator.o,source_path=base/page_allocator.cc,flags={}) .data.rel.ro@2cd8550(size_without_padding=12,padding=0,name=kMethodsAnimationFrameTimeHistogram,object_path=base/base/page_allocator.o,source_path=base/page_allocator.cc,flags={})
.data.rel.ro@2ddc608(size_without_padding=0,padding=1065132,name=** symbol gap 3 (end of section),object_path=,source_path=,flags={})
.data.rel.ro.local@2c176f0(size_without_padding=56,padding=0,name=ChromeMainDelegate [vtable],object_path=third_party/icu/icuuc/ucnv_ext.o,source_path=third_party/icu/ucnv_ext.c,flags={}) .data.rel.ro.local@2c176f0(size_without_padding=56,padding=0,name=ChromeMainDelegate [vtable],object_path=third_party/icu/icuuc/ucnv_ext.o,source_path=third_party/icu/ucnv_ext.c,flags={})
.data.rel.ro.local@2c17728(size_without_padding=24,padding=0,name=chrome::mojom::FieldTrialRecorder [vtable],object_path=third_party/icu/icuuc/ucnv_ext.o,source_path=third_party/icu/ucnv_ext.c,flags={}) .data.rel.ro.local@2c17728(size_without_padding=24,padding=0,name=chrome::mojom::FieldTrialRecorder [vtable],object_path=third_party/icu/icuuc/ucnv_ext.o,source_path=third_party/icu/ucnv_ext.c,flags={})
.data.rel.ro.local@2c17740(size_without_padding=789904,padding=0,name=chrome::mojom::FieldTrialRecorderProxy [vtable],object_path=third_party/WebKit.a/ContiguousContainer.o,source_path=third_party/container.c,flags={}) .data.rel.ro.local@2c17740(size_without_padding=789904,padding=0,name=chrome::mojom::FieldTrialRecorderProxy [vtable],object_path=third_party/WebKit.a/ContiguousContainer.o,source_path=third_party/container.c,flags={})
.data.rel.ro.local@2cd84e0(size_without_padding=16,padding=16,name=.Lswitch.table.45,object_path=third_party/gvr-android-sdk/libgvr_shim_static_arm.a/libcontroller_api_impl.a_controller_api_impl.o,source_path=,flags={}) .data.rel.ro.local@2cd84e0(size_without_padding=16,padding=16,name=.Lswitch.table.45,object_path=third_party/gvr-android-sdk/libgvr_shim_static_arm.a/libcontroller_api_impl.a_controller_api_impl.o,source_path=,flags={})
.data.rel.ro.local@2cd84f0(size_without_padding=8,padding=0,name=kSystemClassPrefixes,object_path=third_party/gvr-android-sdk/libgvr_shim_static_arm.a/libport_android_jni.a_jni_utils.o,source_path=,flags={anon}) .data.rel.ro.local@2cd84f0(size_without_padding=8,padding=0,name=kSystemClassPrefixes,object_path=third_party/gvr-android-sdk/libgvr_shim_static_arm.a/libport_android_jni.a_jni_utils.o,source_path=,flags={anon})
.rodata@266e600(size_without_padding=1965409,padding=0,name=** merge strings,object_path=,source_path=,flags={}) .rodata@266e600(size_without_padding=1965409,padding=0,name=** merge strings,object_path=,source_path=,flags={})
.rodata@284e364(size_without_padding=8,padding=3,name=,object_path=base/base/page_allocator.o,source_path=base/page_allocator.cc,flags={}) .rodata@284e364(size_without_padding=0,padding=3,name=** symbol gap 2,object_path=base/base/page_allocator.o,source_path=base/page_allocator.cc,flags={})
.rodata@284e364(size_without_padding=8,padding=0,name=,object_path=base/base/page_allocator.o,source_path=base/page_allocator.cc,flags={})
.rodata@284e370(size_without_padding=40,padding=4,name=Name,object_path=base/base/page_allocator.o,source_path=base/page_allocator.cc,flags={}) .rodata@284e370(size_without_padding=40,padding=4,name=Name,object_path=base/base/page_allocator.o,source_path=base/page_allocator.cc,flags={})
.rodata@284e398(size_without_padding=32,padding=0,name=chrome::mojom::FilePatcher::Name_,object_path=third_party/WebKit.a/ContiguousContainer.o,source_path=third_party/container.c,flags={}) .rodata@284e398(size_without_padding=32,padding=0,name=chrome::mojom::FilePatcher::Name_,object_path=third_party/WebKit.a/ContiguousContainer.o,source_path=third_party/container.c,flags={})
.rodata@284e518(size_without_padding=675633,padding=352,name=** merge strings,object_path=,source_path=,flags={}) .rodata@284e518(size_without_padding=675633,padding=352,name=** merge strings,object_path=,source_path=,flags={})
.rodata@28f3450(size_without_padding=48,padding=7,name=kAnimationFrameTimeHistogramClassPath,object_path=third_party/WebKit.a/PaintChunker.o,source_path=third_party/paint.cc,flags={anon}) .rodata@28f3450(size_without_padding=48,padding=7,name=kAnimationFrameTimeHistogramClassPath,object_path=third_party/WebKit.a/PaintChunker.o,source_path=third_party/paint.cc,flags={anon})
.rodata@28f3480(size_without_padding=4,padding=0,name=blink::CSSValueKeywordsHash::findValueImpl::value_word_list,object_path=third_party/WebKit.a/PaintChunker.o,source_path=third_party/paint.cc,flags={anon}) .rodata@28f3480(size_without_padding=4,padding=0,name=blink::CSSValueKeywordsHash::findValueImpl::value_word_list,object_path=third_party/WebKit.a/PaintChunker.o,source_path=third_party/paint.cc,flags={anon})
.rodata@2c158e4(size_without_padding=0,padding=3286112,name=** symbol gap 3 (end of section),object_path=,source_path=,flags={})
.text@28d900(size_without_padding=16,padding=0,name=_GLOBAL__sub_I_page_allocator.cc,object_path=base/base/page_allocator.o,source_path=base/page_allocator.cc,flags={startup}) .text@28d900(size_without_padding=16,padding=0,name=_GLOBAL__sub_I_page_allocator.cc,object_path=base/base/page_allocator.o,source_path=base/page_allocator.cc,flags={startup})
.text@28d910(size_without_padding=56,padding=0,name=_GLOBAL__sub_I_bbr_sender.cc,object_path=base/base/page_allocator.o,source_path=base/page_allocator.cc,flags={startup}) .text@28d910(size_without_padding=56,padding=0,name=_GLOBAL__sub_I_bbr_sender.cc,object_path=base/base/page_allocator.o,source_path=base/page_allocator.cc,flags={startup})
.text@28d948(size_without_padding=28,padding=0,name=_GLOBAL__sub_I_pacing_sender.cc,object_path=base/base/page_allocator.o,source_path=base/page_allocator.cc,flags={startup}) .text@28d948(size_without_padding=28,padding=0,name=_GLOBAL__sub_I_pacing_sender.cc,object_path=base/base/page_allocator.o,source_path=base/page_allocator.cc,flags={startup})
...@@ -58,3 +58,4 @@ Section t: has 0.2% of 79710 bytes accounted for from 14 symbols. 35821002 bytes ...@@ -58,3 +58,4 @@ Section t: has 0.2% of 79710 bytes accounted for from 14 symbols. 35821002 bytes
.text@2a0020(size_without_padding=24,padding=4,name=blink::ContiguousContainerBase::ContiguousContainerBase,object_path=third_party/WebKit.a/ContiguousContainer.o,source_path=third_party/container.c,flags={}) .text@2a0020(size_without_padding=24,padding=4,name=blink::ContiguousContainerBase::ContiguousContainerBase,object_path=third_party/WebKit.a/ContiguousContainer.o,source_path=third_party/container.c,flags={})
.text@2a1000(size_without_padding=0,padding=4040,name=** symbol gap 1,object_path=third_party/WebKit.a/ContiguousContainer.o,source_path=third_party/container.c,flags={}) .text@2a1000(size_without_padding=0,padding=4040,name=** symbol gap 1,object_path=third_party/WebKit.a/ContiguousContainer.o,source_path=third_party/container.c,flags={})
.text@2a1000(size_without_padding=94,padding=0,name=blink::PaintChunker::releasePaintChunks [clone .part.1],object_path=third_party/WebKit.a/ContiguousContainer.o,source_path=third_party/container.c,flags={anon}) .text@2a1000(size_without_padding=94,padding=0,name=blink::PaintChunker::releasePaintChunks [clone .part.1],object_path=third_party/WebKit.a/ContiguousContainer.o,source_path=third_party/container.c,flags={anon})
.text@24ca628(size_without_padding=0,padding=35821002,name=** symbol gap 2 (end of section),object_path=,source_path=,flags={})
...@@ -41,93 +41,103 @@ Section Sizes (Total=43,785,380 bytes): ...@@ -41,93 +41,103 @@ Section Sizes (Total=43,785,380 bytes):
.rodata: 5,927,652 bytes (13.5%) .rodata: 5,927,652 bytes (13.5%)
.text: 35,900,712 bytes (82.0%) .text: 35,900,712 bytes (82.0%)
Showing 43 symbols with total pss: 4036054 bytes Showing 48 symbols with total pss: 44309900 bytes
.text=77.8kb .rodata=2.52mb other=1.25mb total=3.85mb .text=34.2mb .rodata=5.65mb other=2.37mb total=42.3mb
Number of object files: 10 Number of object files: 10
First columns are: running total, address, pss First columns are: running total, address, pss
1965409 r@0x266e600 1965409 {no path} 35821002 t@0x24ca628 35821002 {no path}
** symbol gap 2 (end of section)
39107114 r@0x2c158e4 3286112 {no path}
** symbol gap 3 (end of section)
41072523 r@0x266e600 1965409 {no path}
** merge strings ** merge strings
2755313 d@0x2c17740 789904 third_party/container.c 42137655 d@0x2ddc608 1065132 {no path}
** symbol gap 3 (end of section)
42927559 d@0x2c17740 789904 third_party/container.c
chrome::mojom::FieldTrialRecorderProxy [vtable] chrome::mojom::FieldTrialRecorderProxy [vtable]
3431298 r@0x284e518 675985 {no path} 43603544 r@0x284e518 675985 {no path}
** merge strings ** merge strings
3500422 t@0x28f1e0 69124 third_party/icu/ucnv_ext.c 43705144 d@0x2dffd88 101600 {no path}
** symbol gap 3 (end of section)
43774268 t@0x28f1e0 69124 third_party/icu/ucnv_ext.c
foo_bar foo_bar
3506140 t@0x28f000 5718 third_party/icu/ucnv_ext.c 43779986 t@0x28f000 5718 third_party/icu/ucnv_ext.c
** symbol gap 0 ** symbol gap 0
3510180 t@0x2a1000 4040 third_party/container.c 43784026 t@0x2a1000 4040 third_party/container.c
** symbol gap 1 ** symbol gap 1
3510628 t@0x28f000 448 third_party/icu/ucnv_ext.c 43784474 t@0x28f000 448 third_party/icu/ucnv_ext.c
ucnv_extMatchFromU ucnv_extMatchFromU
3510780 d@0x2de7008 152 third_party/container.c 43784626 d@0x2de7008 152 third_party/container.c
base::android::kBaseRegisteredMethods base::android::kBaseRegisteredMethods
3510874 t@0x2a1000 94 third_party/container.c 43784720 t@0x2a1000 94 third_party/container.c
blink::PaintChunker::releasePaintChunks [clone .part.1] blink::PaintChunker::releasePaintChunks [clone .part.1]
3510930 d@0x2c176f0 56 third_party/icu/ucnv_ext.c 43784776 d@0x2c176f0 56 third_party/icu/ucnv_ext.c
ChromeMainDelegate [vtable] ChromeMainDelegate [vtable]
3510986 d@0x2cd8500 56 third_party/paint.cc 43784832 d@0x2cd8500 56 third_party/paint.cc
ChromeMainDelegateAndroid [vtable] ChromeMainDelegateAndroid [vtable]
3511042 t@0x28d910 56 base/page_allocator.cc 43784888 t@0x28d910 56 base/page_allocator.cc
_GLOBAL__sub_I_bbr_sender.cc _GLOBAL__sub_I_bbr_sender.cc
3511097 r@0x28f3450 55 third_party/paint.cc 43784943 r@0x28f3450 55 third_party/paint.cc
kAnimationFrameTimeHistogramClassPath kAnimationFrameTimeHistogramClassPath
3511121 t@0x2a0000 24 third_party/icu/ucnv_ext.c 43784967 t@0x2a0000 24 third_party/icu/ucnv_ext.c
BazAlias BazAlias
3511145 t@0x2a0000 24 {no path} 43784991 t@0x2a0000 24 {no path}
blink::ContiguousContainerBase::shrinkToFit blink::ContiguousContainerBase::shrinkToFit
3511189 r@0x284e370 44 base/page_allocator.cc 43785035 r@0x284e370 44 base/page_allocator.cc
Name Name
3511227 t@0x28d964 38 base/page_allocator.cc 43785073 t@0x28d964 38 base/page_allocator.cc
extFromUUseMapping extFromUUseMapping
3511259 d@0x2cd84e0 32 third_party/gvr-android-sdk/libgvr_shim_static_arm.a/libcontroller_api_impl.a_controller_api_impl.o 43785105 d@0x2cd84e0 32 third_party/gvr-android-sdk/libgvr_shim_static_arm.a/libcontroller_api_impl.a_controller_api_impl.o
.Lswitch.table.45 .Lswitch.table.45
3511291 r@0x284e398 32 third_party/container.c 43785137 r@0x284e398 32 third_party/container.c
chrome::mojom::FilePatcher::Name_ chrome::mojom::FilePatcher::Name_
3511323 t@0x28d98a 32 base/page_allocator.cc 43785169 t@0x28d98a 32 base/page_allocator.cc
extFromUUseMapping extFromUUseMapping
3511351 t@0x28f1c8 28 third_party/icu/ucnv_ext.c 43785197 t@0x28f1c8 28 third_party/icu/ucnv_ext.c
_GLOBAL__sub_I_SkDeviceProfile.cpp _GLOBAL__sub_I_SkDeviceProfile.cpp
3511379 t@0x28d948 28 base/page_allocator.cc 43785225 t@0x28d948 28 base/page_allocator.cc
_GLOBAL__sub_I_pacing_sender.cc _GLOBAL__sub_I_pacing_sender.cc
3511407 t@0x2a0020 28 third_party/container.c 43785253 t@0x2a0020 28 third_party/container.c
blink::ContiguousContainerBase::ContiguousContainerBase blink::ContiguousContainerBase::ContiguousContainerBase
3511431 d@0x2c17728 24 third_party/icu/ucnv_ext.c 43785277 d@0x2c17728 24 third_party/icu/ucnv_ext.c
chrome::mojom::FieldTrialRecorder [vtable] chrome::mojom::FieldTrialRecorder [vtable]
3511455 d@0x2cd8538 24 base/page_allocator.cc 43785301 d@0x2cd8538 24 base/page_allocator.cc
mojo::MessageReceiver [vtable] mojo::MessageReceiver [vtable]
3511471 t@0x28d900 16 base/page_allocator.cc 43785317 t@0x28d900 16 base/page_allocator.cc
_GLOBAL__sub_I_page_allocator.cc _GLOBAL__sub_I_page_allocator.cc
3511475 t@0x2a0010 4 third_party/fft_float.cc 43785321 t@0x2a0010 4 third_party/fft_float.cc
BarAlias BarAlias
3511479 t@0x2a0010 4 third_party/fft_float.cc 43785325 t@0x2a0010 4 third_party/fft_float.cc
FooAlias FooAlias
3511483 t@0x2a0010 4 third_party/{shared}/2 43785329 t@0x2a0010 4 third_party/{shared}/2
blink::ContiguousContainerBase::shrinkToFit [clone .part.1234] [clone .isra.2] blink::ContiguousContainerBase::shrinkToFit [clone .part.1234] [clone .isra.2]
3511495 d@0x2cd8550 12 base/page_allocator.cc 43785341 d@0x2cd8550 12 base/page_allocator.cc
kMethodsAnimationFrameTimeHistogram kMethodsAnimationFrameTimeHistogram
3511506 r@0x284e364 11 base/page_allocator.cc 43785349 r@0x284e364 8 base/page_allocator.cc
3511514 d@0x2cd84f0 8 third_party/gvr-android-sdk/libgvr_shim_static_arm.a/libport_android_jni.a_jni_utils.o 43785357 d@0x2cd84f0 8 third_party/gvr-android-sdk/libgvr_shim_static_arm.a/libport_android_jni.a_jni_utils.o
kSystemClassPrefixes kSystemClassPrefixes
3511518 d@0x2de70a4 4 third_party/container.c 43785361 d@0x2de70a4 4 third_party/container.c
base::android::g_library_version_number base::android::g_library_version_number
3511522 d@0x2de70a0 4 third_party/container.c 43785365 d@0x2de70a0 4 third_party/container.c
base::android::g_renderer_histogram_code base::android::g_renderer_histogram_code
3511526 r@0x28f3480 4 third_party/paint.cc 43785369 r@0x28f3480 4 third_party/paint.cc
blink::CSSValueKeywordsHash::findValueImpl::value_word_list blink::CSSValueKeywordsHash::findValueImpl::value_word_list
3511530 d@0x2de7000 4 base/page_allocator.cc 43785373 d@0x2de7000 4 base/page_allocator.cc
google::protobuf::internal::pLinuxKernelCmpxchg google::protobuf::internal::pLinuxKernelCmpxchg
3511534 d@0x2de7004 4 third_party/container.c 43785377 d@0x2de7004 4 third_party/container.c
google::protobuf::internal::pLinuxKernelMemoryBarrier google::protobuf::internal::pLinuxKernelMemoryBarrier
3511534 b@0x0 262144 third_party/fft_float.cc 43785380 r@0x284e364 3 base/page_allocator.cc
** symbol gap 2
43785380 b@0x0 262144 third_party/fft_float.cc
ff_cos_131072 ff_cos_131072
3511534 b@0x0 131072 third_party/fft_fixed.cc 43785380 b@0x0 131072 third_party/fft_fixed.cc
ff_cos_131072_fixed ff_cos_131072_fixed
3511534 b@0x0 131072 third_party/fft_float.cc 43785380 b@0x0 131072 third_party/fft_float.cc
ff_cos_65536 ff_cos_65536
3511534 b@0x2dffe80 200 third_party/icu/ucnv_ext.c 43785380 b@0x2dffe80 200 third_party/icu/ucnv_ext.c
SaveHistogram::atomic_histogram_pointer SaveHistogram::atomic_histogram_pointer
3511534 b@0x2dffda0 28 third_party/icu/ucnv_ext.c 43785380 b@0x2dffda0 28 third_party/icu/ucnv_ext.c
g_chrome_content_browser_client g_chrome_content_browser_client
3511534 b@0x2dffe84 4 third_party/icu/ucnv_ext.c 43785380 b@0x2dffe84 4 third_party/icu/ucnv_ext.c
g_AnimationFrameTimeHistogram_clazz g_AnimationFrameTimeHistogram_clazz
...@@ -38,10 +38,10 @@ Other section sizes: ...@@ -38,10 +38,10 @@ Other section sizes:
.strtab: 0 bytes .strtab: 0 bytes
.symtab: 0 bytes .symtab: 0 bytes
2 symbols added (+), 1 changed (~), 3 removed (-), 32 unchanged (=) 2 symbols added (+), 1 changed (~), 3 removed (-), 35 unchanged (=)
0 object files added, 0 removed 0 object files added, 0 removed
Showing 38 symbols with total pss: 46 bytes Showing 41 symbols with total pss: 46 bytes
.text=82 bytes .rodata=0 bytes other=-36 bytes total=46 bytes .text=82 bytes .rodata=0 bytes other=-36 bytes total=46 bytes
Number of object files: 9 Number of object files: 9
...@@ -61,7 +61,16 @@ First columns are: running total, address, pss ...@@ -61,7 +61,16 @@ First columns are: running total, address, pss
= 82 r@Group pss=0 padding=0 size_without_padding=0 count=2 = 82 r@Group pss=0 padding=0 size_without_padding=0 count=2
source_path= object_path= source_path= object_path=
flags={} name=** merge strings flags={} name=** merge strings
= 82 t@Group pss=0 padding=0 size_without_padding=0 count=2 = 82 d@0x2ddc608 pss=0 padding=0 size_without_padding=0
source_path= object_path=
flags={} name=** symbol gap 3 (end of section)
= 82 d@0x2dffd88 pss=0 padding=0 size_without_padding=0
source_path= object_path=
flags={} name=** symbol gap 3 (end of section)
= 82 t@Group pss=0 padding=0 size_without_padding=0 count=3
source_path= object_path=
flags={} name=** symbol gaps
= 82 r@Group pss=0 padding=0 size_without_padding=0 count=2
source_path= object_path= source_path= object_path=
flags={} name=** symbol gaps flags={} name=** symbol gaps
= 82 d@0x2cd84e0 pss=0 padding=0 size_without_padding=0 = 82 d@0x2cd84e0 pss=0 padding=0 size_without_padding=0
......
...@@ -17,7 +17,7 @@ Section Sizes (Total=0 bytes): ...@@ -17,7 +17,7 @@ Section Sizes (Total=0 bytes):
.rodata: 0 bytes (0.0%) .rodata: 0 bytes (0.0%)
.text: 0 bytes (0.0%) .text: 0 bytes (0.0%)
0 symbols added (+), 0 changed (~), 0 removed (-), 41 unchanged (not shown) 0 symbols added (+), 0 changed (~), 0 removed (-), 44 unchanged (not shown)
0 object files added, 0 removed 0 object files added, 0 removed
Showing 0 symbols with total pss: 0 bytes Showing 0 symbols with total pss: 0 bytes
......
GroupByNamespace() GroupByNamespace()
Showing 10 symbols with total pss: 4036054 bytes Showing 10 symbols with total pss: 44309900 bytes
.text=0 bytes .rodata=0 bytes other=3.85mb total=3.85mb .text=0 bytes .rodata=0 bytes other=42.3mb total=42.3mb
Number of object files: 5 Number of object files: 5
First columns are: running total, address, pss First columns are: running total, address, pss
3245548 *@Group 3245548 {no path} 43519394 *@Group 43519394 {no path}
{global} (count=28) {global} (count=33)
4035476 *@Group 789928 {no path} 44309322 *@Group 789928 {no path}
chrome::mojom (count=2) chrome::mojom (count=2)
4035676 *@Group 200 third_party/icu/ucnv_ext.c 44309522 *@Group 200 third_party/icu/ucnv_ext.c
SaveHistogram (count=1) SaveHistogram (count=1)
4035836 *@Group 160 third_party/container.c 44309682 *@Group 160 third_party/container.c
base::android (count=3) base::android (count=3)
4035930 *@Group 94 third_party/container.c 44309776 *@Group 94 third_party/container.c
blink::PaintChunker (count=1) blink::PaintChunker (count=1)
4035986 *@Group 56 {no path} 44309832 *@Group 56 {no path}
blink::ContiguousContainerBase (count=3) blink::ContiguousContainerBase (count=3)
4036018 *@Group 32 third_party/container.c 44309864 *@Group 32 third_party/container.c
chrome::mojom::FilePatcher (count=1) chrome::mojom::FilePatcher (count=1)
4036042 *@Group 24 base/page_allocator.cc 44309888 *@Group 24 base/page_allocator.cc
mojo (count=1) mojo (count=1)
4036050 *@Group 8 {no path} 44309896 *@Group 8 {no path}
google::protobuf::internal (count=2) google::protobuf::internal (count=2)
4036054 *@Group 4 third_party/paint.cc 44309900 *@Group 4 third_party/paint.cc
blink::CSSValueKeywordsHash::findValueImpl (count=1) blink::CSSValueKeywordsHash::findValueImpl (count=1)
GroupByNamespace(depth=1) GroupByNamespace(depth=1)
Showing 7 symbols with total pss: 4036054 bytes Showing 7 symbols with total pss: 44309900 bytes
.text=0 bytes .rodata=0 bytes other=3.85mb total=3.85mb .text=0 bytes .rodata=0 bytes other=42.3mb total=42.3mb
Number of object files: 4 Number of object files: 4
First columns are: running total, address, pss First columns are: running total, address, pss
3245548 *@Group 3245548 {no path} 43519394 *@Group 43519394 {no path}
{global} (count=28) {global} (count=33)
4035508 *@Group 789960 {no path} 44309354 *@Group 789960 {no path}
chrome (count=3) chrome (count=3)
4035708 *@Group 200 third_party/icu/ucnv_ext.c 44309554 *@Group 200 third_party/icu/ucnv_ext.c
SaveHistogram (count=1) SaveHistogram (count=1)
4035862 *@Group 154 {no path} 44309708 *@Group 154 {no path}
blink (count=5) blink (count=5)
4036022 *@Group 160 third_party/container.c 44309868 *@Group 160 third_party/container.c
base (count=3) base (count=3)
4036046 *@Group 24 base/page_allocator.cc 44309892 *@Group 24 base/page_allocator.cc
mojo (count=1) mojo (count=1)
4036054 *@Group 8 {no path} 44309900 *@Group 8 {no path}
google (count=2) google (count=2)
GroupByNamespace(depth=1, fallback=None) GroupByNamespace(depth=1, fallback=None)
Showing 7 symbols with total pss: 4036054 bytes Showing 7 symbols with total pss: 44309900 bytes
.text=0 bytes .rodata=0 bytes other=3.85mb total=3.85mb .text=0 bytes .rodata=0 bytes other=42.3mb total=42.3mb
Number of object files: 4 Number of object files: 4
First columns are: running total, address, pss First columns are: running total, address, pss
3245548 *@Group 3245548 {no path} 43519394 *@Group 43519394 {no path}
4035508 *@Group 789960 {no path} 44309354 *@Group 789960 {no path}
chrome (count=3) chrome (count=3)
4035708 *@Group 200 third_party/icu/ucnv_ext.c 44309554 *@Group 200 third_party/icu/ucnv_ext.c
SaveHistogram (count=1) SaveHistogram (count=1)
4035862 *@Group 154 {no path} 44309708 *@Group 154 {no path}
blink (count=5) blink (count=5)
4036022 *@Group 160 third_party/container.c 44309868 *@Group 160 third_party/container.c
base (count=3) base (count=3)
4036046 *@Group 24 base/page_allocator.cc 44309892 *@Group 24 base/page_allocator.cc
mojo (count=1) mojo (count=1)
4036054 *@Group 8 {no path} 44309900 *@Group 8 {no path}
google (count=2) google (count=2)
GroupByNamespace(depth=1, min_count=2) GroupByNamespace(depth=1, min_count=2)
Showing 7 symbols with total pss: 4036054 bytes Showing 7 symbols with total pss: 44309900 bytes
.text=0 bytes .rodata=0 bytes other=3.85mb total=3.85mb .text=0 bytes .rodata=0 bytes other=42.3mb total=42.3mb
Number of object files: 4 Number of object files: 4
First columns are: running total, address, pss First columns are: running total, address, pss
3245548 *@Group 3245548 {no path} 43519394 *@Group 43519394 {no path}
{global} (count=28) {global} (count=33)
4035508 *@Group 789960 {no path} 44309354 *@Group 789960 {no path}
chrome (count=3) chrome (count=3)
4035662 *@Group 154 {no path} 44309508 *@Group 154 {no path}
blink (count=5) blink (count=5)
4035822 *@Group 160 third_party/container.c 44309668 *@Group 160 third_party/container.c
base (count=3) base (count=3)
4035846 d@0x2cd8538 24 base/page_allocator.cc 44309692 d@0x2cd8538 24 base/page_allocator.cc
mojo::MessageReceiver [vtable] mojo::MessageReceiver [vtable]
4035854 *@Group 8 {no path} 44309700 *@Group 8 {no path}
google (count=2) google (count=2)
4035854 b@0x2dffe80 200 third_party/icu/ucnv_ext.c 44309700 b@0x2dffe80 200 third_party/icu/ucnv_ext.c
SaveHistogram::atomic_histogram_pointer SaveHistogram::atomic_histogram_pointer
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment