From: Eugene Syromyatnikov Date: Tue, 16 Jul 2019 00:00:59 +0000 (+0200) Subject: Rewrite printnum_{slong,ulong,ptr,kptr} using dispatch_{word,klong}size X-Git-Tag: v5.3~28 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=67267b400f8a84475bb9ea24f559f900b3ec6a27;p=strace Rewrite printnum_{slong,ulong,ptr,kptr} using dispatch_{word,klong}size * 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. --- diff --git a/defs.h b/defs.h index d3241230..b8feee6b 100644 --- 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 ec86cdb9..34561c47 100644 --- 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.