]> www.infradead.org Git - users/jedix/linux-maple.git/commit
selftests/bpf: Fix using stdout, stderr as struct field names
authorTony Ambardar <tony.ambardar@gmail.com>
Mon, 29 Jul 2024 09:24:23 +0000 (02:24 -0700)
committerAndrii Nakryiko <andrii@kernel.org>
Tue, 30 Jul 2024 20:45:45 +0000 (13:45 -0700)
commit06eeca1217a8655975f340e0ead6a396df74a2a4
treed7218e6f50d88f9e9d98188500786239c9d5063a
parentc9a83e76b5a96801a2c7ea0a79ca77c356d8b38d
selftests/bpf: Fix using stdout, stderr as struct field names

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: Tony Ambardar <tony.ambardar@gmail.com>
Signed-off-by: Andrii 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
tools/testing/selftests/bpf/prog_tests/reg_bounds.c
tools/testing/selftests/bpf/test_progs.c
tools/testing/selftests/bpf/test_progs.h