Always pass false for exe in elf_add call.
authorAdrian Băcîrcea <adrian.bacircea@gmail.com>
Sun, 25 Oct 2015 15:53:33 +0000 (17:53 +0200)
committerMilian Wolff <milian.wolff@kdab.com>
Mon, 26 Oct 2015 10:17:24 +0000 (11:17 +0100)
commitb9e59080f5ee369cedf9212d74677767467368dc
tree555d0b3980714815b6f9118ffeaffe71455cc785
parentff6e1e9367bd4afd568227232df7988f5ebea706
Always pass false for exe in elf_add call.

Basically, if you pass the isExe flag to elf_add, libbacktrace will
see that it's an ET_DYN executable which means that the sections
can be relocated on load so it will defer to dl_iterate_phdr to get
the real addresses. It will do that only when you call
backtrace_pcinfo which, behind the scenes, ends up calling
backtrace_initialize and that will do the dl_iterate_phdr for the
executable which is wrong since the executable we want to get the
symbols on is not the current one (which is heaptrack_interpret) and
we already get the base addresses correctly from the main process
through the pipe. So there's no need to ever pass isExe = true.
heaptrack_interpret.cpp