| Index: common/linux/dump_symbols.cc
|
| diff --git a/common/linux/dump_symbols.cc b/common/linux/dump_symbols.cc
|
| index 0bcc18ab108ea15315b46b71dd6f595e1a734166..1e96ca6a86af6be7285319d1e8db3f8987191a7e 100644
|
| --- a/common/linux/dump_symbols.cc
|
| +++ b/common/linux/dump_symbols.cc
|
| @@ -95,6 +95,15 @@ using google_breakpad::scoped_ptr;
|
| #define EM_AARCH64 183
|
| #endif
|
|
|
| +// Define SHT_ANDROID_REL and SHT_ANDROID_RELA if not defined by the host.
|
| +// Sections with this type contain Android packed relocations.
|
| +#ifndef SHT_ANDROID_REL
|
| +#define SHT_ANDROID_REL (SHT_LOOS + 1)
|
| +#endif
|
| +#ifndef SHT_ANDROID_RELA
|
| +#define SHT_ANDROID_RELA (SHT_LOOS + 2)
|
| +#endif
|
| +
|
| //
|
| // FDWrapper
|
| //
|
| @@ -611,6 +620,28 @@ bool LoadSymbols(const string& obj_file,
|
| bool found_debug_info_section = false;
|
| bool found_usable_info = false;
|
|
|
| + // Reject files that contain Android packed relocations. The pre-packed
|
| + // version of the file should be symbolized; the packed version is only
|
| + // intended for use on the target system.
|
| + if (FindElfSectionByName<ElfClass>(".rel.dyn", SHT_ANDROID_REL,
|
| + sections, names,
|
| + names_end, elf_header->e_shnum)) {
|
| + fprintf(stderr, "%s: file contains a \".rel.dyn\" section "
|
| + "with type SHT_ANDROID_REL\n", obj_file.c_str());
|
| + fprintf(stderr, "Files containing Android packed relocations "
|
| + "may not be symbolized.\n");
|
| + return false;
|
| + }
|
| + if (FindElfSectionByName<ElfClass>(".rela.dyn", SHT_ANDROID_RELA,
|
| + sections, names,
|
| + names_end, elf_header->e_shnum)) {
|
| + fprintf(stderr, "%s: file contains a \".rela.dyn\" section "
|
| + "with type SHT_ANDROID_RELA\n", obj_file.c_str());
|
| + fprintf(stderr, "Files containing Android packed relocations "
|
| + "may not be symbolized.\n");
|
| + return false;
|
| + }
|
| +
|
| if (options.symbol_data != ONLY_CFI) {
|
| #ifndef NO_STABS_SUPPORT
|
| // Look for STABS debugging information, and load it if present.
|
|
|