From: Dmitry V. Levin Date: Tue, 12 Jan 2016 00:03:41 +0000 (+0000) Subject: tests: fix TEST_SYSCALL_{NR,STR} and STRUCT_STAT_STR macros for musl X-Git-Tag: v4.12~655 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=7bbf8b54cd7dacbdeb787a358c8ac8fed6d6f41b;p=strace tests: fix TEST_SYSCALL_{NR,STR} and STRUCT_STAT_STR macros for musl The contents of TEST_SYSCALL_NAME and STRUCT_STAT macros was subject to macro expansion when used in definitions of TEST_SYSCALL_NR, TEST_SYSCALL_STR, and STRUCT_STAT_STR macros. As some libcs, e.g. musl libc, define lfs64 names as macros (stat64 as stat, lstat64 as lstat, etc.), this might result to incorrect expansion of TEST_SYSCALL_NR, TEST_SYSCALL_STR, and STRUCT_STAT_STR macros. To avoid this problem, define these macros directly and remove TEST_SYSCALL_NAME macro. * tests/_newselect.c (TEST_SYSCALL_NAME): Remove. (TEST_SYSCALL_NR, TEST_SYSCALL_STR): New macros. * tests/fcntl.c: Likewise. * tests/fcntl64.c: Likewise. * tests/fstat.c: Likewise. * tests/fstatat64.c: Likewise. * tests/lstat.c: Likewise. * tests/newfstatat.c: Likewise. * tests/select.c: Likewise. * tests/stat.c: Likewise. * tests/fstat64.c (TEST_SYSCALL_NAME): Remove. (TEST_SYSCALL_NR, TEST_SYSCALL_STR, STRUCT_STAT_STR): New macros. * tests/lstat64.c: Likewise. * tests/stat64.c: Likewise. * tests/fstatx.c (TEST_SYSCALL_NR, nrify, nrify_): Remove. * tests/lstatx.c: Likewise. * tests/struct_flock.c (TEST_SYSCALL_NR, TEST_SYSCALL_STR, nrify, nrify_, stringify, stringify_): Remove. * tests/xselect.c: Likewise. * tests/xstatx.c: Check TEST_SYSCALL_STR instead of TEST_SYSCALL_NAME. (STRUCT_STAT_STR, TEST_SYSCALL_STR, stringify, stringify_): Remove. [!STRUCT_STAT] (STRUCT_STAT_STR): New macro. --- diff --git a/tests/_newselect.c b/tests/_newselect.c index 6a14fbb8..be1672e7 100644 --- a/tests/_newselect.c +++ b/tests/_newselect.c @@ -30,7 +30,8 @@ #ifdef __NR__newselect -# define TEST_SYSCALL_NAME _newselect +# define TEST_SYSCALL_NR __NR__newselect +# define TEST_SYSCALL_STR "_newselect" # include "xselect.c" #else diff --git a/tests/fcntl.c b/tests/fcntl.c index a55703c5..dfad530a 100644 --- a/tests/fcntl.c +++ b/tests/fcntl.c @@ -30,7 +30,8 @@ #ifdef __NR_fcntl -# define TEST_SYSCALL_NAME fcntl +# define TEST_SYSCALL_NR __NR_fcntl +# define TEST_SYSCALL_STR "fcntl" # include "struct_flock.c" # define TEST_FLOCK64_EINVAL(cmd) test_flock64_einval(cmd, #cmd) diff --git a/tests/fcntl64.c b/tests/fcntl64.c index 960c4dca..726576e6 100644 --- a/tests/fcntl64.c +++ b/tests/fcntl64.c @@ -30,7 +30,8 @@ #ifdef __NR_fcntl64 -# define TEST_SYSCALL_NAME fcntl64 +# define TEST_SYSCALL_NR __NR_fcntl64 +# define TEST_SYSCALL_STR "fcntl64" # include "struct_flock.c" # define TEST_FLOCK64_EINVAL(cmd) test_flock64_einval(cmd, #cmd) diff --git a/tests/fstat.c b/tests/fstat.c index 89c38c01..0206c9fd 100644 --- a/tests/fstat.c +++ b/tests/fstat.c @@ -30,7 +30,8 @@ #ifdef __NR_fstat -# define TEST_SYSCALL_NAME fstat +# define TEST_SYSCALL_NR __NR_fstat +# define TEST_SYSCALL_STR "fstat" # define SAMPLE_SIZE ((kernel_ulong_t) 43147718418) # include "fstatx.c" diff --git a/tests/fstat64.c b/tests/fstat64.c index c09f5243..59c94a2c 100644 --- a/tests/fstat64.c +++ b/tests/fstat64.c @@ -30,8 +30,10 @@ #ifdef __NR_fstat64 -# define TEST_SYSCALL_NAME fstat64 +# define TEST_SYSCALL_NR __NR_fstat64 +# define TEST_SYSCALL_STR "fstat64" # define STRUCT_STAT struct stat64 +# define STRUCT_STAT_STR "struct stat64" # define SAMPLE_SIZE ((libc_off_t) 43147718418) # include "fstatx.c" diff --git a/tests/fstatat64.c b/tests/fstatat64.c index 286fd7c5..1bf95c10 100644 --- a/tests/fstatat64.c +++ b/tests/fstatat64.c @@ -30,7 +30,8 @@ #ifdef __NR_fstatat64 -# define TEST_SYSCALL_NAME fstatat64 +# define TEST_SYSCALL_NR __NR_fstatat64 +# define TEST_SYSCALL_STR "fstatat64" # include "fstatat.c" #else diff --git a/tests/fstatx.c b/tests/fstatx.c index ef17a792..890e30d4 100644 --- a/tests/fstatx.c +++ b/tests/fstatx.c @@ -32,10 +32,6 @@ #define PRINT_SYSCALL_FOOTER \ puts(") = 0") -#define TEST_SYSCALL_NR nrify(TEST_SYSCALL_NAME) -#define nrify(arg) nrify_(arg) -#define nrify_(arg) __NR_ ## arg - #define USE_ASM_STAT #include "xstatx.c" diff --git a/tests/lstat.c b/tests/lstat.c index aa1d9fe3..663b638a 100644 --- a/tests/lstat.c +++ b/tests/lstat.c @@ -30,7 +30,8 @@ #ifdef __NR_lstat -# define TEST_SYSCALL_NAME lstat +# define TEST_SYSCALL_NR __NR_lstat +# define TEST_SYSCALL_STR "lstat" # define SAMPLE_SIZE ((kernel_ulong_t) 43147718418) # include "lstatx.c" diff --git a/tests/lstat64.c b/tests/lstat64.c index dccd90f1..4a1858bf 100644 --- a/tests/lstat64.c +++ b/tests/lstat64.c @@ -30,8 +30,10 @@ #ifdef __NR_lstat64 -# define TEST_SYSCALL_NAME lstat64 +# define TEST_SYSCALL_NR __NR_lstat64 +# define TEST_SYSCALL_STR "lstat64" # define STRUCT_STAT struct stat64 +# define STRUCT_STAT_STR "struct stat64" # define SAMPLE_SIZE ((libc_off_t) 43147718418) # include "lstatx.c" diff --git a/tests/lstatx.c b/tests/lstatx.c index 7166bb76..2bd4e9f5 100644 --- a/tests/lstatx.c +++ b/tests/lstatx.c @@ -32,10 +32,6 @@ #define PRINT_SYSCALL_FOOTER \ puts(") = 0") -#define TEST_SYSCALL_NR nrify(TEST_SYSCALL_NAME) -#define nrify(arg) nrify_(arg) -#define nrify_(arg) __NR_ ## arg - #define USE_ASM_STAT #include "xstatx.c" diff --git a/tests/newfstatat.c b/tests/newfstatat.c index d0bb590a..6fb34db1 100644 --- a/tests/newfstatat.c +++ b/tests/newfstatat.c @@ -30,7 +30,8 @@ #ifdef __NR_newfstatat -# define TEST_SYSCALL_NAME newfstatat +# define TEST_SYSCALL_NR __NR_newfstatat +# define TEST_SYSCALL_STR "newfstatat" # include "fstatat.c" #else diff --git a/tests/select.c b/tests/select.c index bd8a60b6..fa551a68 100644 --- a/tests/select.c +++ b/tests/select.c @@ -30,7 +30,8 @@ #if defined __NR_select && !defined __NR__newselect -# define TEST_SYSCALL_NAME select +# define TEST_SYSCALL_NR __NR_select +# define TEST_SYSCALL_STR "select" # include "xselect.c" #else diff --git a/tests/stat.c b/tests/stat.c index 04c1ded0..f64ff302 100644 --- a/tests/stat.c +++ b/tests/stat.c @@ -30,7 +30,8 @@ #ifdef __NR_stat -# define TEST_SYSCALL_NAME stat +# define TEST_SYSCALL_NR __NR_stat +# define TEST_SYSCALL_STR "stat" # define SAMPLE_SIZE ((kernel_ulong_t) 43147718418) # include "lstatx.c" diff --git a/tests/stat64.c b/tests/stat64.c index dc90184c..c1641895 100644 --- a/tests/stat64.c +++ b/tests/stat64.c @@ -30,8 +30,10 @@ #ifdef __NR_stat64 -# define TEST_SYSCALL_NAME stat64 +# define TEST_SYSCALL_NR __NR_stat64 +# define TEST_SYSCALL_STR "stat64" # define STRUCT_STAT struct stat64 +# define STRUCT_STAT_STR "struct stat64" # define SAMPLE_SIZE ((libc_off_t) 43147718418) # include "lstatx.c" diff --git a/tests/struct_flock.c b/tests/struct_flock.c index e514c99f..f942909e 100644 --- a/tests/struct_flock.c +++ b/tests/struct_flock.c @@ -35,14 +35,6 @@ #define FILE_LEN 4096 #define EINVAL_STR "-1 EINVAL (Invalid argument)" -# define TEST_SYSCALL_STR stringify(TEST_SYSCALL_NAME) -# define stringify(arg) stringify_(arg) -# define stringify_(arg) #arg - -#define TEST_SYSCALL_NR nrify(TEST_SYSCALL_NAME) -#define nrify(arg) nrify_(arg) -#define nrify_(arg) __NR_ ## arg - #define TEST_FLOCK_EINVAL(cmd) test_flock_einval(cmd, #cmd) #ifdef HAVE_TYPEOF diff --git a/tests/xselect.c b/tests/xselect.c index 5afd7848..08e29e1f 100644 --- a/tests/xselect.c +++ b/tests/xselect.c @@ -34,14 +34,6 @@ #include #include -#define TEST_SYSCALL_NR nrify(TEST_SYSCALL_NAME) -#define nrify(arg) nrify_(arg) -#define nrify_(arg) __NR_ ## arg - -#define TEST_SYSCALL_STR stringify(TEST_SYSCALL_NAME) -#define stringify(arg) stringify_(arg) -#define stringify_(arg) #arg - static fd_set set[0x1000000 / sizeof(fd_set)]; int main(void) diff --git a/tests/xstatx.c b/tests/xstatx.c index 918ea0e1..8694f955 100644 --- a/tests/xstatx.c +++ b/tests/xstatx.c @@ -27,8 +27,8 @@ #if defined HAVE_FTRUNCATE && defined HAVE_FUTIMENS -# ifndef TEST_SYSCALL_NAME -# error TEST_SYSCALL_NAME must be defined +# ifndef TEST_SYSCALL_STR +# error TEST_SYSCALL_STR must be defined # endif # ifndef TEST_SYSCALL_INVOKE # error TEST_SYSCALL_INVOKE must be defined @@ -133,6 +133,7 @@ typedef off_t libc_off_t; # ifndef STRUCT_STAT # define STRUCT_STAT struct stat +# define STRUCT_STAT_STR "struct stat" # endif # ifndef SAMPLE_SIZE # define SAMPLE_SIZE 43147718418 @@ -230,11 +231,6 @@ create_sample(const char *fname, const libc_off_t size) return 0; } -# define stringify_(arg) #arg -# define stringify(arg) stringify_(arg) -# define TEST_SYSCALL_STR stringify(TEST_SYSCALL_NAME) -# define STRUCT_STAT_STR stringify(STRUCT_STAT) - int main(void) {