Introduce print_sigset_addr function
As the definition of NSIG_BYTES is based on NSIG defined in <signal.h>, NSIG_BYTES cannot be used in files that use kernel sigset_t. Add another wrapper around print_sigset_addr_len_limit function that takes one argument less than print_sigset_addr_len wrapper. This new wrapper is going to be used in cases when the length argument is equal to NSIG_BYTES. * defs.h (print_sigset_addr): New function prototype. * signal.c (print_sigset_addr): New function. * linux/alpha/arch_sigreturn.c (arch_sigreturn): Replace print_sigset_addr_len with print_sigset_addr. * linux/arm/arch_sigreturn.c (arch_sigreturn): Likewise. * linux/crisv10/arch_sigreturn.c (arch_sigreturn): Likewise. * linux/ia64/arch_sigreturn.c (arch_sigreturn): Likewise. * linux/microblaze/arch_sigreturn.c (arch_sigreturn): Likewise. * linux/mips/arch_sigreturn.c (arch_sigreturn): Likewise. * linux/tile/arch_sigreturn.c (arch_sigreturn): Likewise. * linux/x86_64/arch_sigreturn.c (arch_sigreturn): Likewise.
This commit is contained in:
parent
a58fc3c950
commit
43b7c24994
3
defs.h
3
defs.h
@ -2,6 +2,7 @@
|
||||
* Copyright (c) 1991, 1992 Paul Kranenburg <pk@cs.few.eur.nl>
|
||||
* Copyright (c) 1993 Branko Lankester <branko@hacktic.nl>
|
||||
* Copyright (c) 1993, 1994, 1995, 1996 Rick Sladkey <jrs@world.std.com>
|
||||
* Copyright (C) 2001-2017 The strace developers.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
@ -585,6 +586,8 @@ extern void printuid(const char *, const unsigned int);
|
||||
|
||||
extern void
|
||||
print_sigset_addr_len(struct tcb *, kernel_ulong_t addr, kernel_ulong_t len);
|
||||
extern void
|
||||
print_sigset_addr(struct tcb *, kernel_ulong_t addr);
|
||||
|
||||
extern const char *sprintsigmask_n(const char *, const void *, unsigned int);
|
||||
#define tprintsigmask_addr(prefix, mask) \
|
||||
|
@ -8,6 +8,6 @@ arch_sigreturn(struct tcb *tcp)
|
||||
addr += offsetof(struct sigcontext, sc_mask);
|
||||
|
||||
tprints("{mask=");
|
||||
print_sigset_addr_len(tcp, addr, NSIG_BYTES);
|
||||
print_sigset_addr(tcp, addr);
|
||||
tprints("}");
|
||||
}
|
||||
|
@ -14,6 +14,6 @@ arch_sigreturn(struct tcb *tcp)
|
||||
(*arm_sp_ptr +
|
||||
OFFSETOF_STRUCT_UCONTEXT_UC_SIGMASK);
|
||||
tprints("{mask=");
|
||||
print_sigset_addr_len(tcp, addr, NSIG_BYTES);
|
||||
print_sigset_addr(tcp, addr);
|
||||
tprints("}");
|
||||
}
|
||||
|
@ -11,6 +11,6 @@ arch_sigreturn(struct tcb *tcp)
|
||||
regs[PT_USP] + offsetof(struct sigcontext, oldmask);
|
||||
|
||||
tprints("{mask=");
|
||||
print_sigset_addr_len(tcp, addr, NSIG_BYTES);
|
||||
print_sigset_addr(tcp, addr);
|
||||
tprints("}");
|
||||
}
|
||||
|
@ -7,6 +7,6 @@ arch_sigreturn(struct tcb *tcp)
|
||||
OFFSETOF_STRUCT_SIGFRAME_SC +
|
||||
offsetof(struct sigcontext, sc_mask);
|
||||
tprints("{mask=");
|
||||
print_sigset_addr_len(tcp, addr, NSIG_BYTES);
|
||||
print_sigset_addr(tcp, addr);
|
||||
tprints("}");
|
||||
}
|
||||
|
@ -11,6 +11,6 @@ arch_sigreturn(struct tcb *tcp)
|
||||
addr += offsetof(struct sigcontext, oldmask);
|
||||
|
||||
tprints("{mask=");
|
||||
print_sigset_addr_len(tcp, addr, NSIG_BYTES);
|
||||
print_sigset_addr(tcp, addr);
|
||||
tprints("}");
|
||||
}
|
||||
|
@ -21,6 +21,6 @@ arch_sigreturn(struct tcb *tcp)
|
||||
#endif
|
||||
|
||||
tprints("{mask=");
|
||||
print_sigset_addr_len(tcp, addr, NSIG_BYTES);
|
||||
print_sigset_addr(tcp, addr);
|
||||
tprints("}");
|
||||
}
|
||||
|
@ -7,6 +7,6 @@ arch_sigreturn(struct tcb *tcp)
|
||||
offsetof(struct ucontext, uc_sigmask);
|
||||
|
||||
tprints("{mask=");
|
||||
print_sigset_addr_len(tcp, addr, NSIG_BYTES);
|
||||
print_sigset_addr(tcp, addr);
|
||||
tprints("}");
|
||||
}
|
||||
|
@ -27,6 +27,6 @@ arch_sigreturn(struct tcb *tcp)
|
||||
#endif
|
||||
const kernel_ulong_t addr = (kernel_ulong_t) *x86_64_rsp_ptr + offset;
|
||||
tprints("{mask=");
|
||||
print_sigset_addr_len(tcp, addr, NSIG_BYTES);
|
||||
print_sigset_addr(tcp, addr);
|
||||
tprints("}");
|
||||
}
|
||||
|
7
signal.c
7
signal.c
@ -6,6 +6,7 @@
|
||||
* Copyright (c) 1999 IBM Deutschland Entwicklung GmbH, IBM Corporation
|
||||
* Linux for s390 port by D.J. Barrow
|
||||
* <barrow_dj@mail.yahoo.com,djbarrow@de.ibm.com>
|
||||
* Copyright (C) 2001-2017 The strace developers.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
@ -260,6 +261,12 @@ print_sigset_addr_len(struct tcb *const tcp, const kernel_ulong_t addr,
|
||||
print_sigset_addr_len_limit(tcp, addr, len, current_wordsize);
|
||||
}
|
||||
|
||||
void
|
||||
print_sigset_addr(struct tcb *const tcp, const kernel_ulong_t addr)
|
||||
{
|
||||
print_sigset_addr_len_limit(tcp, addr, NSIG_BYTES, NSIG_BYTES);
|
||||
}
|
||||
|
||||
SYS_FUNC(sigsetmask)
|
||||
{
|
||||
if (entering(tcp)) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user