]> granicus.if.org Git - strace/commitdiff
Rewrite printnum_{slong,ulong,ptr,kptr} using dispatch_{word,klong}size
authorEugene Syromyatnikov <evgsyr@gmail.com>
Tue, 16 Jul 2019 00:00:59 +0000 (02:00 +0200)
committerEugene Syromyatnikov <evgsyr@gmail.com>
Sun, 8 Sep 2019 23:12:34 +0000 (00:12 +0100)
* defs.h (printnum_long_int, printnum_addr_long_int, printnum_addr_klong_int):
Remove declaration.
(printnum_slong, printnum_ulong): Implement unconditionally using
dispatch_wordsize and opt_wordsize for the last argument.
(printnum_ptr): Implement unconditionally using dispatch_wordsize.
(printnum_kptr): Implement unconditionally using dispatch_klongsize.
* util.c (printnum_long_int, printnum_addr_long_int, printnum_addr_klong_int):
Remove.

defs.h
util.c

diff --git a/defs.h b/defs.h
index d3241230e0c5c75373086f3cca04ef24300928fd..b8feee6b21f51312388f7fece4ec3b0dfbc5935a 100644 (file)
--- a/defs.h
+++ b/defs.h
@@ -1272,101 +1272,34 @@ DECL_PRINTNUM_ADDR(int64);
 extern bool
 printnum_fd(struct tcb *, kernel_ulong_t addr);
 
-# ifndef current_wordsize
-extern bool
-printnum_long_int(struct tcb *, kernel_ulong_t addr,
-                 const char *fmt_long, const char *fmt_int)
-       ATTRIBUTE_FORMAT((printf, 3, 0))
-       ATTRIBUTE_FORMAT((printf, 4, 0));
-
-extern bool printnum_addr_long_int(struct tcb *, kernel_ulong_t addr);
-
 static inline bool
 printnum_slong(struct tcb *tcp, kernel_ulong_t addr)
 {
-       return printnum_long_int(tcp, addr, "%" PRId64, "%d");
+       return dispatch_wordsize(printnum_int64, printnum_int,
+                                tcp, addr, opt_wordsize("%" PRId64, "%d"));
 }
 
 static inline bool
 printnum_ulong(struct tcb *tcp, kernel_ulong_t addr)
 {
-       return printnum_long_int(tcp, addr, "%" PRIu64, "%u");
+       return dispatch_wordsize(printnum_int64, printnum_int,
+                                tcp, addr, opt_wordsize("%" PRIu64, "%u"));
 }
 
 static inline bool
 printnum_ptr(struct tcb *tcp, kernel_ulong_t addr)
 {
-       return printnum_addr_long_int(tcp, addr);
+       return dispatch_wordsize(printnum_addr_int64, printnum_addr_int,
+                                tcp, addr);
 }
 
-# elif current_wordsize > 4
-
-static inline bool
-printnum_slong(struct tcb *tcp, kernel_ulong_t addr)
-{
-       return printnum_int64(tcp, addr, "%" PRId64);
-}
-
-static inline bool
-printnum_ulong(struct tcb *tcp, kernel_ulong_t addr)
-{
-       return printnum_int64(tcp, addr, "%" PRIu64);
-}
-
-static inline bool
-printnum_ptr(struct tcb *tcp, kernel_ulong_t addr)
-{
-       return printnum_addr_int64(tcp, addr);
-}
-
-# else /* current_wordsize == 4 */
-
-static inline bool
-printnum_slong(struct tcb *tcp, kernel_ulong_t addr)
-{
-       return printnum_int(tcp, addr, "%d");
-}
-
-static inline bool
-printnum_ulong(struct tcb *tcp, kernel_ulong_t addr)
-{
-       return printnum_int(tcp, addr, "%u");
-}
-
-static inline bool
-printnum_ptr(struct tcb *tcp, kernel_ulong_t addr)
-{
-       return printnum_addr_int(tcp, addr);
-}
-
-# endif
-
-# ifndef current_klongsize
-extern bool printnum_addr_klong_int(struct tcb *, kernel_ulong_t addr);
-
-static inline bool
-printnum_kptr(struct tcb *tcp, kernel_ulong_t addr)
-{
-       return printnum_addr_klong_int(tcp, addr);
-}
-
-# elif current_klongsize > 4
-
-static inline bool
-printnum_kptr(struct tcb *tcp, kernel_ulong_t addr)
-{
-       return printnum_addr_int64(tcp, addr);
-}
-
-# else /* current_klongsize == 4 */
-
 static inline bool
 printnum_kptr(struct tcb *tcp, kernel_ulong_t addr)
 {
-       return printnum_addr_int(tcp, addr);
+       return dispatch_klongsize(printnum_addr_int64, printnum_addr_int,
+                                 tcp, addr);
 }
 
-# endif
 
 # define DECL_PRINTPAIR(name)                                          \
 extern bool                                                            \
diff --git a/util.c b/util.c
index ec86cdb98fdca4e72c0cdb57ead81b2a95f42c88..34561c47b3064304df65bd8252f80e8c3976f122 100644 (file)
--- a/util.c
+++ b/util.c
@@ -360,41 +360,6 @@ printnum_fd(struct tcb *const tcp, const kernel_ulong_t addr)
        return true;
 }
 
-#ifndef current_wordsize
-bool
-printnum_long_int(struct tcb *const tcp, const kernel_ulong_t addr,
-                 const char *const fmt_long, const char *const fmt_int)
-{
-       if (current_wordsize > sizeof(int)) {
-               return printnum_int64(tcp, addr, fmt_long);
-       } else {
-               return printnum_int(tcp, addr, fmt_int);
-       }
-}
-
-bool
-printnum_addr_long_int(struct tcb *tcp, const kernel_ulong_t addr)
-{
-       if (current_wordsize > sizeof(int)) {
-               return printnum_addr_int64(tcp, addr);
-       } else {
-               return printnum_addr_int(tcp, addr);
-       }
-}
-#endif /* !current_wordsize */
-
-#ifndef current_klongsize
-bool
-printnum_addr_klong_int(struct tcb *tcp, const kernel_ulong_t addr)
-{
-       if (current_klongsize > sizeof(int)) {
-               return printnum_addr_int64(tcp, addr);
-       } else {
-               return printnum_addr_int(tcp, addr);
-       }
-}
-#endif /* !current_klongsize */
-
 /**
  * Prints time to a (static internal) buffer and returns pointer to it.
  * Returns NULL if the provided time specification is not correct.