Curiously, kexec_load uses compat on x32/n32, so its parameters should be 4 bytes in size on these ABIs.
* kexec.c (SYS_FUNC(kexec_load)): Use widen_to_ulong for casting parameters to proper size on x32/n32. --- kexec.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/kexec.c b/kexec.c index d27bfe1..bf84db9 100644 --- a/kexec.c +++ b/kexec.c @@ -81,15 +81,16 @@ print_kexec_segments(struct tcb *tcp, const unsigned long addr, SYS_FUNC(kexec_load) { /* entry, nr_segments */ - printaddr(tcp->u_arg[0]); - tprintf(", %lu, ", tcp->u_arg[1]); + printaddr(widen_to_ulong(tcp->u_arg[0])); + tprintf(", %lu, ", widen_to_ulong(tcp->u_arg[1])); /* segments */ - print_kexec_segments(tcp, tcp->u_arg[2], tcp->u_arg[1]); + print_kexec_segments(tcp, widen_to_ulong(tcp->u_arg[2]), + widen_to_ulong(tcp->u_arg[1])); tprints(", "); /* flags */ - unsigned long n = tcp->u_arg[3]; + unsigned long n = widen_to_ulong(tcp->u_arg[3]); printxval_long(kexec_arch_values, n & KEXEC_ARCH_MASK, "KEXEC_ARCH_???"); n &= ~(unsigned long) KEXEC_ARCH_MASK; if (n) { -- 1.7.10.4 ------------------------------------------------------------------------------ Check out the vibrant tech community on one of the world's most engaging tech sites, SlashDot.org! http://sdm.link/slashdot _______________________________________________ Strace-devel mailing list Strace-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/strace-devel