diff options
author | Eugene Syromyatnikov <evgsyr@gmail.com> | 2018-04-11 02:41:16 +0200 |
---|---|---|
committer | Dmitry V. Levin <ldv@altlinux.org> | 2018-05-08 13:42:45 +0000 |
commit | 034b10936c1bab5707a3eb8124358d175d37cdd4 (patch) | |
tree | 6d415db580682899bf3dd0dd8d476000ebda52da /tests/personality.c | |
parent | 5ece159986744a936569d34793996d349614214e (diff) | |
download | strace-034b10936c1bab5707a3eb8124358d175d37cdd4.tar.gz |
tests: add personality variants with different xlat verbosity levels
* tests/personality-Xabbrev.c: New file.
* tests/personality-Xraw.c: Likewise.
* tests/personality-Xverbose.c: Likewise.
* tests/pure_executables.list: Add personality-Xabbrev,
personality-Xraw, and personality-Xverbose.
* tests/.gitignore: Likewise.
* tests/personality.c: Add handling of XLAT_RAW and XLAT_VERBOSE flags.
* tests/personality.test: Add support for accepting test arguments.
* tests/gen_tests.in (personality-Xabbrev, personality-Xraw,
personality-Xverbose): New tests.
Diffstat (limited to 'tests/personality.c')
-rw-r--r-- | tests/personality.c | 75 |
1 files changed, 50 insertions, 25 deletions
diff --git a/tests/personality.c b/tests/personality.c index 7a279a144..fe4b5bb2c 100644 --- a/tests/personality.c +++ b/tests/personality.c @@ -28,51 +28,76 @@ #include <stdio.h> #include <sys/personality.h> +#if XLAT_RAW +# define linux_type_str "0" +# define good_type_str "0x6" +# define bad_type_str "0x1f" +# define good_flags_str "0x7000000" +# define bad_flags_str "0x10000" +# define good_bad_flags_str "0x7010000" +#elif XLAT_VERBOSE +# define linux_type_str "0 /\\* PER_LINUX \\*/" +# define good_type_str "0x6 /\\* PER_BSD \\*/" +# define bad_type_str "0x1f /\\* PER_\\?\\?\\? \\*/" +# define good_flags_str \ + "0x7000000 /\\* SHORT_INODE\\|WHOLE_SECONDS\\|STICKY_TIMEOUTS \\*/" +# define bad_flags_str "0x10000" +# define good_bad_flags_str \ + "0x7010000 /\\* SHORT_INODE\\|WHOLE_SECONDS\\|STICKY_TIMEOUTS" \ + "\\|0x10000 \\*/" +#else +# define linux_type_str "PER_LINUX" +# define good_type_str "PER_BSD" +# define bad_type_str "0x1f /\\* PER_\\?\\?\\? \\*/" +# define good_flags_str "SHORT_INODE\\|WHOLE_SECONDS\\|STICKY_TIMEOUTS" +# define bad_flags_str "0x10000" +# define good_bad_flags_str \ + "SHORT_INODE\\|WHOLE_SECONDS\\|STICKY_TIMEOUTS\\|0x10000" +#endif + int main(void) { const unsigned int good_type = PER_BSD; - const char *good_type_str = "PER_BSD"; const unsigned int bad_type = 0x1f; - const char *bad_type_str = "0x1f /\\* PER_\\?\\?\\? \\*/"; const unsigned int good_flags = SHORT_INODE | WHOLE_SECONDS | STICKY_TIMEOUTS; - const char *good_flags_str = - "SHORT_INODE\\|WHOLE_SECONDS\\|STICKY_TIMEOUTS"; const unsigned int bad_flags = 0x10000; - const char *bad_flags_str = "0x10000"; const unsigned int saved_pers = personality(0xffffffff); printf("personality\\(0xffffffff\\) = %#x \\([^)]*\\)\n", saved_pers); /* PER_LINUX */ personality(PER_LINUX); - printf("personality\\(PER_LINUX\\) = %#x \\([^)]*\\)\n", saved_pers); + printf("personality\\(%s\\) = %#x \\([^)]*\\)\n", + linux_type_str, saved_pers); personality(0xffffffff); - puts("personality\\(0xffffffff\\) = 0 \\(PER_LINUX\\)"); + printf("personality\\(0xffffffff\\) = 0 \\(%s\\)\n", linux_type_str); personality(good_flags); - printf("personality\\(PER_LINUX\\|%s\\) = 0 \\(PER_LINUX\\)\n", - good_flags_str); + printf("personality\\(%s\\|%s\\) = 0 \\(%s\\)\n", + linux_type_str, good_flags_str, linux_type_str); personality(bad_flags); - printf("personality\\(PER_LINUX\\|%s\\)" - " = %#x \\(PER_LINUX\\|%s\\)\n", - bad_flags_str, good_flags, good_flags_str); + printf("personality\\(%s\\|%s\\)" + " = %#x \\(%s\\|%s\\)\n", + linux_type_str, bad_flags_str, + good_flags, linux_type_str, good_flags_str); personality(good_flags | bad_flags); - printf("personality\\(PER_LINUX\\|%s\\|%s\\)" - " = %#x \\(PER_LINUX\\|%s\\)\n", - good_flags_str, bad_flags_str, bad_flags, bad_flags_str); + printf("personality\\(%s\\|%s\\)" + " = %#x \\(%s\\|%s\\)\n", + linux_type_str, good_bad_flags_str, + bad_flags, linux_type_str, bad_flags_str); /* another valid type */ personality(good_type); - printf("personality\\(%s\\) = %#x \\(PER_LINUX\\|%s\\|%s\\)\n", + printf("personality\\(%s\\) = %#x \\(%s\\|%s\\)\n", good_type_str, good_flags | bad_flags, - good_flags_str, bad_flags_str); + linux_type_str, good_bad_flags_str); personality(good_type | good_flags); printf("personality\\(%s\\|%s\\) = %#x \\(%s\\)\n", @@ -84,16 +109,16 @@ int main(void) good_type_str, good_flags_str); personality(good_type | good_flags | bad_flags); - printf("personality\\(%s\\|%s\\|%s\\) = %#x \\(%s\\|%s\\)\n", - good_type_str, good_flags_str, bad_flags_str, + printf("personality\\(%s\\|%s\\) = %#x \\(%s\\|%s\\)\n", + good_type_str, good_bad_flags_str, good_type | bad_flags, good_type_str, bad_flags_str); /* invalid type */ personality(bad_type); - printf("personality\\(%s\\) = %#x \\(%s\\|%s\\|%s\\)\n", + printf("personality\\(%s\\) = %#x \\(%s\\|%s\\)\n", bad_type_str, good_type | good_flags | bad_flags, - good_type_str, good_flags_str, bad_flags_str); + good_type_str, good_bad_flags_str); personality(bad_type | good_flags); printf("personality\\(%s\\|%s\\) = %#x \\(%s\\)\n", @@ -105,14 +130,14 @@ int main(void) bad_type_str, good_flags_str); personality(bad_type | good_flags | bad_flags); - printf("personality\\(%s\\|%s\\|%s\\) = %#x \\(%s\\|%s\\)\n", - bad_type_str, good_flags_str, bad_flags_str, + printf("personality\\(%s\\|%s\\) = %#x \\(%s\\|%s\\)\n", + bad_type_str, good_bad_flags_str, bad_type | bad_flags, bad_type_str, bad_flags_str); personality(saved_pers); - printf("personality\\([^)]*\\) = %#x \\(%s\\|%s\\|%s\\)\n", + printf("personality\\([^)]*\\) = %#x \\(%s\\|%s\\)\n", bad_type | good_flags | bad_flags, - bad_type_str, good_flags_str, bad_flags_str); + bad_type_str, good_bad_flags_str); return 0; } |