diff --git a/libdwfl/linux-pid-attach.c b/libdwfl/linux-pid-attach.c index 3a6af99..b23139d 100644 --- a/libdwfl/linux-pid-attach.c +++ b/libdwfl/linux-pid-attach.c @@ -193,14 +193,22 @@ pid_memory_read (Dwfl *dwfl, Dwarf_Addr addr, Dwarf_Word *result, void *arg) { struct __libdwfl_pid_arg *pid_arg = arg; pid_t tid = pid_arg->tid_attached; + Dwfl_Process *process = dwfl->process; assert (tid > 0); #ifdef HAVE_PROCESS_VM_READV if (read_cached_memory (pid_arg, addr, result)) + { +#if SIZEOF_LONG == 8 +# if BYTE_ORDER == BIG_ENDIAN + if (ebl_get_elfclass (process->ebl) == ELFCLASS32) + *result >>= 32; +# endif +#endif return true; + } #endif - Dwfl_Process *process = dwfl->process; if (ebl_get_elfclass (process->ebl) == ELFCLASS64) { #if SIZEOF_LONG == 8