Skip to content

Commit 6ee1c2e

Browse files
committed
cleaned printing
1 parent 13d180c commit 6ee1c2e

File tree

1 file changed

+10
-23
lines changed

1 file changed

+10
-23
lines changed

examples/strace-grate/strace.h

Lines changed: 10 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -25,13 +25,12 @@ extern syscall_handler_t syscall_handler_table[MAX_SYSCALLS];
2525
// macro for defining syscall handlers dynamically
2626
#define DEFINE_HANDLER(name, num, ...) \
2727
/* function defination for syscall handler */ \
28-
int name##_grate(uint64_t cageid, uint64_t arg1, uint64_t arg1cage, \
28+
int name##_grate(uint64_t cageid, uint64_t arg1, uint64_t arg1cage, \
2929
uint64_t arg2, uint64_t arg2cage, \
3030
uint64_t arg3, uint64_t arg3cage, \
3131
uint64_t arg4, uint64_t arg4cage, \
3232
uint64_t arg5, uint64_t arg5cage, \
3333
uint64_t arg6, uint64_t arg6cage) { \
34-
\
3534
int thiscage = getpid(); \
3635
int types[] = {__VA_ARGS__}; \
3736
int argsnum = sizeof(types) / sizeof(int); \
@@ -43,11 +42,11 @@ extern syscall_handler_t syscall_handler_table[MAX_SYSCALLS];
4342
int offset = 0; \
4443
\
4544
/* log buffer to print syscall with args and ret val */ \
46-
offset += snprintf(log_buffer + offset, 1024 - offset, "%s(", #name); \
45+
offset += snprintf(log_buffer + offset, sizeof(log_buffer) - offset, "%s(", #name); \
4746
\
4847
for (int i = 0; i < argsnum; i++) { \
4948
if (i > 0) \
50-
offset += snprintf(log_buffer + offset, 1024 - offset, ", "); \
49+
offset += snprintf(log_buffer + offset, sizeof(log_buffer) - offset, ", "); \
5150
\
5251
if (types[i] == ARG_STR && args[i] != 0) { \
5352
char *buf = malloc(256); \
@@ -56,28 +55,23 @@ extern syscall_handler_t syscall_handler_table[MAX_SYSCALLS];
5655
args[i], argcages[i], \
5756
(uint64_t)buf, thiscage, \
5857
256, 1); \
59-
offset += snprintf(log_buffer + offset, 1024 - offset, \
58+
offset += snprintf(log_buffer + offset, sizeof(log_buffer) - offset, \
6059
"\"%s\"", buf); \
6160
free(buf); \
6261
} else { \
63-
offset += snprintf(log_buffer + offset, 1024 - offset, \
62+
offset += snprintf(log_buffer + offset, sizeof(log_buffer) - offset, \
6463
"0x%lx", (unsigned long)args[i]); \
6564
} \
66-
} else if (types[i] == ARG_PTR || args[i] > 0xFFFFFF || args[i] == 0) { \
67-
offset += snprintf(log_buffer + offset, 1024 - offset, \
65+
} else if (types[i] == ARG_PTR) { \
66+
offset += snprintf(log_buffer + offset, sizeof(log_buffer) - offset, \
6867
"0x%lx", (unsigned long)args[i]); \
6968
} else { \
70-
offset += snprintf(log_buffer + offset, 1024 - offset, \
69+
offset += snprintf(log_buffer + offset, sizeof(log_buffer) - offset, \
7170
"%ld", (long)args[i]); \
7271
} \
7372
} \
74-
offset += snprintf(log_buffer + offset, 1024 - offset, ")"); \
7573
\
76-
int is_terminal = (num == 59 || num == 60 || num == 231); \
77-
if (is_terminal) { \
78-
fprintf(stderr, "%s\n", log_buffer); \
79-
fflush(stderr); \
80-
} \
74+
offset += snprintf(log_buffer + offset, sizeof(log_buffer) - offset, ")"); \
8175
\
8276
/* forward interposed syscall */ \
8377
int ret = make_threei_call(num, 0, \
@@ -86,18 +80,11 @@ extern syscall_handler_t syscall_handler_table[MAX_SYSCALLS];
8680
arg3, arg3cage, arg4, arg4cage, \
8781
arg5, arg5cage, arg6, arg6cage, 0); \
8882
\
89-
if (!is_terminal) { \
90-
fprintf(stderr, "%s = %d\n", log_buffer, ret); \
91-
} else { \
92-
fprintf(stderr, "%s [failed] = %d\n", log_buffer, ret); \
93-
} \
94-
\
95-
/* printing log buffer after return to ensure proper printing */ \
9683
fprintf(stderr, "%s = %d\n", log_buffer, ret); \
9784
return ret; \
9885
} \
9986
\
100-
/* constructor to store handler address in the table */ \
87+
/* constructor to store handler address in the table */ \
10188
__attribute__((constructor)) static void register_##name() { \
10289
syscall_handler_table[num] = &name##_grate; \
10390
}

0 commit comments

Comments
 (0)