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 6a14fbb..be1672e 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 a55703c..dfad530 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 960c4dc..726576e 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 89c38c0..0206c9f 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 c09f524..59c94a2 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 286fd7c..1bf95c1 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 ef17a79..890e30d 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 aa1d9fe..663b638 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 dccd90f..4a1858b 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 7166bb7..2bd4e9f 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 d0bb590..6fb34db 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 bd8a60b..fa551a6 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 04c1ded..f64ff30 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 dc90184..c164189 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 e514c99..f942909 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 5afd784..08e29e1 100644
--- a/tests/xselect.c
+++ b/tests/xselect.c
@@ -34,14 +34,6 @@
#include <unistd.h>
#include <sys/select.h>
-#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 918ea0e..8694f95 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 @@
# 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 @@
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)
{