#define DEF_PRINTNUM(name, type) \
bool \
-printnum_ ## name(struct tcb *tcp, const long addr, const char *fmt) \
+printnum_ ## name(struct tcb *const tcp, const kernel_ureg_t addr, \
+ const char *const fmt) \
{ \
type num; \
if (umove_or_printaddr(tcp, addr, &num)) \
#define DEF_PRINTPAIR(name, type) \
bool \
-printpair_ ## name(struct tcb *tcp, const long addr, const char *fmt) \
+printpair_ ## name(struct tcb *const tcp, const kernel_ureg_t addr, \
+ const char *const fmt) \
{ \
type pair[2]; \
if (umove_or_printaddr(tcp, addr, &pair)) \
#if SUPPORTED_PERSONALITIES > 1 && SIZEOF_LONG > 4
bool
-printnum_long_int(struct tcb *tcp, const long addr,
- const char *fmt_long, const char *fmt_int)
+printnum_long_int(struct tcb *const tcp, const kernel_ureg_t addr,
+ const char *const fmt_long, const char *const fmt_int)
{
if (current_wordsize > sizeof(int)) {
return printnum_int64(tcp, addr, fmt_long);
* If path length exceeds `n', append `...' to the output.
*/
void
-printpathn(struct tcb *tcp, long addr, unsigned int n)
+printpathn(struct tcb *const tcp, const kernel_ureg_t addr, unsigned int n)
{
char path[PATH_MAX + 1];
int nul_seen;
}
void
-printpath(struct tcb *tcp, long addr)
+printpath(struct tcb *const tcp, const kernel_ureg_t addr)
{
/* Size must correspond to char path[] size in printpathn */
printpathn(tcp, addr, PATH_MAX);
/*
* Print string specified by address `addr' and length `len'.
- * If `len' == -1, set QUOTE_0_TERMINATED bit in `user_style'.
* If `user_style' has QUOTE_0_TERMINATED bit set, treat the string
* as a NUL-terminated string.
* Pass `user_style' on to `string_quote'.
* Append `...' to the output if either the string length exceeds `max_strlen',
- * or `len' != -1 and the string length exceeds `len'.
+ * or QUOTE_0_TERMINATED bit is set and the string length exceeds `len'.
*/
void
-printstr_ex(struct tcb *const tcp, const kernel_ureg_t addr, const long len,
- const unsigned int user_style)
+printstr_ex(struct tcb *const tcp, const kernel_ureg_t addr,
+ const kernel_ureg_t len, const unsigned int user_style)
{
static char *str = NULL;
static char *outstr;
outstr = xmalloc(outstr_size);
}
+ /* Fetch one byte more because string_quote may look one byte ahead. */
size = max_strlen + 1;
- if (len == -1) {
- /*
- * Treat as a NUL-terminated string: fetch one byte more
- * because string_quote may look one byte ahead.
- */
- style |= QUOTE_0_TERMINATED;
+
+ if (size > len)
+ size = len;
+ if (style & QUOTE_0_TERMINATED)
rc = umovestr(tcp, addr, size, str);
- } else {
- if (size > (unsigned long) len)
- size = (unsigned long) len;
- if (style & QUOTE_0_TERMINATED)
- rc = umovestr(tcp, addr, size, str);
- else
- rc = umoven(tcp, addr, size, str);
- }
+ else
+ rc = umoven(tcp, addr, size, str);
+
if (rc < 0) {
printaddr(addr);
return;
ellipsis = string_quote(str, outstr, size, style)
&& len
&& ((style & QUOTE_0_TERMINATED)
- || (unsigned long) len > max_strlen);
+ || len > max_strlen);
tprints(outstr);
if (ellipsis)
}
void
-dumpiov_upto(struct tcb *tcp, int len, long addr, unsigned long data_size)
+dumpiov_upto(struct tcb *const tcp, const int len, const kernel_ureg_t addr,
+ unsigned long data_size)
{
#if SUPPORTED_PERSONALITIES > 1
union {
}
void
-dumpstr(struct tcb *tcp, long addr, int len)
+dumpstr(struct tcb *const tcp, const kernel_ureg_t addr, const int len)
{
static int strsize = -1;
static unsigned char *str;