am df877d7b: Merge "Adjust DT_MIPS_RLD_MAP2 value"

* commit 'df877d7b289543e5a969566e0dcbb6102b08f002':
  Adjust DT_MIPS_RLD_MAP2 value
This commit is contained in:
Dmitriy Ivanov 2015-04-30 05:28:42 +00:00 committed by Android Git Automerger
commit 775ef1b68b
2 changed files with 14 additions and 0 deletions

View File

@ -472,6 +472,16 @@ void ElfFile<ELF>::AdjustDynamicSectionForHole(Elf_Scn* dynamic_section,
<< " d_val adjusted to " << dynamic->d_un.d_val;
}
// Special case: DT_MIPS_RLD_MAP2 stores the difference between dynamic
// entry address and the address of the _r_debug (used by GDB)
// since the dynamic section and target address are on the
// different sides of the hole it needs to be adjusted accordingly
if (tag == DT_MIPS_RLD_MAP2) {
dynamic->d_un.d_val += hole_size;
VLOG(1) << "dynamic[" << i << "] " << dynamic->d_tag
<< " d_val adjusted to " << dynamic->d_un.d_val;
}
// Ignore DT_RELCOUNT and DT_RELACOUNT: (1) nobody uses them and
// technically (2) the relative relocation count is not changed.

View File

@ -10,6 +10,10 @@
#include "elf.h"
#include "libelf.h"
#if !defined(DT_MIPS_RLD_MAP2)
#define DT_MIPS_RLD_MAP2 0x70000035
#endif
// ELF is a traits structure used to provide convenient aliases for
// 32/64 bit Elf types and functions, depending on the target file.