diff --git a/tools/relocation_packer/src/elf_file.h b/tools/relocation_packer/src/elf_file.h index 73c31923f..a749d5066 100644 --- a/tools/relocation_packer/src/elf_file.h +++ b/tools/relocation_packer/src/elf_file.h @@ -4,53 +4,16 @@ // ELF shared object file updates handler. // -// Provides functions to remove relative relocations from the .rel.dyn -// or .rela.dyn sections and pack into .android.rel.dyn or .android.rela.dyn, -// and unpack to return the file to its pre-packed state. -// -// Files to be packed or unpacked must include an existing .android.rel.dyn -// or android.rela.dyn section. A standard libchrome..so will not -// contain this section, so the following can be used to add one: -// -// echo -n 'NULL' >/tmp/small -// if file libchrome..so | grep -q 'ELF 32'; then -// arm-linux-androideabi-objcopy -// --add-section .android.rel.dyn=/tmp/small -// libchrome..so libchrome..so.packed -// else -// aarch64-linux-android-objcopy -// --add-section .android.rela.dyn=/tmp/small -// libchrome..so libchrome..so.packed -// fi -// rm /tmp/small -// -// To use, open the file and pass the file descriptor to the constructor, -// then pack or unpack as desired. Packing or unpacking will flush the file -// descriptor on success. Example: -// -// int fd = open(..., O_RDWR); -// ElfFile elf_file(fd); -// bool status; -// if (is_packing) -// status = elf_file.PackRelocations(); -// else -// status = elf_file.UnpackRelocations(); -// close(fd); +// Provides functions to pack relocations in the .rel.dyn or .rela.dyn +// sections, and unpack to return the file to its pre-packed state. // // SetPadding() causes PackRelocations() to pad .rel.dyn or .rela.dyn with // NONE-type entries rather than cutting a hole out of the shared object // file. This keeps all load addresses and offsets constant, and enables // easier debugging and testing. // -// A packed shared object file has all of its relative relocations -// removed from .rel.dyn or .rela.dyn, and replaced as packed data in -// .android.rel.dyn or .android.rela.dyn respectively. The resulting file -// is shorter than its non-packed original. -// -// Unpacking a packed file restores the file to its non-packed state, by -// expanding the packed data in .android.rel.dyn or .android.rela.dyn, -// combining the relative relocations with the data already in .rel.dyn -// or .rela.dyn, and then writing back the now expanded section. +// A packed shared object file is shorter than its non-packed original. +// Unpacking a packed file restores the file to its non-packed state. #ifndef TOOLS_RELOCATION_PACKER_SRC_ELF_FILE_H_ #define TOOLS_RELOCATION_PACKER_SRC_ELF_FILE_H_ diff --git a/tools/relocation_packer/src/leb128.h b/tools/relocation_packer/src/leb128.h index 2c5b5d079..67fc4b829 100644 --- a/tools/relocation_packer/src/leb128.h +++ b/tools/relocation_packer/src/leb128.h @@ -4,9 +4,8 @@ // LEB128 encoder and decoder for packed relative relocations. // -// Run-length encoded relative relocations consist of a large number -// of pairs of relatively small positive integer values. Encoding these as -// LEB128 saves space. +// Packed relocations consist of a large number of relatively small +// integer values. Encoding these as LEB128 saves space. // // For more on LEB128 see http://en.wikipedia.org/wiki/LEB128. diff --git a/tools/relocation_packer/src/main.cc b/tools/relocation_packer/src/main.cc index 3f784e4f3..8e9de6d96 100644 --- a/tools/relocation_packer/src/main.cc +++ b/tools/relocation_packer/src/main.cc @@ -4,9 +4,6 @@ // Tool to pack and unpack relative relocations in a shared library. // -// Packing removes relative relocations from .rel.dyn and writes them -// in a more compact form to .android.rel.dyn. Unpacking does the reverse. -// // Invoke with -v to trace actions taken when packing or unpacking. // Invoke with -p to pad removed relocations with R_*_NONE. Suppresses // shrinking of .rel.dyn. diff --git a/tools/relocation_packer/src/packer.h b/tools/relocation_packer/src/packer.h index 8a57e623b..63f50e249 100644 --- a/tools/relocation_packer/src/packer.h +++ b/tools/relocation_packer/src/packer.h @@ -3,43 +3,6 @@ // found in the LICENSE file. // Pack relative relocations into a more compact form. -// -// -// For relative relocations without addends (32 bit platforms) -// ----------------------------------------------------------- -// -// Applies two packing strategies. The first is run-length encoding, which -// turns a large set of relative relocations into a much smaller set -// of delta-count pairs, prefixed with a two-word header comprising the -// count of pairs and the initial relocation offset. The second is LEB128 -// encoding, which compresses the result of run-length encoding. -// -// Once packed, data is prefixed by an identifier that allows for any later -// versioning of packing strategies. -// -// A complete packed stream of relocations without addends might look -// something like: -// -// "APR1" pairs init_offset count1 delta1 count2 delta2 ... -// 41505231 f2b003 b08ac716 e001 04 01 10 ... -// -// -// For relative relocations with addends (64 bit platforms) -// -------------------------------------------------------- -// -// Applies two packing strategies. The first is delta encoding, which -// turns a large set of relative relocations into a smaller set -// of offset and addend delta pairs, prefixed with a header indicating the -// count of pairs. The second is signed LEB128 encoding, which compacts -// the result of delta encoding. -// -// Once packed, data is prefixed by an identifier that allows for any later -// versioning of packing strategies. -// -// A complete packed stream might look something like: -// -// "APA1" pairs offset_d1 addend_d1 offset_d2 addend_d2 ... -// 41505232 f2b018 04 28 08 9f01 ... #ifndef TOOLS_RELOCATION_PACKER_SRC_PACKER_H_ #define TOOLS_RELOCATION_PACKER_SRC_PACKER_H_ diff --git a/tools/relocation_packer/src/sleb128.h b/tools/relocation_packer/src/sleb128.h index fa0a24610..3a63f6679 100644 --- a/tools/relocation_packer/src/sleb128.h +++ b/tools/relocation_packer/src/sleb128.h @@ -4,9 +4,8 @@ // SLEB128 encoder and decoder for packed relative relocations. // -// Delta encoded relative relocations consist of a large number -// of pairs signed integer values, many with small values. Encoding these -// as signed LEB128 saves space. +// Packed relocations consist of a large number of relatively small +// integer values. Encoding these as LEB128 saves space. // // For more on LEB128 see http://en.wikipedia.org/wiki/LEB128.