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
[email protected]
https://lists.sourceforge.net/lists/listinfo/strace-devel