Merge "linker: remove COUNT_PAGES"
This commit is contained in:
commit
859202c8e5
3 changed files with 1 additions and 60 deletions
|
@ -301,10 +301,6 @@ void count_relocation(RelocationKind) {
|
|||
}
|
||||
#endif
|
||||
|
||||
#if COUNT_PAGES
|
||||
uint32_t bitmask[4096];
|
||||
#endif
|
||||
|
||||
static void notify_gdb_of_load(soinfo* info) {
|
||||
if (info->is_linker() || info->is_main_executable()) {
|
||||
// gdb already knows about the linker and the main executable.
|
||||
|
@ -3140,7 +3136,6 @@ bool soinfo::relocate(const VersionTracker& version_tracker, ElfRelIteratorT&& r
|
|||
switch (type) {
|
||||
case R_GENERIC_JUMP_SLOT:
|
||||
count_relocation(kRelocAbsolute);
|
||||
MARK(rel->r_offset);
|
||||
TRACE_TYPE(RELO, "RELO JMP_SLOT %16p <- %16p %s\n",
|
||||
reinterpret_cast<void*>(reloc),
|
||||
reinterpret_cast<void*>(sym_addr + addend), sym_name);
|
||||
|
@ -3150,7 +3145,6 @@ bool soinfo::relocate(const VersionTracker& version_tracker, ElfRelIteratorT&& r
|
|||
case R_GENERIC_ABSOLUTE:
|
||||
case R_GENERIC_GLOB_DAT:
|
||||
count_relocation(kRelocAbsolute);
|
||||
MARK(rel->r_offset);
|
||||
TRACE_TYPE(RELO, "RELO ABSOLUTE/GLOB_DAT %16p <- %16p %s\n",
|
||||
reinterpret_cast<void*>(reloc),
|
||||
reinterpret_cast<void*>(sym_addr + addend), sym_name);
|
||||
|
@ -3158,7 +3152,6 @@ bool soinfo::relocate(const VersionTracker& version_tracker, ElfRelIteratorT&& r
|
|||
break;
|
||||
case R_GENERIC_RELATIVE:
|
||||
count_relocation(kRelocRelative);
|
||||
MARK(rel->r_offset);
|
||||
TRACE_TYPE(RELO, "RELO RELATIVE %16p <- %16p\n",
|
||||
reinterpret_cast<void*>(reloc),
|
||||
reinterpret_cast<void*>(load_bias + addend));
|
||||
|
@ -3166,7 +3159,6 @@ bool soinfo::relocate(const VersionTracker& version_tracker, ElfRelIteratorT&& r
|
|||
break;
|
||||
case R_GENERIC_IRELATIVE:
|
||||
count_relocation(kRelocRelative);
|
||||
MARK(rel->r_offset);
|
||||
TRACE_TYPE(RELO, "RELO IRELATIVE %16p <- %16p\n",
|
||||
reinterpret_cast<void*>(reloc),
|
||||
reinterpret_cast<void*>(load_bias + addend));
|
||||
|
@ -3210,7 +3202,6 @@ bool soinfo::relocate(const VersionTracker& version_tracker, ElfRelIteratorT&& r
|
|||
return false;
|
||||
case R_GENERIC_TLS_TPREL:
|
||||
count_relocation(kRelocRelative);
|
||||
MARK(rel->r_offset);
|
||||
{
|
||||
ElfW(Addr) tpoff = 0;
|
||||
if (lsi == nullptr) {
|
||||
|
@ -3236,7 +3227,6 @@ bool soinfo::relocate(const VersionTracker& version_tracker, ElfRelIteratorT&& r
|
|||
break;
|
||||
case R_GENERIC_TLS_DTPMOD:
|
||||
count_relocation(kRelocRelative);
|
||||
MARK(rel->r_offset);
|
||||
{
|
||||
size_t module_id = 0;
|
||||
if (lsi == nullptr) {
|
||||
|
@ -3252,7 +3242,6 @@ bool soinfo::relocate(const VersionTracker& version_tracker, ElfRelIteratorT&& r
|
|||
break;
|
||||
case R_GENERIC_TLS_DTPREL:
|
||||
count_relocation(kRelocRelative);
|
||||
MARK(rel->r_offset);
|
||||
TRACE_TYPE(RELO, "RELO TLS_DTPREL %16p <- %16p %s\n",
|
||||
reinterpret_cast<void*>(reloc),
|
||||
reinterpret_cast<void*>(sym_addr + addend), sym_name);
|
||||
|
@ -3264,7 +3253,6 @@ bool soinfo::relocate(const VersionTracker& version_tracker, ElfRelIteratorT&& r
|
|||
// other architectures, as long as the resolver functions are implemented.
|
||||
case R_GENERIC_TLSDESC:
|
||||
count_relocation(kRelocRelative);
|
||||
MARK(rel->r_offset);
|
||||
{
|
||||
TlsDescriptor* desc = reinterpret_cast<TlsDescriptor*>(reloc);
|
||||
if (lsi == nullptr) {
|
||||
|
@ -3305,14 +3293,12 @@ bool soinfo::relocate(const VersionTracker& version_tracker, ElfRelIteratorT&& r
|
|||
#if defined(__x86_64__)
|
||||
case R_X86_64_32:
|
||||
count_relocation(kRelocAbsolute);
|
||||
MARK(rel->r_offset);
|
||||
TRACE_TYPE(RELO, "RELO R_X86_64_32 %08zx <- +%08zx %s", static_cast<size_t>(reloc),
|
||||
static_cast<size_t>(sym_addr), sym_name);
|
||||
*reinterpret_cast<Elf32_Addr*>(reloc) = sym_addr + addend;
|
||||
break;
|
||||
case R_X86_64_PC32:
|
||||
count_relocation(kRelocRelative);
|
||||
MARK(rel->r_offset);
|
||||
TRACE_TYPE(RELO, "RELO R_X86_64_PC32 %08zx <- +%08zx (%08zx - %08zx) %s",
|
||||
static_cast<size_t>(reloc), static_cast<size_t>(sym_addr - reloc),
|
||||
static_cast<size_t>(sym_addr), static_cast<size_t>(reloc), sym_name);
|
||||
|
@ -3321,7 +3307,6 @@ bool soinfo::relocate(const VersionTracker& version_tracker, ElfRelIteratorT&& r
|
|||
#elif defined(__i386__)
|
||||
case R_386_PC32:
|
||||
count_relocation(kRelocRelative);
|
||||
MARK(rel->r_offset);
|
||||
TRACE_TYPE(RELO, "RELO R_386_PC32 %08x <- +%08x (%08x - %08x) %s",
|
||||
reloc, (sym_addr - reloc), sym_addr, reloc, sym_name);
|
||||
*reinterpret_cast<ElfW(Addr)*>(reloc) += (sym_addr - reloc);
|
||||
|
|
|
@ -44,7 +44,6 @@
|
|||
#define DO_TRACE_IFUNC 1
|
||||
#define TIMING 0
|
||||
#define STATS 0
|
||||
#define COUNT_PAGES 0
|
||||
|
||||
/*********************************************************************
|
||||
* You shouldn't need to modify anything below unless you are adding
|
||||
|
@ -83,22 +82,3 @@ __LIBC_HIDDEN__ extern int g_ld_debug_verbosity;
|
|||
#endif /* TRACE_DEBUG */
|
||||
|
||||
#define TRACE_TYPE(t, x...) do { if (DO_TRACE_##t) { TRACE(x); } } while (0)
|
||||
|
||||
#if COUNT_PAGES
|
||||
extern uint32_t bitmask[];
|
||||
#if defined(__LP64__)
|
||||
#define MARK(offset) \
|
||||
do { \
|
||||
if ((((offset) >> 12) >> 5) < 4096) \
|
||||
bitmask[((offset) >> 12) >> 5] |= (1 << (((offset) >> 12) & 31)); \
|
||||
} while (0)
|
||||
#else
|
||||
#define MARK(offset) \
|
||||
do { \
|
||||
bitmask[((offset) >> 12) >> 3] |= (1 << (((offset) >> 12) & 7)); \
|
||||
} while (0)
|
||||
#endif
|
||||
#else
|
||||
#define MARK(x) do {} while (0)
|
||||
|
||||
#endif
|
||||
|
|
|
@ -496,31 +496,7 @@ static ElfW(Addr) linker_main(KernelArgumentBlock& args, const char* exe_to_load
|
|||
#if STATS
|
||||
print_linker_stats();
|
||||
#endif
|
||||
#if COUNT_PAGES
|
||||
{
|
||||
unsigned n;
|
||||
unsigned i;
|
||||
unsigned count = 0;
|
||||
for (n = 0; n < 4096; n++) {
|
||||
if (bitmask[n]) {
|
||||
unsigned x = bitmask[n];
|
||||
#if defined(__LP64__)
|
||||
for (i = 0; i < 32; i++) {
|
||||
#else
|
||||
for (i = 0; i < 8; i++) {
|
||||
#endif
|
||||
if (x & 1) {
|
||||
count++;
|
||||
}
|
||||
x >>= 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
PRINT("PAGES MODIFIED: %s: %d (%dKB)", g_argv[0], count, count * 4);
|
||||
}
|
||||
#endif
|
||||
|
||||
#if TIMING || STATS || COUNT_PAGES
|
||||
#if TIMING || STATS
|
||||
fflush(stdout);
|
||||
#endif
|
||||
|
||||
|
|
Loading…
Reference in a new issue