|
32 | 32 |
|
33 | 33 | #include "intercept_util.h" |
34 | 34 | #include "intercept.h" |
| 35 | +#include "libsyscall_intercept_hook_point.h" |
35 | 36 |
|
36 | 37 | #include <assert.h> |
37 | 38 | #include <inttypes.h> |
|
48 | 49 | #include <sched.h> |
49 | 50 | #include <linux/limits.h> |
50 | 51 |
|
51 | | -static long log_fd = -1; |
| 52 | +static int log_fd = -1; |
52 | 53 |
|
53 | 54 | void * |
54 | 55 | xmmap_anon(size_t size) |
55 | 56 | { |
56 | | - void *addr = (void *) syscall_no_intercept(SYS_mmap, |
| 57 | + long addr = syscall_no_intercept(SYS_mmap, |
57 | 58 | NULL, size, |
58 | 59 | PROT_READ | PROT_WRITE, |
59 | | - MAP_PRIVATE | MAP_ANON, -1, 0); |
| 60 | + MAP_PRIVATE | MAP_ANON, -1, (off_t)0); |
60 | 61 |
|
61 | | - if (addr == MAP_FAILED) |
62 | | - xabort("xmmap_anon"); |
| 62 | + xabort_on_syserror(addr, __func__); |
63 | 63 |
|
64 | | - return addr; |
| 64 | + return (void *) addr; |
65 | 65 | } |
66 | 66 |
|
67 | 67 | void * |
68 | 68 | xmremap(void *addr, size_t old, size_t new) |
69 | 69 | { |
70 | | - addr = (void *) syscall_no_intercept(SYS_mremap, addr, |
| 70 | + long new_addr = syscall_no_intercept(SYS_mremap, addr, |
71 | 71 | old, new, MREMAP_MAYMOVE); |
72 | 72 |
|
73 | | - if (addr == MAP_FAILED) |
74 | | - xabort("xmremap"); |
| 73 | + xabort_on_syserror(new_addr, __func__); |
75 | 74 |
|
76 | | - return addr; |
| 75 | + return (void *) new_addr; |
77 | 76 | } |
78 | 77 |
|
79 | 78 | void |
80 | 79 | xmunmap(void *addr, size_t len) |
81 | 80 | { |
82 | | - if (syscall_no_intercept(SYS_munmap, addr, len) != 0) |
83 | | - xabort("xmunmap"); |
| 81 | + long result = syscall_no_intercept(SYS_munmap, addr, len); |
| 82 | + |
| 83 | + xabort_on_syserror(result, __func__); |
84 | 84 | } |
85 | 85 |
|
86 | 86 | long |
87 | 87 | xlseek(long fd, unsigned long off, int whence) |
88 | 88 | { |
89 | 89 | long result = syscall_no_intercept(SYS_lseek, fd, off, whence); |
90 | 90 |
|
91 | | - if (result < 0) |
92 | | - xabort("xlseek"); |
| 91 | + xabort_on_syserror(result, __func__); |
93 | 92 |
|
94 | 93 | return result; |
95 | 94 | } |
96 | 95 |
|
97 | 96 | void |
98 | 97 | xread(long fd, void *buffer, size_t size) |
99 | 98 | { |
100 | | - if (syscall_no_intercept(SYS_read, fd, |
101 | | - (long)buffer, (long)size) != (long)size) |
102 | | - xabort("xread"); |
| 99 | + long result = syscall_no_intercept(SYS_read, fd, buffer, size); |
| 100 | + |
| 101 | + if (result != (long)size) |
| 102 | + xabort_errno(syscall_error_code(result), __func__); |
103 | 103 | } |
104 | 104 |
|
105 | 105 | /* |
@@ -130,10 +130,9 @@ intercept_setup_log(const char *path_base, const char *trunc) |
130 | 130 |
|
131 | 131 | intercept_log_close(); |
132 | 132 |
|
133 | | - log_fd = syscall_no_intercept(SYS_open, path, flags, 0700); |
| 133 | + log_fd = (int)syscall_no_intercept(SYS_open, path, flags, (mode_t)0700); |
134 | 134 |
|
135 | | - if (log_fd < 0) |
136 | | - xabort("setup_log"); |
| 135 | + xabort_on_syserror(log_fd, "opening log"); |
137 | 136 | } |
138 | 137 |
|
139 | 138 | /* |
@@ -1520,7 +1519,7 @@ intercept_log(const char *buffer, size_t len) |
1520 | 1519 | { |
1521 | 1520 | if (log_fd >= 0) |
1522 | 1521 | syscall_no_intercept(SYS_write, log_fd, |
1523 | | - (long)buffer, (long)len); |
| 1522 | + buffer, len); |
1524 | 1523 | } |
1525 | 1524 |
|
1526 | 1525 | /* |
|
0 commit comments