| 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 |