Add a host tool to pack R_ARM_RELATIVE relocations in libchrome.<ver>.so.
R_ARM_RELATIVE relocations are the bulk of dynamic relocations (the .rel.dyn
section) in libchrome.<version>.so. The ELF standard representation of them
is wasteful.
Packing uses run length encoding to store them more efficiently. Packed
relocations are placed in a new .android.rel.dyn section. Packing reduces
the footprint of libchrome.<version>.so in the filesystem, in APK downloads,
and in memory when loaded on the device.
A packed libchrome.<version>.so is designed so that it can be loaded directly
on Android, but requires the explicit support of a crazy linker that has been
extended to understand packed relocations.
A packed libchrome.<version>.so cannot currently be used with the standard
Android runtime linker.
See README.TXT and src/*.h for design and implementation notes.
BUG=
Review URL: https://codereview.chromium.org/310483003
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@276043 0039d316-1c4b-4281-b951-d872f2087c98
20 files changed