Index: tools/binary_size/libsupersize/testdata/mock_toolchain/mock_readelf.py |
diff --git a/tools/binary_size/libsupersize/testdata/mock_toolchain/mock_readelf.py b/tools/binary_size/libsupersize/testdata/mock_toolchain/mock_readelf.py |
new file mode 100644 |
index 0000000000000000000000000000000000000000..ccfa532f752d320daccebba4620b4d7192f1a0b1 |
--- /dev/null |
+++ b/tools/binary_size/libsupersize/testdata/mock_toolchain/mock_readelf.py |
@@ -0,0 +1,93 @@ |
+# Copyright 2017 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. |
+ |
+import sys |
+ |
+ |
+_HEADERS = """ELF Header: |
+ Magic: 7f 45 4c 46 01 01 01 00 00 00 00 00 00 00 00 00 |
+ Class: ELF32 |
+ Data: 2's complement, little endian |
+ Version: 1 (current) |
+ OS/ABI: UNIX - System V |
+ ABI Version: 0 |
+ Type: DYN (Shared object file) |
+ Machine: ARM |
+ Version: 0x1 |
+ Entry point address: 0x0 |
+ Start of program headers: 52 (bytes into file) |
+ Start of section headers: 628588000 (bytes into file) |
+ Flags: 0x5000200, Version5 EABI, soft-float ABI |
+ Size of this header: 52 (bytes) |
+ Size of program headers: 32 (bytes) |
+ Number of program headers: 9 |
+ Size of section headers: 40 (bytes) |
+ Number of section headers: 40 |
+ Section header string table index: 39 |
+""" |
+ |
+_SECTIONS = """There are 40 section headers, starting at offset 0x25777de0: |
+ |
+Section Headers: |
+ [Nr] Name Type Addr Off Size ES Flg Lk Inf Al |
+ [ 0] NULL 00000000 000000 000000 00 0 0 0 |
+ [ 1] .interp PROGBITS 00000154 000154 000013 00 A 0 0 1 |
+ [ 2] .note.gnu.build-id NOTE 00000168 000168 000024 00 A 0 0 4 |
+ [ 3] .dynsym DYNSYM 0000018c 00018c 001960 10 A 4 1 4 |
+ [ 4] .dynstr STRTAB 00001b0c 001b0c 000fb9 00 A 0 0 1 |
+ [ 5] .hash HASH 00002ad4 002ad4 000a7c 04 A 3 0 4 |
+ [ 6] .gnu.version VERSYM 00003558 003558 00032c 02 A 3 0 2 |
+ [ 7] .gnu.version_d VERDEF 00003888 003888 00001c 00 A 4 1 4 |
+ [ 8] .gnu.version_r VERNEED 000038a4 0038a4 000060 00 A 4 3 4 |
+ [ 9] .rel.dyn REL 00003904 003904 288498 08 A 3 0 4 |
+ [10] .rel.plt REL 0029fbec 29fbec 000b00 08 A 3 0 4 |
+ [11] .plt PROGBITS 002a06ec 2a06ec 001094 00 AX 0 0 4 |
+ [12] .text PROGBITS 002a1780 2a1780 223cd28 00 AX 0 0 64 |
+ [13] .rodata PROGBITS 02605000 2605000 5a72e4 00 A 0 0 256 |
+ [14] .ARM.exidx ARM_EXIDX 02bd3d10 2bd3d10 1771c8 08 AL 12 0 4 |
+ [15] .ARM.extab PROGBITS 02bd5858 2bd5858 02cd50 00 A 0 0 4 |
+ [16] .data.rel.ro.local PROGBITS 02bdac40 2bd9c40 0c0e08 00 WA 0 0 16 |
+ [17] .data.rel.ro PROGBITS 02c9d420 2c9c420 104108 00 WA 0 0 16 |
+ [18] .init_array INIT_ARRAY 02da4680 2da3680 000008 00 WA 0 0 4 |
+ [19] .fini_array FINI_ARRAY 02da4774 2da3774 000008 00 WA 0 0 4 |
+ [20] .dynamic DYNAMIC 02da477c 2da377c 000130 08 WA 4 0 4 |
+ [21] .got PROGBITS 02da48b4 2da38b4 00a7cc 00 WA 0 0 4 |
+ [22] .data PROGBITS 02db0000 2daf000 018d88 00 WA 0 0 32 |
+ [23] .bss NOBITS 02dc8220 2dc7220 13d7e8 00 WA 0 0 32 |
+ [35] .note.gnu.gold-version NOTE 00000000 226c41e8 00001c 00 0 0 4 |
+ [36] .ARM.attributes ARM_ATTRIBUTES 00000000 226c4204 00003c 00 0 0 1 |
+ [37] .symtab SYMTAB 00000000 226c4240 105ef20 10 38 901679 4 |
+ [38] .strtab STRTAB 00000000 23487ea0 213a4fe 00 0 0 1 |
+ [39] .shstrtab STRTAB 00000000 25777c2a 0001b4 00 0 0 1 |
+Key to Flags: |
+ W (write), A (alloc), X (execute), M (merge), S (strings) |
+ I (info), L (link order), G (group), T (TLS), E (exclude), x (unknown) |
+ O (extra OS processing required) o (OS specific), p (processor specific) |
+""" |
+ |
+_NOTES = """ |
+Displaying notes found at file offset 0x00000168 with length 0x00000024: |
+ Owner Data size\tDescription |
+ GNU 0x00000014\tNT_GNU_BUILD_ID (unique build ID bitstring) |
+ Build ID: WhatAnAmazingBuildId |
+ |
+Displaying notes found at file offset 0x226c41e8 with length 0x0000001c: |
+ Owner Data size\tDescription |
+ GNU 0x00000009\tNT_GNU_GOLD_VERSION (gold version) |
+""" |
+ |
+ |
+def main(): |
+ if sys.argv[1] == '-h': |
+ sys.stdout.write(_HEADERS) |
+ elif sys.argv[1] == '-S': |
+ sys.stdout.write(_SECTIONS) |
+ elif sys.argv[1] == '-n': |
+ sys.stdout.write(_NOTES) |
+ else: |
+ assert False, 'Invalid args: %s' % sys.argv |
+ |
+ |
+if __name__ == '__main__': |
+ main() |