Commit 626e421d authored by Samuel Huang's avatar Samuel Huang Committed by Commit Bot

[SuperSize] Extend SuperSize-archive to embrace section ranges.

Previously SuperSize-archive focuses on section sizes and largely
ignores section addresses. As a result, "** ELF Section" symbols all
have address of 0. This CL refactors archive.py so that |section_range|
(2-tuple of address and size) become a primary object of interest, and
replaces widespread |section_size| usage. Details:
* linker_map_parser.py: Changes to store and return section ranges.
  * Requires test output update.
* archive.py: Extensive changes to use ranges throughout.
  * Add _ExtendSectionRange() helper.
  * _AddUnattributedSectionSymbols(): Add "** ELF Section" symbols in
    section name order, to make later sorting more predictable.
* Not changed: CreateSectionSizesAndSymbols() params, to maintain
  .size format compatibility.

"** ELF Section:" symbols can now have non-0 addresse (and better
sort order). This required update of integration_test.py expected
outputs.

Other changes:
* Add dbg.py to aid debugging (compatible with Python 3).

Change-Id: Ife5a695a4d3d75a6c67dabae5de91c9bb9618100
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2099466Reviewed-by: default avatarSamuel Huang <huangs@chromium.org>
Reviewed-by: default avatarAndrew Grieve <agrieve@chromium.org>
Commit-Queue: Samuel Huang <huangs@chromium.org>
Cr-Commit-Position: refs/heads/master@{#749544}
parent 40f2eb08
This diff is collapsed.
# Copyright 2020 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
"""Simple utilities for printf debugging."""
import sys
def _joinArgs(args):
return ' '.join(str(t) for t in args) + '\n'
def out(*args):
sys.stderr.write(_joinArgs(args))
def outR(*args):
sys.stderr.write('\x1b[91m%s\x1b[0m' % _joinArgs(args))
def outG(*args):
sys.stderr.write('\x1b[92m%s\x1b[0m' % _joinArgs(args))
def outY(*args):
sys.stderr.write('\x1b[93m%s\x1b[0m' % _joinArgs(args))
def outB(*args):
sys.stderr.write('\x1b[94m%s\x1b[0m' % _joinArgs(args))
def outM(*args):
sys.stderr.write('\x1b[95m%s\x1b[0m' % _joinArgs(args))
def outC(*args):
sys.stderr.write('\x1b[96m%s\x1b[0m' % _joinArgs(args))
...@@ -87,7 +87,7 @@ class MapFileParserGold(object): ...@@ -87,7 +87,7 @@ class MapFileParserGold(object):
def __init__(self): def __init__(self):
self._common_symbols = [] self._common_symbols = []
self._symbols = [] self._symbols = []
self._section_sizes = {} self._section_ranges = {}
self._lines = None self._lines = None
def Parse(self, lines): def Parse(self, lines):
...@@ -98,7 +98,7 @@ class MapFileParserGold(object): ...@@ -98,7 +98,7 @@ class MapFileParserGold(object):
identify file type. identify file type.
Returns: Returns:
A tuple of (section_sizes, symbols, extras). A tuple of (section_ranges, symbols, extras).
""" """
self._lines = iter(lines) self._lines = iter(lines)
logging.debug('Scanning for Header') logging.debug('Scanning for Header')
...@@ -112,7 +112,7 @@ class MapFileParserGold(object): ...@@ -112,7 +112,7 @@ class MapFileParserGold(object):
elif line.startswith('Memory map'): elif line.startswith('Memory map'):
self._ParseSections() self._ParseSections()
break break
return self._section_sizes, self._symbols, {} return self._section_ranges, self._symbols, {}
def _SkipToLineWithPrefix(self, prefix, prefix2=None): def _SkipToLineWithPrefix(self, prefix, prefix2=None):
for l in self._lines: for l in self._lines:
...@@ -192,7 +192,7 @@ class MapFileParserGold(object): ...@@ -192,7 +192,7 @@ class MapFileParserGold(object):
section_name, section_address_str, section_size_str = parts section_name, section_address_str, section_size_str = parts
section_address = int(section_address_str[2:], 16) section_address = int(section_address_str[2:], 16)
section_size = int(section_size_str[2:], 16) section_size = int(section_size_str[2:], 16)
self._section_sizes[section_name] = section_size self._section_ranges[section_name] = (section_address, section_size)
if (section_name in models.BSS_SECTIONS if (section_name in models.BSS_SECTIONS
or section_name in (models.SECTION_RODATA, models.SECTION_TEXT) or section_name in (models.SECTION_RODATA, models.SECTION_TEXT)
or section_name.startswith(models.SECTION_DATA)): or section_name.startswith(models.SECTION_DATA)):
...@@ -338,7 +338,7 @@ class MapFileParserLld(object): ...@@ -338,7 +338,7 @@ class MapFileParserLld(object):
def __init__(self, linker_name): def __init__(self, linker_name):
self._linker_name = linker_name self._linker_name = linker_name
self._common_symbols = [] self._common_symbols = []
self._section_sizes = {} self._section_ranges = {}
@staticmethod @staticmethod
def ParseArmAnnotations(tok): def ParseArmAnnotations(tok):
...@@ -428,7 +428,7 @@ class MapFileParserLld(object): ...@@ -428,7 +428,7 @@ class MapFileParserLld(object):
identify file type. identify file type.
Returns: Returns:
A tuple of (section_sizes, symbols). A tuple of (section_ranges, symbols).
""" """
# Newest format: # Newest format:
# VMA LMA Size Align Out In Symbol # VMA LMA Size Align Out In Symbol
...@@ -513,7 +513,7 @@ class MapFileParserLld(object): ...@@ -513,7 +513,7 @@ class MapFileParserLld(object):
cur_section_is_useful = False cur_section_is_useful = False
else: else:
if not tok.startswith('PROVIDE_HIDDEN'): if not tok.startswith('PROVIDE_HIDDEN'):
self._section_sizes[tok] = size self._section_ranges[tok] = (address, size)
cur_section = tok cur_section = tok
# E.g., Want to convert "(.text._name)" -> "_name" later. # E.g., Want to convert "(.text._name)" -> "_name" later.
mangled_start_idx = len(cur_section) + 2 mangled_start_idx = len(cur_section) + 2
...@@ -657,7 +657,7 @@ class MapFileParserLld(object): ...@@ -657,7 +657,7 @@ class MapFileParserLld(object):
if jump_tables_count: if jump_tables_count:
logging.info('Found %d CFI jump tables with %d total entries', logging.info('Found %d CFI jump tables with %d total entries',
jump_tables_count, jump_entries_count) jump_tables_count, jump_entries_count)
return self._section_sizes, syms, {'thin_map': thin_map} return self._section_ranges, syms, {'thin_map': thin_map}
def _DetectLto(lines): def _DetectLto(lines):
...@@ -727,7 +727,7 @@ class MapFileParser(object): ...@@ -727,7 +727,7 @@ class MapFileParser(object):
lines: Iterable of lines from the linker map. lines: Iterable of lines from the linker map.
Returns: Returns:
A tuple of (section_sizes, symbols, extras). A tuple of (section_ranges, symbols, extras).
""" """
next(lines) # Consume the first line of headers. next(lines) # Consume the first line of headers.
if linker_name.startswith('lld'): if linker_name.startswith('lld'):
...@@ -737,13 +737,13 @@ class MapFileParser(object): ...@@ -737,13 +737,13 @@ class MapFileParser(object):
else: else:
raise Exception('.map file is from a unsupported linker.') raise Exception('.map file is from a unsupported linker.')
section_sizes, syms, extras = inner_parser.Parse(lines) section_ranges, syms, extras = inner_parser.Parse(lines)
for sym in syms: for sym in syms:
if sym.object_path and not sym.object_path.endswith(')'): if sym.object_path and not sym.object_path.endswith(')'):
# Don't want '' to become '.'. # Don't want '' to become '.'.
# Thin archives' paths will get fixed in |ar.CreateThinObjectPath|. # Thin archives' paths will get fixed in |ar.CreateThinObjectPath|.
sym.object_path = os.path.normpath(sym.object_path) sym.object_path = os.path.normpath(sym.object_path)
return (section_sizes, syms, extras) return (section_ranges, syms, extras)
def DeduceObjectPathsFromThinMap(raw_symbols, extras): def DeduceObjectPathsFromThinMap(raw_symbols, extras):
...@@ -820,20 +820,24 @@ def main(): ...@@ -820,20 +820,24 @@ def main():
print('Linker type: %s' % linker_name) print('Linker type: %s' % linker_name)
with open(args.linker_file, 'r') as map_file: with open(args.linker_file, 'r') as map_file:
section_sizes, syms, extras = MapFileParser().Parse(linker_name, map_file) section_ranges, syms, extras = MapFileParser().Parse(linker_name, map_file)
if args.dump: if args.dump:
print(section_sizes) print(section_ranges)
for sym in syms: for sym in syms:
print(sym) print(sym)
else: else:
# Enter interactive shell. # Enter interactive shell.
readline.parse_and_bind('tab: complete') readline.parse_and_bind('tab: complete')
variables = {'section_sizes': section_sizes, 'syms': syms, 'extras': extras} variables = {
'section_ranges': section_ranges,
'syms': syms,
'extras': extras
}
banner_lines = [ banner_lines = [
'*' * 80, '*' * 80,
'Variables:', 'Variables:',
' section_sizes: Map from section to sizes.', ' section_ranges: Map from section name to (address, size).',
' syms: Raw symbols parsed from the linker map file.', ' syms: Raw symbols parsed from the linker map file.',
' extras: Format-specific extra data.', ' extras: Format-specific extra data.',
'*' * 80, '*' * 80,
......
...@@ -51,8 +51,9 @@ def _ReadMapFile(map_file): ...@@ -51,8 +51,9 @@ def _ReadMapFile(map_file):
def _RenderSectionSizesAndRawSymbols(section_sizes, raw_symbols): def _RenderSectionSizesAndRawSymbols(section_sizes, raw_symbols):
ret = [] ret = []
ret.append('******** section_sizes ********') ret.append('******** section_sizes ********')
for k, v in sorted(section_sizes.iteritems()): for k, (address, size) in sorted(section_sizes.items()):
ret.append('%-24s %d' % (k, v)) address_text = '@%x' % address
ret.append('%-24s %-9s %d' % (k, address_text, size))
ret.append('') ret.append('')
ret.append('******** raw_symbols ********') ret.append('******** raw_symbols ********')
for sym in raw_symbols: for sym in raw_symbols:
......
...@@ -289,33 +289,33 @@ Section .other: has 100.0% of 95595797 bytes accounted for from 27 symbols. 0 by ...@@ -289,33 +289,33 @@ Section .other: has 100.0% of 95595797 bytes accounted for from 27 symbols. 0 by
.dex.method@0(size_without_padding=79,padding=0,full_name=org.chromium.chrome.browser.compositor.layouts.phone.stack.StackAnimationLandscape#getScreenPositionInScrollDirection(org.chromium.chrome.browser.compositor.layouts.phone.stack.StackTab): float,object_path=$APK/org/chromium/chrome/browser/compositor/layouts/phone/stack/StackAnimationLandscape,source_path=,flags={},num_aliases=1,component=) .dex.method@0(size_without_padding=79,padding=0,full_name=org.chromium.chrome.browser.compositor.layouts.phone.stack.StackAnimationLandscape#getScreenPositionInScrollDirection(org.chromium.chrome.browser.compositor.layouts.phone.stack.StackTab): float,object_path=$APK/org/chromium/chrome/browser/compositor/layouts/phone/stack/StackAnimationLandscape,source_path=,flags={},num_aliases=1,component=)
.dex.method@0(size_without_padding=54,padding=0,full_name=org.chromium.chrome.browser.compositor.layouts.phone.stack.StackAnimationLandscape#getScreenSizeInScrollDirection(): float,object_path=$APK/org/chromium/chrome/browser/compositor/layouts/phone/stack/StackAnimationLandscape,source_path=,flags={},num_aliases=1,component=) .dex.method@0(size_without_padding=54,padding=0,full_name=org.chromium.chrome.browser.compositor.layouts.phone.stack.StackAnimationLandscape#getScreenSizeInScrollDirection(): float,object_path=$APK/org/chromium/chrome/browser/compositor/layouts/phone/stack/StackAnimationLandscape,source_path=,flags={},num_aliases=1,component=)
.dex.method@0(size_without_padding=52,padding=0,full_name=org.chromium.chrome.browser.compositor.layouts.phone.stack.StackAnimationLandscape#isDefaultDiscardDirectionPositive(): boolean,object_path=$APK/org/chromium/chrome/browser/compositor/layouts/phone/stack/StackAnimationLandscape,source_path=,flags={},num_aliases=1,component=) .dex.method@0(size_without_padding=52,padding=0,full_name=org.chromium.chrome.browser.compositor.layouts.phone.stack.StackAnimationLandscape#isDefaultDiscardDirectionPositive(): boolean,object_path=$APK/org/chromium/chrome/browser/compositor/layouts/phone/stack/StackAnimationLandscape,source_path=,flags={},num_aliases=1,component=)
.other@0(size_without_padding=2655384,padding=0,full_name=** ELF Section: .rel.dyn,object_path=,source_path=,flags={},num_aliases=1,component=) .other@0(size_without_padding=60,padding=0,full_name=** ELF Section: .ARM.attributes,object_path=,source_path=,flags={},num_aliases=1,component=)
.other@0(size_without_padding=2816,padding=0,full_name=** ELF Section: .rel.plt,object_path=,source_path=,flags={},num_aliases=1,component=)
.other@0(size_without_padding=19,padding=0,full_name=** ELF Section: .interp,object_path=,source_path=,flags={},num_aliases=1,component=)
.other@0(size_without_padding=28,padding=0,full_name=** ELF Section: .note.gnu.gold-version,object_path=,source_path=,flags={},num_aliases=1,component=) .other@0(size_without_padding=28,padding=0,full_name=** ELF Section: .note.gnu.gold-version,object_path=,source_path=,flags={},num_aliases=1,component=)
.other@0(size_without_padding=6496,padding=0,full_name=** ELF Section: .dynsym,object_path=,source_path=,flags={},num_aliases=1,component=)
.other@0(size_without_padding=42956,padding=0,full_name=** ELF Section: .got,object_path=,source_path=,flags={},num_aliases=1,component=)
.other@0(size_without_padding=812,padding=0,full_name=** ELF Section: .gnu.version,object_path=,source_path=,flags={},num_aliases=1,component=)
.other@0(size_without_padding=28,padding=0,full_name=** ELF Section: .gnu.version_d,object_path=,source_path=,flags={},num_aliases=1,component=)
.other@0(size_without_padding=436,padding=0,full_name=** ELF Section: .shstrtab,object_path=,source_path=,flags={},num_aliases=1,component=) .other@0(size_without_padding=436,padding=0,full_name=** ELF Section: .shstrtab,object_path=,source_path=,flags={},num_aliases=1,component=)
.other@0(size_without_padding=36,padding=0,full_name=** ELF Section: .note.gnu.build-id,object_path=,source_path=,flags={},num_aliases=1,component=)
.other@0(size_without_padding=17166112,padding=0,full_name=** ELF Section: .symtab,object_path=,source_path=,flags={},num_aliases=1,component=)
.other@0(size_without_padding=96,padding=0,full_name=** ELF Section: .gnu.version_r,object_path=,source_path=,flags={},num_aliases=1,component=)
.other@0(size_without_padding=4025,padding=0,full_name=** ELF Section: .dynstr,object_path=,source_path=,flags={},num_aliases=1,component=)
.other@0(size_without_padding=2684,padding=0,full_name=** ELF Section: .hash,object_path=,source_path=,flags={},num_aliases=1,component=)
.other@0(size_without_padding=183632,padding=0,full_name=** ELF Section: .ARM.extab,object_path=,source_path=,flags={},num_aliases=1,component=)
.other@0(size_without_padding=1536456,padding=0,full_name=** ELF Section: .ARM.exidx,object_path=,source_path=,flags={},num_aliases=1,component=)
.other@0(size_without_padding=8,padding=0,full_name=** ELF Section: .fini_array,object_path=,source_path=,flags={},num_aliases=1,component=)
.other@0(size_without_padding=8,padding=0,full_name=** ELF Section: .init_array,object_path=,source_path=,flags={},num_aliases=1,component=)
.other@0(size_without_padding=304,padding=0,full_name=** ELF Section: .dynamic,object_path=,source_path=,flags={},num_aliases=1,component=)
.other@0(size_without_padding=4244,padding=0,full_name=** ELF Section: .plt,object_path=,source_path=,flags={},num_aliases=1,component=)
.other@0(size_without_padding=34841854,padding=0,full_name=** ELF Section: .strtab,object_path=,source_path=,flags={},num_aliases=1,component=) .other@0(size_without_padding=34841854,padding=0,full_name=** ELF Section: .strtab,object_path=,source_path=,flags={},num_aliases=1,component=)
.other@0(size_without_padding=60,padding=0,full_name=** ELF Section: .ARM.attributes,object_path=,source_path=,flags={},num_aliases=1,component=) .other@0(size_without_padding=17166112,padding=0,full_name=** ELF Section: .symtab,object_path=,source_path=,flags={},num_aliases=1,component=)
.other@0(size_without_padding=4194304,padding=0,full_name=smalltest.so,object_path=,source_path=$APK/smalltest.so,flags={gen},num_aliases=1,component=) .other@0(size_without_padding=4194304,padding=0,full_name=smalltest.so,object_path=,source_path=$APK/smalltest.so,flags={gen},num_aliases=1,component=)
.other@0(size_without_padding=1048576,padding=0,full_name=assets/icudtl.dat,object_path=,source_path=third_party/icu/android/icudtl.dat,flags={},num_aliases=1,component=Internal>Android) .other@0(size_without_padding=1048576,padding=0,full_name=assets/icudtl.dat,object_path=,source_path=third_party/icu/android/icudtl.dat,flags={},num_aliases=1,component=Internal>Android)
.other@0(size_without_padding=1024,padding=0,full_name=res/drawable-v13/test.xml,object_path=,source_path=chrome/android/res/drawable/test.xml,flags={},num_aliases=1,component=) .other@0(size_without_padding=1024,padding=0,full_name=res/drawable-v13/test.xml,object_path=,source_path=chrome/android/res/drawable/test.xml,flags={},num_aliases=1,component=)
.other@0(size_without_padding=0,padding=764,full_name=Overhead: APK file,object_path=,source_path=,flags={},num_aliases=1,component=) .other@0(size_without_padding=0,padding=764,full_name=Overhead: APK file,object_path=,source_path=,flags={},num_aliases=1,component=)
.other@0(size_without_padding=0,padding=33902635,full_name=Overhead: ELF file,object_path=,source_path=,flags={},num_aliases=1,component=) .other@0(size_without_padding=0,padding=33902635,full_name=Overhead: ELF file,object_path=,source_path=,flags={},num_aliases=1,component=)
.other@154(size_without_padding=19,padding=0,full_name=** ELF Section: .interp,object_path=,source_path=,flags={},num_aliases=1,component=)
.other@168(size_without_padding=36,padding=0,full_name=** ELF Section: .note.gnu.build-id,object_path=,source_path=,flags={},num_aliases=1,component=)
.other@18c(size_without_padding=6496,padding=0,full_name=** ELF Section: .dynsym,object_path=,source_path=,flags={},num_aliases=1,component=)
.other@1b0c(size_without_padding=4025,padding=0,full_name=** ELF Section: .dynstr,object_path=,source_path=,flags={},num_aliases=1,component=)
.other@2ad4(size_without_padding=2684,padding=0,full_name=** ELF Section: .hash,object_path=,source_path=,flags={},num_aliases=1,component=)
.other@3558(size_without_padding=812,padding=0,full_name=** ELF Section: .gnu.version,object_path=,source_path=,flags={},num_aliases=1,component=)
.other@3888(size_without_padding=28,padding=0,full_name=** ELF Section: .gnu.version_d,object_path=,source_path=,flags={},num_aliases=1,component=)
.other@38a4(size_without_padding=96,padding=0,full_name=** ELF Section: .gnu.version_r,object_path=,source_path=,flags={},num_aliases=1,component=)
.other@3904(size_without_padding=2655384,padding=0,full_name=** ELF Section: .rel.dyn,object_path=,source_path=,flags={},num_aliases=1,component=)
.other@29fbec(size_without_padding=2816,padding=0,full_name=** ELF Section: .rel.plt,object_path=,source_path=,flags={},num_aliases=1,component=)
.other@2a06ec(size_without_padding=4244,padding=0,full_name=** ELF Section: .plt,object_path=,source_path=,flags={},num_aliases=1,component=)
.other@2bd3d10(size_without_padding=1536456,padding=0,full_name=** ELF Section: .ARM.exidx,object_path=,source_path=,flags={},num_aliases=1,component=)
.other@2bd5858(size_without_padding=183632,padding=0,full_name=** ELF Section: .ARM.extab,object_path=,source_path=,flags={},num_aliases=1,component=)
.other@2ddc608(size_without_padding=8,padding=0,full_name=** ELF Section: .init_array,object_path=,source_path=,flags={},num_aliases=1,component=)
.other@2ddc6f4(size_without_padding=8,padding=0,full_name=** ELF Section: .fini_array,object_path=,source_path=,flags={},num_aliases=1,component=)
.other@2ddc6fc(size_without_padding=304,padding=0,full_name=** ELF Section: .dynamic,object_path=,source_path=,flags={},num_aliases=1,component=)
.other@2ddc834(size_without_padding=42956,padding=0,full_name=** ELF Section: .got,object_path=,source_path=,flags={},num_aliases=1,component=)
.rodata@266e600(size_without_padding=5,padding=0,full_name="Str1",object_path=base/base/page_allocator.o,source_path=base/page_allocator.cc,flags={},num_aliases=2,component=Blink>Internal) .rodata@266e600(size_without_padding=5,padding=0,full_name="Str1",object_path=base/base/page_allocator.o,source_path=base/page_allocator.cc,flags={},num_aliases=2,component=Blink>Internal)
.rodata@266e600(size_without_padding=5,padding=0,full_name="Str1",object_path=third_party/icu/icuuc/ucnv_ext.o,source_path=third_party/icu/ucnv_ext.c,flags={gen},num_aliases=2,component=Internal>Android) .rodata@266e600(size_without_padding=5,padding=0,full_name="Str1",object_path=third_party/icu/icuuc/ucnv_ext.o,source_path=third_party/icu/ucnv_ext.c,flags={gen},num_aliases=2,component=Internal>Android)
.rodata@266e605(size_without_padding=16,padding=0,full_name="String literal2",object_path=third_party/icu/icuuc/ucnv_ext.o,source_path=third_party/icu/ucnv_ext.c,flags={gen},num_aliases=1,component=Internal>Android) .rodata@266e605(size_without_padding=16,padding=0,full_name="String literal2",object_path=third_party/icu/icuuc/ucnv_ext.o,source_path=third_party/icu/ucnv_ext.c,flags={gen},num_aliases=1,component=Internal>Android)
......
...@@ -290,33 +290,33 @@ Section .other: has 100.0% of 95595797 bytes accounted for from 27 symbols. 0 by ...@@ -290,33 +290,33 @@ Section .other: has 100.0% of 95595797 bytes accounted for from 27 symbols. 0 by
.dex.method@0(size_without_padding=79,padding=0,full_name=org.chromium.chrome.browser.compositor.layouts.phone.stack.StackAnimationLandscape#getScreenPositionInScrollDirection(org.chromium.chrome.browser.compositor.layouts.phone.stack.StackTab): float,object_path=$APK/org/chromium/chrome/browser/compositor/layouts/phone/stack/StackAnimationLandscape,source_path=,flags={},num_aliases=1,component=) .dex.method@0(size_without_padding=79,padding=0,full_name=org.chromium.chrome.browser.compositor.layouts.phone.stack.StackAnimationLandscape#getScreenPositionInScrollDirection(org.chromium.chrome.browser.compositor.layouts.phone.stack.StackTab): float,object_path=$APK/org/chromium/chrome/browser/compositor/layouts/phone/stack/StackAnimationLandscape,source_path=,flags={},num_aliases=1,component=)
.dex.method@0(size_without_padding=54,padding=0,full_name=org.chromium.chrome.browser.compositor.layouts.phone.stack.StackAnimationLandscape#getScreenSizeInScrollDirection(): float,object_path=$APK/org/chromium/chrome/browser/compositor/layouts/phone/stack/StackAnimationLandscape,source_path=,flags={},num_aliases=1,component=) .dex.method@0(size_without_padding=54,padding=0,full_name=org.chromium.chrome.browser.compositor.layouts.phone.stack.StackAnimationLandscape#getScreenSizeInScrollDirection(): float,object_path=$APK/org/chromium/chrome/browser/compositor/layouts/phone/stack/StackAnimationLandscape,source_path=,flags={},num_aliases=1,component=)
.dex.method@0(size_without_padding=52,padding=0,full_name=org.chromium.chrome.browser.compositor.layouts.phone.stack.StackAnimationLandscape#isDefaultDiscardDirectionPositive(): boolean,object_path=$APK/org/chromium/chrome/browser/compositor/layouts/phone/stack/StackAnimationLandscape,source_path=,flags={},num_aliases=1,component=) .dex.method@0(size_without_padding=52,padding=0,full_name=org.chromium.chrome.browser.compositor.layouts.phone.stack.StackAnimationLandscape#isDefaultDiscardDirectionPositive(): boolean,object_path=$APK/org/chromium/chrome/browser/compositor/layouts/phone/stack/StackAnimationLandscape,source_path=,flags={},num_aliases=1,component=)
.other@0(size_without_padding=2655384,padding=0,full_name=** ELF Section: .rel.dyn,object_path=,source_path=,flags={},num_aliases=1,component=) .other@0(size_without_padding=60,padding=0,full_name=** ELF Section: .ARM.attributes,object_path=,source_path=,flags={},num_aliases=1,component=)
.other@0(size_without_padding=2816,padding=0,full_name=** ELF Section: .rel.plt,object_path=,source_path=,flags={},num_aliases=1,component=)
.other@0(size_without_padding=19,padding=0,full_name=** ELF Section: .interp,object_path=,source_path=,flags={},num_aliases=1,component=)
.other@0(size_without_padding=28,padding=0,full_name=** ELF Section: .note.gnu.gold-version,object_path=,source_path=,flags={},num_aliases=1,component=) .other@0(size_without_padding=28,padding=0,full_name=** ELF Section: .note.gnu.gold-version,object_path=,source_path=,flags={},num_aliases=1,component=)
.other@0(size_without_padding=6496,padding=0,full_name=** ELF Section: .dynsym,object_path=,source_path=,flags={},num_aliases=1,component=)
.other@0(size_without_padding=42956,padding=0,full_name=** ELF Section: .got,object_path=,source_path=,flags={},num_aliases=1,component=)
.other@0(size_without_padding=812,padding=0,full_name=** ELF Section: .gnu.version,object_path=,source_path=,flags={},num_aliases=1,component=)
.other@0(size_without_padding=28,padding=0,full_name=** ELF Section: .gnu.version_d,object_path=,source_path=,flags={},num_aliases=1,component=)
.other@0(size_without_padding=436,padding=0,full_name=** ELF Section: .shstrtab,object_path=,source_path=,flags={},num_aliases=1,component=) .other@0(size_without_padding=436,padding=0,full_name=** ELF Section: .shstrtab,object_path=,source_path=,flags={},num_aliases=1,component=)
.other@0(size_without_padding=36,padding=0,full_name=** ELF Section: .note.gnu.build-id,object_path=,source_path=,flags={},num_aliases=1,component=)
.other@0(size_without_padding=17166112,padding=0,full_name=** ELF Section: .symtab,object_path=,source_path=,flags={},num_aliases=1,component=)
.other@0(size_without_padding=96,padding=0,full_name=** ELF Section: .gnu.version_r,object_path=,source_path=,flags={},num_aliases=1,component=)
.other@0(size_without_padding=4025,padding=0,full_name=** ELF Section: .dynstr,object_path=,source_path=,flags={},num_aliases=1,component=)
.other@0(size_without_padding=2684,padding=0,full_name=** ELF Section: .hash,object_path=,source_path=,flags={},num_aliases=1,component=)
.other@0(size_without_padding=183632,padding=0,full_name=** ELF Section: .ARM.extab,object_path=,source_path=,flags={},num_aliases=1,component=)
.other@0(size_without_padding=1536456,padding=0,full_name=** ELF Section: .ARM.exidx,object_path=,source_path=,flags={},num_aliases=1,component=)
.other@0(size_without_padding=8,padding=0,full_name=** ELF Section: .fini_array,object_path=,source_path=,flags={},num_aliases=1,component=)
.other@0(size_without_padding=8,padding=0,full_name=** ELF Section: .init_array,object_path=,source_path=,flags={},num_aliases=1,component=)
.other@0(size_without_padding=304,padding=0,full_name=** ELF Section: .dynamic,object_path=,source_path=,flags={},num_aliases=1,component=)
.other@0(size_without_padding=4244,padding=0,full_name=** ELF Section: .plt,object_path=,source_path=,flags={},num_aliases=1,component=)
.other@0(size_without_padding=34841854,padding=0,full_name=** ELF Section: .strtab,object_path=,source_path=,flags={},num_aliases=1,component=) .other@0(size_without_padding=34841854,padding=0,full_name=** ELF Section: .strtab,object_path=,source_path=,flags={},num_aliases=1,component=)
.other@0(size_without_padding=60,padding=0,full_name=** ELF Section: .ARM.attributes,object_path=,source_path=,flags={},num_aliases=1,component=) .other@0(size_without_padding=17166112,padding=0,full_name=** ELF Section: .symtab,object_path=,source_path=,flags={},num_aliases=1,component=)
.other@0(size_without_padding=4194304,padding=0,full_name=smalltest.so,object_path=,source_path=$APK/smalltest.so,flags={gen},num_aliases=1,component=) .other@0(size_without_padding=4194304,padding=0,full_name=smalltest.so,object_path=,source_path=$APK/smalltest.so,flags={gen},num_aliases=1,component=)
.other@0(size_without_padding=1048576,padding=0,full_name=assets/icudtl.dat,object_path=,source_path=third_party/icu/android/icudtl.dat,flags={},num_aliases=1,component=Internal>Android) .other@0(size_without_padding=1048576,padding=0,full_name=assets/icudtl.dat,object_path=,source_path=third_party/icu/android/icudtl.dat,flags={},num_aliases=1,component=Internal>Android)
.other@0(size_without_padding=1024,padding=0,full_name=res/drawable-v13/test.xml,object_path=,source_path=chrome/android/res/drawable/test.xml,flags={},num_aliases=1,component=) .other@0(size_without_padding=1024,padding=0,full_name=res/drawable-v13/test.xml,object_path=,source_path=chrome/android/res/drawable/test.xml,flags={},num_aliases=1,component=)
.other@0(size_without_padding=0,padding=764,full_name=Overhead: APK file,object_path=,source_path=,flags={},num_aliases=1,component=) .other@0(size_without_padding=0,padding=764,full_name=Overhead: APK file,object_path=,source_path=,flags={},num_aliases=1,component=)
.other@0(size_without_padding=0,padding=33902635,full_name=Overhead: ELF file,object_path=,source_path=,flags={},num_aliases=1,component=) .other@0(size_without_padding=0,padding=33902635,full_name=Overhead: ELF file,object_path=,source_path=,flags={},num_aliases=1,component=)
.other@154(size_without_padding=19,padding=0,full_name=** ELF Section: .interp,object_path=,source_path=,flags={},num_aliases=1,component=)
.other@168(size_without_padding=36,padding=0,full_name=** ELF Section: .note.gnu.build-id,object_path=,source_path=,flags={},num_aliases=1,component=)
.other@18c(size_without_padding=6496,padding=0,full_name=** ELF Section: .dynsym,object_path=,source_path=,flags={},num_aliases=1,component=)
.other@1b0c(size_without_padding=4025,padding=0,full_name=** ELF Section: .dynstr,object_path=,source_path=,flags={},num_aliases=1,component=)
.other@2ad4(size_without_padding=2684,padding=0,full_name=** ELF Section: .hash,object_path=,source_path=,flags={},num_aliases=1,component=)
.other@3558(size_without_padding=812,padding=0,full_name=** ELF Section: .gnu.version,object_path=,source_path=,flags={},num_aliases=1,component=)
.other@3888(size_without_padding=28,padding=0,full_name=** ELF Section: .gnu.version_d,object_path=,source_path=,flags={},num_aliases=1,component=)
.other@38a4(size_without_padding=96,padding=0,full_name=** ELF Section: .gnu.version_r,object_path=,source_path=,flags={},num_aliases=1,component=)
.other@3904(size_without_padding=2655384,padding=0,full_name=** ELF Section: .rel.dyn,object_path=,source_path=,flags={},num_aliases=1,component=)
.other@29fbec(size_without_padding=2816,padding=0,full_name=** ELF Section: .rel.plt,object_path=,source_path=,flags={},num_aliases=1,component=)
.other@2a06ec(size_without_padding=4244,padding=0,full_name=** ELF Section: .plt,object_path=,source_path=,flags={},num_aliases=1,component=)
.other@2bd3d10(size_without_padding=1536456,padding=0,full_name=** ELF Section: .ARM.exidx,object_path=,source_path=,flags={},num_aliases=1,component=)
.other@2bd5858(size_without_padding=183632,padding=0,full_name=** ELF Section: .ARM.extab,object_path=,source_path=,flags={},num_aliases=1,component=)
.other@2ddc608(size_without_padding=8,padding=0,full_name=** ELF Section: .init_array,object_path=,source_path=,flags={},num_aliases=1,component=)
.other@2ddc6f4(size_without_padding=8,padding=0,full_name=** ELF Section: .fini_array,object_path=,source_path=,flags={},num_aliases=1,component=)
.other@2ddc6fc(size_without_padding=304,padding=0,full_name=** ELF Section: .dynamic,object_path=,source_path=,flags={},num_aliases=1,component=)
.other@2ddc834(size_without_padding=42956,padding=0,full_name=** ELF Section: .got,object_path=,source_path=,flags={},num_aliases=1,component=)
.rodata@266e600(size_without_padding=5,padding=0,full_name="Str1",object_path=base/base/page_allocator.o,source_path=base/page_allocator.cc,flags={},num_aliases=2,component=Blink>Internal) .rodata@266e600(size_without_padding=5,padding=0,full_name="Str1",object_path=base/base/page_allocator.o,source_path=base/page_allocator.cc,flags={},num_aliases=2,component=Blink>Internal)
.rodata@266e600(size_without_padding=5,padding=0,full_name="Str1",object_path=third_party/icu/icuuc/ucnv_ext.o,source_path=third_party/icu/ucnv_ext.c,flags={gen},num_aliases=2,component=Internal>Android) .rodata@266e600(size_without_padding=5,padding=0,full_name="Str1",object_path=third_party/icu/icuuc/ucnv_ext.o,source_path=third_party/icu/ucnv_ext.c,flags={gen},num_aliases=2,component=Internal>Android)
.rodata@266e605(size_without_padding=16,padding=0,full_name="String literal2",object_path=third_party/icu/icuuc/ucnv_ext.o,source_path=third_party/icu/ucnv_ext.c,flags={gen},num_aliases=1,component=Internal>Android) .rodata@266e605(size_without_padding=16,padding=0,full_name="String literal2",object_path=third_party/icu/icuuc/ucnv_ext.o,source_path=third_party/icu/ucnv_ext.c,flags={gen},num_aliases=1,component=Internal>Android)
......
******** section_sizes ******** ******** section_sizes ********
.ARM.attributes 35 .ARM.attributes @0 35
.ARM.exidx 1975928 .ARM.exidx @188 1975928
.ARM.extab 36860 .ARM.extab @82504c 36860
.bss 1089404 .bss @2f56000 1089404
.comment 168 .comment @0 168
.data 118728 .data @2d4c000 118728
.data.rel.ro 2013024 .data.rel.ro @2d69000 2013024
.dynamic 240 .dynamic @2f54778 240
.dynstr 3947 .dynstr @1e43fc 3947
.dynsym 6256 .dynsym @1e2800 6256
.fini_array 8 .fini_array @2f54760 8
.gnu.hash 28 .gnu.hash @1e43e0 28
.gnu.version 782 .gnu.version @1e4070 782
.gnu.version_r 96 .gnu.version_r @1e4380 96
.got 1452 .got @2f54868 1452
.got.plt 1528 .got.plt @2f54e14 1528
.init_array 16 .init_array @2f54768 16
.interp 19 .interp @174 19
.note.android.ident 152 .note.android.ident @213134 152
.note.crashpad.info 28 .note.crashpad.info @213118 28
.note.gnu.build-id 36 .note.gnu.build-id @2131cc 36
.part.end 4096 .part.end @0 4096
.plt 6096 .plt @2d4a7f0 6096
.rel.dyn 184789 .rel.dyn @1e5368 184789
.rel.plt 3032 .rel.plt @212540 3032
.rodata 6364747 .rodata @213200 6364747
.shstrtab 452 .shstrtab @0 452
.strtab 49754930 .strtab @0 49754930
.symtab 18626064 .symtab @0 18626064
.text 38909928 .text @82f000 38909928
******** raw_symbols ******** ******** raw_symbols ********
.rodata@213200(size_without_padding=4,padding=0,full_name=v8_Default_embedded_blob_size_,object_path=obj/v8/v8_external_snapshot/embedded.o,source_path=,flags={},num_aliases=1,component=) .rodata@213200(size_without_padding=4,padding=0,full_name=v8_Default_embedded_blob_size_,object_path=obj/v8/v8_external_snapshot/embedded.o,source_path=,flags={},num_aliases=1,component=)
......
******** section_sizes ******** ******** section_sizes ********
.ARM.extab 24100 .ARM.extab @8b02ec 24100
.data.rel.ro 2430180 .data.rel.ro @3255000 2430180
.rodata 6759914 .rodata @23dd00 6759914
.text 43636188 .text @8b6140 43636188
******** raw_symbols ******** ******** raw_symbols ********
.rodata@23dd00(size_without_padding=4,padding=0,full_name=v8_Default_embedded_blob_size_,object_path=obj/v8/v8_external_snapshot/embedded.o,source_path=,flags={},num_aliases=1,component=) .rodata@23dd00(size_without_padding=4,padding=0,full_name=v8_Default_embedded_blob_size_,object_path=obj/v8/v8_external_snapshot/embedded.o,source_path=,flags={},num_aliases=1,component=)
......
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