lookup_dcookie.c \
loop.c \
lseek.c \
+ macros.h \
mem.c \
membarrier.c \
memfd_create.c \
#include <sys/time.h>
#include "kernel_types.h"
-#include "mpers_type.h"
#include "gcc_compat.h"
+#include "macros.h"
+#include "mpers_type.h"
#include "sysent.h"
#ifndef HAVE_STRERROR
(offsetof(type, member) + sizeof(((type *)NULL)->member))
#endif
-#define ARRAY_SIZE(a) (sizeof(a) / sizeof((a)[0]) + MUST_BE_ARRAY(a))
-
/* macros */
#ifndef MAX
# define MAX(a, b) (((a) > (b)) ? (a) : (b))
--- /dev/null
+/*
+ * Copyright (c) 2001-2017 The strace developers.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef STRACE_MACROS_H
+#define STRACE_MACROS_H
+
+#include "gcc_compat.h"
+
+#define ARRAY_SIZE(a_) (sizeof(a_) / sizeof((a_)[0]) + MUST_BE_ARRAY(a_))
+
+#endif /* !STRACE_MACROS_H */
" | 00000 %-49s %-16s |\n",
w0_c, LENGTH_OF(w0_c),
w1_c, LENGTH_OF(w1_c),
- ARRAY_SIZE(w0_iov_),
+ (unsigned int) ARRAY_SIZE(w0_iov_),
LENGTH_OF(w0_c) + LENGTH_OF(w1_c),
- w2_c, LENGTH_OF(w2_c), ARRAY_SIZE(w1_iov_),
+ w2_c, LENGTH_OF(w2_c), (unsigned int) ARRAY_SIZE(w1_iov_),
LENGTH_OF(w2_c),
n_w_mmh, r,
- ARRAY_SIZE(w0_iov_), LENGTH_OF(w0_c), w0_d, w0_c,
+ (unsigned int) ARRAY_SIZE(w0_iov_),
+ LENGTH_OF(w0_c), w0_d, w0_c,
LENGTH_OF(w1_c), w1_d, w1_c,
- ARRAY_SIZE(w1_iov_), LENGTH_OF(w2_c), w2_d, w2_c);
+ (unsigned int) ARRAY_SIZE(w1_iov_),
+ LENGTH_OF(w2_c), w2_d, w2_c);
const unsigned int w_len =
LENGTH_OF(w0_c) + LENGTH_OF(w1_c) + LENGTH_OF(w2_c);
" = %u buffers in vector 1\n"
" * %u bytes in buffer 0\n"
" | 00000 %-49s %-16s |\n",
- r0_c, r_len, ARRAY_SIZE(r0_iov_), LENGTH_OF(r0_c),
- r1_c, r_len, r_len, ARRAY_SIZE(r1_iov_), LENGTH_OF(r1_c),
+ r0_c, r_len, (unsigned int) ARRAY_SIZE(r0_iov_),
+ LENGTH_OF(r0_c), r1_c, r_len, r_len,
+ (unsigned int) ARRAY_SIZE(r1_iov_), LENGTH_OF(r1_c),
n_r_mmh, r,
- ARRAY_SIZE(r0_iov_), LENGTH_OF(r0_c), r0_d, r0_c,
- ARRAY_SIZE(r1_iov_), LENGTH_OF(r1_c), r1_d, r1_c);
+ (unsigned int) ARRAY_SIZE(r0_iov_), LENGTH_OF(r0_c),
+ r0_d, r0_c,
+ (unsigned int) ARRAY_SIZE(r1_iov_), LENGTH_OF(r1_c),
+ r1_d, r1_c);
tprintf("+++ exited with 0 +++\n");
return 0;
tprintf("poll(");
print_pollfd_array_entering(tail_fds0, ARRAY_SIZE(pfds0),
ARRAY_SIZE(pfds0), abbrev);
- tprintf(", %u, %d) = %d (", ARRAY_SIZE(pfds0), timeout, rc);
+ tprintf(", %u, %d) = %d (",
+ (unsigned int) ARRAY_SIZE(pfds0), timeout, rc);
print_pollfd_array_exiting(tail_fds0, ARRAY_SIZE(pfds0), abbrev);
tprintf(")\n");
tprintf("poll(");
print_pollfd_array_entering(tail_fds0, ARRAY_SIZE(pfds0),
ARRAY_SIZE(pfds0), abbrev);
- tprintf(", %u, %d) = %d (", ARRAY_SIZE(pfds0), timeout, rc);
+ tprintf(", %u, %d) = %d (",
+ (unsigned int) ARRAY_SIZE(pfds0), timeout, rc);
print_pollfd_array_exiting(tail_fds0, ARRAY_SIZE(pfds0), abbrev);
tprintf(")\n");
tprintf("poll(");
print_pollfd_array_entering(tail_fds0, ARRAY_SIZE(pfds0),
ARRAY_SIZE(pfds0), abbrev);
- tprintf(", %u, %d) = %d (", ARRAY_SIZE(pfds0), timeout, rc);
+ tprintf(", %u, %d) = %d (",
+ (unsigned int) ARRAY_SIZE(pfds0), timeout, rc);
print_pollfd_array_exiting(tail_fds0, ARRAY_SIZE(pfds0), abbrev);
tprintf(")\n");
tprintf("poll(");
print_pollfd_array_entering(tail_fds1, ARRAY_SIZE(pfds1),
ARRAY_SIZE(pfds1), abbrev);
- tprintf(", %u, %d) = %d (Timeout)\n", ARRAY_SIZE(pfds1), timeout, rc);
+ tprintf(", %u, %d) = %d (Timeout)\n",
+ (unsigned int) ARRAY_SIZE(pfds1), timeout, rc);
const void *const efault = tail_fds0 + ARRAY_SIZE(pfds0);
rc = syscall(__NR_poll, efault, 1, 0);
" * %u bytes in buffer 2\n"
" | 00000 %-49s %-16s |\n",
w0_c, LENGTH_OF(w0_c), w1_c, LENGTH_OF(w1_c),
- w2_c, LENGTH_OF(w2_c), ARRAY_SIZE(w_iov_), w_len,
+ w2_c, LENGTH_OF(w2_c), (unsigned int) ARRAY_SIZE(w_iov_), w_len,
LENGTH_OF(w0_c), w0_d, w0_c,
LENGTH_OF(w1_c), w1_d, w1_c, LENGTH_OF(w2_c), w2_d, w2_c);
tprintf("preadv(0, [{iov_base=\"%s\", iov_len=%u}], %u, 0) = %u\n"
" * %u bytes in buffer 0\n"
" | 00000 %-49s %-16s |\n",
- r0_c, r_len, ARRAY_SIZE(r0_iov_), r_len, r_len, r0_d, r0_c);
+ r0_c, r_len, (unsigned int) ARRAY_SIZE(r0_iov_),
+ r_len, r_len, r0_d, r0_c);
void *r1 = tail_alloc(r_len);
void *r2 = tail_alloc(w_len);
", {iov_base=\"\", iov_len=%u}], %u, %u) = %u\n"
" * %u bytes in buffer 0\n"
" | 00000 %-49s %-16s |\n",
- r1_c, r_len, w_len, ARRAY_SIZE(r1_iov_),
+ r1_c, r_len, w_len, (unsigned int) ARRAY_SIZE(r1_iov_),
r_len, w_len - r_len,
w_len - r_len, r1_d, r1_c);
close(0);
perror_msg_and_fail("preadv: expected %u, returned %ld",
r_len, rc);
printf("preadv(%d, [{iov_base=\"%s\", iov_len=%u}], %u, 0) = %u\n",
- fd, r0_c, r_len, ARRAY_SIZE(r0_iov_), r_len);
+ fd, r0_c, r_len, (unsigned int) ARRAY_SIZE(r0_iov_), r_len);
void *r1 = tail_alloc(r_len);
void *r2 = tail_alloc(LENGTH_OF(w));
(int) LENGTH_OF(w) - r_len, rc);
printf("preadv(%d, [{iov_base=\"%s\", iov_len=%u}"
", {iov_base=\"\", iov_len=%u}], %u, %u) = %u\n",
- fd, r1_c, r_len, LENGTH_OF(w), ARRAY_SIZE(r1_iov_),
- r_len, LENGTH_OF(w) - r_len);
+ fd, r1_c, r_len, LENGTH_OF(w),
+ (unsigned int) ARRAY_SIZE(r1_iov_),
+ r_len, LENGTH_OF(w) - r_len);
puts("+++ exited with 0 +++");
return 0;
" * %u bytes in buffer 2\n"
" | 00000 %-49s %-16s |\n",
w0_c, LENGTH_OF(w0_c), w1_c, LENGTH_OF(w1_c),
- w2_c, LENGTH_OF(w2_c), ARRAY_SIZE(w_iov_), w_len,
+ w2_c, LENGTH_OF(w2_c), (unsigned int) ARRAY_SIZE(w_iov_), w_len,
LENGTH_OF(w0_c), w0_d, w0_c,
LENGTH_OF(w1_c), w1_d, w1_c, LENGTH_OF(w2_c), w2_d, w2_c);
tprintf("preadv2(0, [{iov_base=\"%s\", iov_len=%u}], %u, 0, 0) = %u\n"
" * %u bytes in buffer 0\n"
" | 00000 %-49s %-16s |\n",
- r0_c, r_len, ARRAY_SIZE(r0_iov_), r_len, r_len, r0_d, r0_c);
+ r0_c, r_len, (unsigned int) ARRAY_SIZE(r0_iov_),
+ r_len, r_len, r0_d, r0_c);
void *r1 = tail_alloc(r_len);
void *r2 = tail_alloc(w_len);
", {iov_base=\"\", iov_len=%u}], %u, %u, 0) = %u\n"
" * %u bytes in buffer 0\n"
" | 00000 %-49s %-16s |\n",
- r1_c, r_len, w_len, ARRAY_SIZE(r1_iov_),
+ r1_c, r_len, w_len, (unsigned int) ARRAY_SIZE(r1_iov_),
r_len, w_len - r_len,
w_len - r_len, r1_d, r1_c);
close(0);
" * %u bytes in buffer 2\n"
" | 00000 %-49s %-16s |\n",
fds[1], w0_c, LENGTH_OF(w0_c), w1_c, LENGTH_OF(w1_c),
- w2_c, LENGTH_OF(w2_c), ARRAY_SIZE(w_iov_), w_len,
+ w2_c, LENGTH_OF(w2_c), (unsigned int) ARRAY_SIZE(w_iov_), w_len,
LENGTH_OF(w0_c), w0_d, w0_c,
LENGTH_OF(w1_c), w1_d, w1_c, LENGTH_OF(w2_c), w2_d, w2_c);
tprintf("readv(%d, [{iov_base=\"%s\", iov_len=%u}], %u) = %u\n"
" * %u bytes in buffer 0\n"
" | 00000 %-49s %-16s |\n",
- fds[0],
- r0_c, r_len, ARRAY_SIZE(r0_iov_), r_len, r_len, r0_d, r0_c);
+ fds[0], r0_c, r_len, (unsigned int) ARRAY_SIZE(r0_iov_),
+ r_len, r_len, r0_d, r0_c);
void *r1 = tail_alloc(r_len);
void *r2 = tail_alloc(w_len);
", {iov_base=\"\", iov_len=%u}], %u) = %u\n"
" * %u bytes in buffer 0\n"
" | 00000 %-49s %-16s |\n",
- fds[0], r1_c, r_len, w_len, ARRAY_SIZE(r1_iov_), w_len - r_len,
- w_len - r_len, r1_d, r1_c);
+ fds[0], r1_c, r_len, w_len, (unsigned int) ARRAY_SIZE(r1_iov_),
+ w_len - r_len, w_len - r_len, r1_d, r1_c);
close(fds[0]);
tprintf("+++ exited with 0 +++\n");
w0_c, LENGTH_OF(w0_c),
w1_c, LENGTH_OF(w1_c),
w2_c, LENGTH_OF(w2_c),
- ARRAY_SIZE(w_iov_), w_len,
+ (unsigned int) ARRAY_SIZE(w_iov_), w_len,
LENGTH_OF(w0_c), w0_d, w0_c,
LENGTH_OF(w1_c), w1_d, w1_c,
LENGTH_OF(w2_c), w2_d, w2_c);
", msg_controllen=0, msg_flags=0}, 0) = %u\n"
" * %u bytes in buffer 0\n"
" | 00000 %-49s %-16s |\n",
- r0_c, r_len, ARRAY_SIZE(r0_iov_), r_len, r_len, r0_d, r0_c);
+ r0_c, r_len, (unsigned int) ARRAY_SIZE(r0_iov_),
+ r_len, r_len, r0_d, r0_c);
void *r1 = tail_alloc(r_len);
void *r2 = tail_alloc(w_len);
", msg_iovlen=%u, msg_controllen=0, msg_flags=0}, 0) = %u\n"
" * %u bytes in buffer 0\n"
" | 00000 %-49s %-16s |\n",
- r1_c, r_len, w_len, ARRAY_SIZE(r1_iov_), w_len - r_len,
- w_len - r_len, r1_d, r1_c);
+ r1_c, r_len, w_len, (unsigned int) ARRAY_SIZE(r1_iov_),
+ w_len - r_len, w_len - r_len, r1_d, r1_c);
close(0);
tprintf("+++ exited with 0 +++\n");
# include <sys/types.h>
# include "kernel_types.h"
# include "gcc_compat.h"
+# include "macros.h"
/*
* The printf-like function to use in header files
? F8ILL_KULONG_MASK | uptr : (kernel_ulong_t) uptr;
}
-# define ARRAY_SIZE(arg) ((unsigned int) (sizeof(arg) / sizeof((arg)[0])))
# define LENGTH_OF(arg) ((unsigned int) sizeof(arg) - 1)
/* Zero-extend a signed integer type to unsigned long long. */
" * %u bytes in buffer 2\n"
" | 00000 %-49s %-16s |\n",
w0_c, LENGTH_OF(w0_c), w1_c, LENGTH_OF(w1_c),
- w2_c, LENGTH_OF(w2_c), ARRAY_SIZE(iov_),
+ w2_c, LENGTH_OF(w2_c), (unsigned int) ARRAY_SIZE(iov_),
"SPLICE_F_NONBLOCK", len,
LENGTH_OF(w0_c), w0_d, w0_c,
LENGTH_OF(w1_c), w1_d, w1_c, LENGTH_OF(w2_c), w2_d, w2_c);