diff options
author | Luis Machado <luisgpm@br.ibm.com> | 2008-03-12 15:56:01 +0100 |
---|---|---|
committer | Juan Cespedes <cespedes@debian.org> | 2008-03-12 15:56:01 +0100 |
commit | 55c5feba87bbb8d9190a71ec5ddc38380a384bf7 (patch) | |
tree | cadc8f58e39244fb000fb7aa6c7b79fadc5795a7 /display_args.c | |
parent | a413e5b8880de643a83ad124d078091c0956fe1d (diff) | |
download | ltrace-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.c | 6 |
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, |