• Tony Ambardar's avatar
    selftests/bpf: Fix using stdout, stderr as struct field names · 06eeca12
    Tony Ambardar authored
    Typically stdin, stdout, stderr are treated as reserved identifiers under
    ISO/ANSI C and libc implementations further define these as macros, both in
    glibc and musl <stdio.h>.
    
    However, while glibc defines:
        ...
        /* Standard streams.  */
        extern FILE *stdin;             /* Standard input stream.  */
        extern FILE *stdout;            /* Standard output stream.  */
        extern FILE *stderr;            /* Standard error output stream.  */
        /* C89/C99 say they're macros.  Make them happy.  */
        #define stdin stdin
        #define stdout stdout
        #define stderr stderr
        ...
    
    musl instead uses (legally):
        ...
        extern FILE *const stdin;
        extern FILE *const stdout;
        extern FILE *const stderr;
    
        #define stdin  (stdin)
        #define stdout (stdout)
        #define stderr (stderr)
        ...
    
    The latter results in compile errors when the names are reused as fields of
    'struct test_env' and elsewhere in test_progs.[ch] and reg_bounds.c.
    
    Rename the fields to stdout_saved and stderr_saved to avoid many errors
    seen building against musl, e.g.:
    
      In file included from test_progs.h:6,
                       from test_progs.c:5:
      test_progs.c: In function 'print_test_result':
      test_progs.c:237:21: error: expected identifier before '(' token
        237 |         fprintf(env.stdout, "#%-*d %s:", TEST_NUM_WIDTH, test->test_num, test->test_name);
            |                     ^~~~~~
      test_progs.c:237:9: error: too few arguments to function 'fprintf'
        237 |         fprintf(env.stdout, "#%-*d %s:", TEST_NUM_WIDTH, test->test_num, test->test_name);
            |         ^~~~~~~
    Signed-off-by: default avatarTony Ambardar <tony.ambardar@gmail.com>
    Signed-off-by: default avatarAndrii Nakryiko <andrii@kernel.org>
    Link: https://lore.kernel.org/bpf/ZqR2DuHdBXPX%2Fyx8@kodidev-ubuntu/
    Link: https://lore.kernel.org/bpf/684ea17548e237f39dfb3f7a3d33450069015b21.1722244708.git.tony.ambardar@gmail.com
    06eeca12
test_progs.h 12.3 KB