From d4facb63ff0349b3c2a83df7363f23a2dbd64a17 Mon Sep 17 00:00:00 2001 From: Adhemerval Zanella Date: Thu, 10 Nov 2022 14:49:33 -0300 Subject: elf: Do not assume symbol order on tst-audit25{a,b} The static linker might impose any order or internal function position, so change the test to check if the audit prints the symbol only once in any order. --- elf/tst-audit25a.c | 38 ++++++++++++++++++++++++-------------- 1 file changed, 24 insertions(+), 14 deletions(-) (limited to 'elf/tst-audit25a.c') diff --git a/elf/tst-audit25a.c b/elf/tst-audit25a.c index c2cff8541b..9d2b316576 100644 --- a/elf/tst-audit25a.c +++ b/elf/tst-audit25a.c @@ -29,6 +29,8 @@ #include #include +#include "tst-audit25.h" + static int restart; #define CMDLINE_OPTIONS \ { "restart", no_argument, &restart, 1 }, @@ -82,13 +84,17 @@ do_test (int argc, char *argv[]) /* tst-audit25a is build with -Wl,-z,lazy and tst-audit25mod1 with -Wl,-z,now; so only tst_audit25mod3_func1 should be expected to have LA_SYMB_NOPLTENTER | LA_SYMB_NOPLTEXIT. */ - TEST_COMPARE_STRING (result.err.buffer, - "la_symbind: tst_audit25mod3_func1 1\n" - "la_symbind: tst_audit25mod1_func1 0\n" - "la_symbind: tst_audit25mod1_func2 0\n" - "la_symbind: tst_audit25mod2_func1 0\n" - "la_symbind: tst_audit25mod4_func1 0\n" - "la_symbind: tst_audit25mod2_func2 0\n"); + const char *expected[] = + { + "la_symbind: tst_audit25mod1_func1 0\n", + "la_symbind: tst_audit25mod1_func2 0\n", + "la_symbind: tst_audit25mod2_func1 0\n", + "la_symbind: tst_audit25mod2_func2 0\n", + "la_symbind: tst_audit25mod3_func1 1\n", + "la_symbind: tst_audit25mod4_func1 0\n", + }; + compare_output (result.err.buffer, result.err.length, + expected, array_length(expected)); support_capture_subprocess_free (&result); } @@ -103,13 +109,17 @@ do_test (int argc, char *argv[]) /* With LD_BIND_NOW all symbols are expected to have LA_SYMB_NOPLTENTER | LA_SYMB_NOPLTEXIT. Also the resolution order is done in breadth-first order. */ - TEST_COMPARE_STRING (result.err.buffer, - "la_symbind: tst_audit25mod4_func1 1\n" - "la_symbind: tst_audit25mod3_func1 1\n" - "la_symbind: tst_audit25mod1_func1 1\n" - "la_symbind: tst_audit25mod2_func1 1\n" - "la_symbind: tst_audit25mod1_func2 1\n" - "la_symbind: tst_audit25mod2_func2 1\n"); + const char *expected[] = + { + "la_symbind: tst_audit25mod1_func1 1\n", + "la_symbind: tst_audit25mod1_func2 1\n", + "la_symbind: tst_audit25mod2_func1 1\n", + "la_symbind: tst_audit25mod2_func2 1\n", + "la_symbind: tst_audit25mod3_func1 1\n", + "la_symbind: tst_audit25mod4_func1 1\n", + }; + compare_output (result.err.buffer, result.err.length, + expected, array_length(expected)); support_capture_subprocess_free (&result); } -- cgit v1.2.3