OLD | NEW |
1 Introduction: | 1 Introduction: |
2 ------------- | 2 ------------- |
3 | 3 |
4 R_ARM_RELATIVE relocations are the bulk of dynamic relocations (the .rel.dyn | 4 R_ARM_RELATIVE relocations are the bulk of dynamic relocations (the .rel.dyn |
5 section) in libchrome.<version>.so. The ELF standard representation of them | 5 section) in libchrome.<version>.so. The ELF standard representation of them |
6 is wasteful. | 6 is wasteful. |
7 | 7 |
8 Packing uses run length encoding to store them more efficiently. Packed | 8 Packing uses run length encoding to store them more efficiently. Packed |
9 relocations are placed in a new .android.rel.dyn section. Packing reduces | 9 relocations are placed in a new .android.rel.dyn section. Packing reduces |
10 the footprint of libchrome.<version>.so in the filesystem, in APK downloads, | 10 the footprint of libchrome.<version>.so in the filesystem, in APK downloads, |
(...skipping 13 matching lines...) Expand all Loading... |
24 Notes: | 24 Notes: |
25 ------ | 25 ------ |
26 | 26 |
27 Packing does not adjust debug data. An unstripped libchrome.<version>.so | 27 Packing does not adjust debug data. An unstripped libchrome.<version>.so |
28 can be packed and will run, but may no longer be useful for debugging. | 28 can be packed and will run, but may no longer be useful for debugging. |
29 | 29 |
30 Unpacking on the device requires the explicit support of an extended crazy | 30 Unpacking on the device requires the explicit support of an extended crazy |
31 linker. Adds the following new .dynamic tags, used by the crazy linker to | 31 linker. Adds the following new .dynamic tags, used by the crazy linker to |
32 find the packed .android.rel.dyn section data: | 32 find the packed .android.rel.dyn section data: |
33 | 33 |
34 DT_ANDROID_ARM_REL_OFFSET = DT_LOPROC (Processor specific: 0x70000000) | 34 DT_ANDROID_REL_OFFSET = DT_LOOS (Operating System specific: 0x6000000d) |
35 - The offset of .android.rel.dyn data in libchrome.<version>.so | 35 - The offset of .android.rel.dyn data in libchrome.<version>.so |
36 DT_ANDROID_ARM_REL_SIZE = DT_LOPROC + 1 (Processor Specific: 0x70000001) | 36 DT_ANDROID_REL_SIZE = DT_LOOS + 1 (Operating System Specific: 0x6000000e) |
37 - The size of .android.rel.dyn data in bytes | 37 - The size of .android.rel.dyn data in bytes |
38 | 38 |
39 The format of .android.rel.dyn data is: | 39 The format of .android.rel.dyn data is: |
40 | 40 |
41 "APR1" identifier | 41 "APR1" identifier |
42 N: the number of count-delta pairs in the encoding | 42 N: the number of count-delta pairs in the encoding |
43 A: the initial offset | 43 A: the initial offset |
44 N * C,D: N count-delta pairs | 44 N * C,D: N count-delta pairs |
45 | 45 |
46 All numbers in the encoding stream are stored as LEB128 values. For details | 46 All numbers in the encoding stream are stored as LEB128 values. For details |
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
93 the allocation). | 93 the allocation). |
94 | 94 |
95 Requires libelf 0.158 or later. Earlier libelf releases may be buggy in | 95 Requires libelf 0.158 or later. Earlier libelf releases may be buggy in |
96 ways that prevent the packer from working correctly. | 96 ways that prevent the packer from working correctly. |
97 | 97 |
98 | 98 |
99 Testing: | 99 Testing: |
100 -------- | 100 -------- |
101 | 101 |
102 Unittests run under gtest, on the host system. | 102 Unittests run under gtest, on the host system. |
OLD | NEW |