]> granicus.if.org Git - strace/commitdiff
Introduce print_sigset_addr function
authorDmitry V. Levin <ldv@altlinux.org>
Thu, 9 Mar 2017 22:51:46 +0000 (22:51 +0000)
committerDmitry V. Levin <ldv@altlinux.org>
Thu, 9 Mar 2017 22:51:46 +0000 (22:51 +0000)
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.

defs.h
linux/alpha/arch_sigreturn.c
linux/arm/arch_sigreturn.c
linux/crisv10/arch_sigreturn.c
linux/ia64/arch_sigreturn.c
linux/microblaze/arch_sigreturn.c
linux/mips/arch_sigreturn.c
linux/tile/arch_sigreturn.c
linux/x86_64/arch_sigreturn.c
signal.c

diff --git a/defs.h b/defs.h
index b333a2218b2da5d59196202b400e11f65d3904b4..629efcd5eb23923bf57ef947aeacba46770d97f4 100644 (file)
--- a/defs.h
+++ b/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) \
index 3317a954489ee3a73eba189f499c1299e15261ae..d5f19c50d44023a3e940ff73746faecb7fd548f7 100644 (file)
@@ -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("}");
 }
index 378ba67f929d97aae9de98d1cb9b82191b8bbd58..b60dad80df542fad9dc3a0bb427f4bd9c5d78838 100644 (file)
@@ -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("}");
 }
index b449d41eca73737aeefa6d89d97cd442cd534e93..0458c8e823c8b080401d36c43fd2968cc6ad526c 100644 (file)
@@ -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("}");
 }
index 0c0034f9c07b271d3a8334978277052c2f2813ee..32f9bc588e993262d0383c5e562d29ac56c769a8 100644 (file)
@@ -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("}");
 }
index 6eb7cd8e881f7c41bac4c718209d28e16d56e2fa..6e4343a80118a64c4bc77a2331f7943076df786c 100644 (file)
@@ -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("}");
 }
index 72f7619b4c569c826a0ede36d741a80fbcb27546..8ce4609652793e1c4bcb24187c58fd7467fed382 100644 (file)
@@ -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("}");
 }
index 88e946f01735bf63fef5d8a1d8d98ff906d2c338..1c687db2c75ecd75688dac0fe0c9077617a83935 100644 (file)
@@ -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("}");
 }
index 060b93a736ad316d369af0aa74bce1c6a0330978..16cadc2ca1f17e0b8e03302b3728a66576ff1b6f 100644 (file)
@@ -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("}");
 }
index 25329d3ee6821d015984c4f509438c9b07f17220..ef6dbc2eeacb3a0666da66fbf4847747486050f8 100644 (file)
--- a/signal.c
+++ b/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)) {