ext ext Daniel Jacobowitz wrote: > On Wed, Jun 25, 2008 at 08:51:31AM -0400, Anderson Lizardo wrote: >> Do you have any suggestions on how to reliably calculate absolute >> addresses? An alternative approach I have in mind is to peek directly at >> the linker structures, like it's done by GDB. Is that the only feasible >> general solution to the issue? > > I'm not sure I understand what you're doing. Don't you already have > the run-time linker's offsets?
No, we don't. As explained on the description of another patch, we fill the struct dl_phdr_info structure ourselves with information from get_elf_image(), which, in turn, is read from /proc/PID/maps. The maps address is always the absolute virtual address, don't matter how the offsets are defined internally in the ELF files. The local unwinding uses dl_iterate_phdr() to fill that structure, but it does not work for "remote" processes AFAIK. > If you assume that any file you've > opened is the same as the one running in the target process, then all > it takes is combining the two; p_vaddr plus the offset from the link > map. In this case we should read the link map from the process address space, instead of filling our own structure, right? > It's much trickier in GDB because we support remote debugging and > core dumps; the library may have been re-prelinked to a different > address. Isn't that valid for remote unwinding in libunwind too (except for the core dump handling)? Regards, -- Anderson Lizardo Instituto Nokia de Tecnologia (INdT) Manaus - Brazil _______________________________________________ Libunwind-devel mailing list [email protected] http://lists.nongnu.org/mailman/listinfo/libunwind-devel
