aboutsummaryrefslogtreecommitdiff
path: root/display_args.c
diff options
context:
space:
mode:
authorLuis Machado <luisgpm@br.ibm.com>2008-03-12 15:56:01 +0100
committerJuan Cespedes <cespedes@debian.org>2008-03-12 15:56:01 +0100
commit55c5feba87bbb8d9190a71ec5ddc38380a384bf7 (patch)
treecadc8f58e39244fb000fb7aa6c7b79fadc5795a7 /display_args.c
parenta413e5b8880de643a83ad124d078091c0956fe1d (diff)
downloadltrace-55c5feba87bbb8d9190a71ec5ddc38380a384bf7.tar.gz
PPC argument handling improvements
* sysdeps/linux-gnu/ppc/trace.c (arch_umovelong): New function. * sysdeps/linux-gnu/ppc/regs.c (get_instruction): New function. (get_count_register): New function. * sysdeps/linux-gnu/ppc/arch.h (ARCH_HAVE_UMOVELONG): New define. * sysdeps/linux-gnu/trace.c (umovelong): Create arch-specific variant. * ltrace.h (umovelong): Change prototype. * process_event.c (process_breakpoint): Handle specifics of ppc3 * display_args.c: Call umovelong with info parameter.
Diffstat (limited to 'display_args.c')
-rw-r--r--display_args.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/display_args.c b/display_args.c
index 92f3e7d..49f5b44 100644
--- a/display_args.c
+++ b/display_args.c
@@ -32,7 +32,8 @@ static long get_length(enum tof type, struct process *proc, int len_spec,
if (len_spec > 0)
return len_spec;
if (type == LT_TOF_STRUCT) {
- umovelong(proc, st + st_info->u.struct_info.offset[-len_spec-1], &len);
+ umovelong (proc, st + st_info->u.struct_info.offset[-len_spec-1],
+ &len, st_info->u.struct_info.fields[-len_spec-1]);
return len;
}
@@ -135,7 +136,8 @@ static int display_pointer(enum tof type, struct process *proc, long value,
} else {
if (value == 0)
return fprintf(output, "NULL");
- else if (umovelong(proc, (void *) value, &pointed_to) < 0)
+ else if (umovelong (proc, (void *) value, &pointed_to,
+ info->u.ptr_info.info) < 0)
return fprintf(output, "?");
else
return display_value(type, proc, pointed_to, inner,