From: Tony Ambardar <tony.ambardar@gmail.com>
To: Andrii Nakryiko <andrii.nakryiko@gmail.com>
Cc: bpf@vger.kernel.org, linux-kselftest@vger.kernel.org,
netdev@vger.kernel.org, "Alexei Starovoitov" <ast@kernel.org>,
"Daniel Borkmann" <daniel@iogearbox.net>,
"Andrii Nakryiko" <andrii@kernel.org>,
"Martin KaFai Lau" <martin.lau@linux.dev>,
"Eduard Zingerman" <eddyz87@gmail.com>,
"Song Liu" <song@kernel.org>,
"Yonghong Song" <yonghong.song@linux.dev>,
"John Fastabend" <john.fastabend@gmail.com>,
"KP Singh" <kpsingh@kernel.org>,
"Stanislav Fomichev" <sdf@fomichev.me>,
"Hao Luo" <haoluo@google.com>, "Jiri Olsa" <jolsa@kernel.org>,
"Mykola Lysenko" <mykolal@fb.com>,
"Shuah Khan" <shuah@kernel.org>, "Björn Töpel" <bjorn@kernel.org>,
"Magnus Karlsson" <magnus.karlsson@intel.com>,
"Maciej Fijalkowski" <maciej.fijalkowski@intel.com>,
"Jonathan Lemon" <jonathan.lemon@gmail.com>,
"David S. Miller" <davem@davemloft.net>,
"Yan Zhai" <yan@cloudflare.com>
Subject: Re: [PATCH bpf-next v1 7/8] selftests/bpf: Fix using stdout, stderr as struct field names
Date: Mon, 29 Jul 2024 01:48:26 -0700 [thread overview]
Message-ID: <ZqdXWswv1oGYV/mN@kodidev-ubuntu> (raw)
In-Reply-To: <ZqR2DuHdBXPX/yx8@kodidev-ubuntu>
On Fri, Jul 26, 2024 at 09:22:38PM -0700, Tony Ambardar wrote:
> On Thu, Jul 25, 2024 at 01:27:03PM -0700, Andrii Nakryiko wrote:
> > On Thu, Jul 25, 2024 at 3:39 AM Tony Ambardar <tony.ambardar@gmail.com> wrote:
> > >
> > > From: Tony Ambardar <tony.ambardar@gmail.com>
> > >
> > > Typically stdin, stdout, stderr are treated as reserved identifiers under
> > > ISO/ANSI C, and a libc implementation is free to define these as macros.
> >
> > Ok, wow that. Do you have a pointer to where in the standard it is
> > said that stdin/stdout/stderr is some sort of reserved identifier that
> > can't be used as a field name?
> >
>
> I'll need to dig around to share some references. The short answer IIRC
> is there's enough potential variation in their definitions that their
> use requires care (or better avoidance).
>
Hi Andrii,
Following up on your request for pointers, some excerpts from a quasi-draft
C17 ISO doc located here:
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2310.pdf
7.1.2 Standard headers
(2) The standard headers are ... <stdio.h> ...
(5) Any definition of an object-like macro ... shall expand to
code that is fully protected by parentheses ...
7.1.3 Reserved identifiers
(1) ... Each macro name in any of the following subclauses ...
is reserved for use as specified if any of its associated headers
is included ...
7.21.1 Input/output <stdio.h>, Introduction
(1) The header <stdio.h> defines several macros ...
(3) The macros are ... stderr stdin stdout which are expressions
of type "pointer to FILE" ...
7.21.5.4 The freopen function
(2) (Footnote 278) The primary use of the freopen function is to
change the file associated with a standard text stream (stderr,
stdin, or stdout), as those identifiers need not be modifiable
lvalues ...
So we have reserved idents (IANALL so not sure of field names), macros,
parentheses, and potentially unassignable stdout/stderr that might break
the output redirection hack in test_progs.c. More than enough to tread
carefully I think...
Cheers,
Tony
next prev parent reply other threads:[~2024-07-29 8:48 UTC|newest]
Thread overview: 29+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-07-25 10:35 [PATCH bpf-next v1 0/8] selftests/bpf: Improve libc portability / musl support (part 2) Tony Ambardar
2024-07-25 10:35 ` [PATCH bpf-next v1 1/8] selftests/bpf: Use portable POSIX basename() Tony Ambardar
2024-07-25 10:35 ` [PATCH bpf-next v1 2/8] selftests/bpf: Fix arg parsing in veristat, test_progs Tony Ambardar
2024-07-25 20:09 ` Andrii Nakryiko
2024-07-27 3:34 ` Tony Ambardar
2024-07-25 10:35 ` [PATCH bpf-next v1 3/8] selftests/bpf: Fix error compiling test_lru_map.c Tony Ambardar
2024-07-25 10:35 ` [PATCH bpf-next v1 4/8] selftests/bpf: Fix C++ compile error from missing _Bool type Tony Ambardar
2024-07-25 10:35 ` [PATCH bpf-next v1 5/8] selftests/bpf: Fix order-of-include compile errors in lwt_reroute.c Tony Ambardar
2024-07-25 20:18 ` Andrii Nakryiko
2024-07-27 3:56 ` Tony Ambardar
2024-07-25 10:35 ` [PATCH bpf-next v1 6/8] selftests/bpf: Fix compile if backtrace support missing in libc Tony Ambardar
2024-07-25 20:22 ` Andrii Nakryiko
2024-07-27 3:48 ` Tony Ambardar
2024-07-29 17:50 ` Andrii Nakryiko
2024-07-25 10:35 ` [PATCH bpf-next v1 7/8] selftests/bpf: Fix using stdout, stderr as struct field names Tony Ambardar
2024-07-25 20:27 ` Andrii Nakryiko
2024-07-27 4:22 ` Tony Ambardar
2024-07-29 8:48 ` Tony Ambardar [this message]
2024-07-25 10:36 ` [PATCH bpf-next v1 8/8] selftests/bpf: Fix error compiling tc_redirect.c with musl libc Tony Ambardar
2024-07-29 9:24 ` [PATCH bpf-next v2 0/8] selftests/bpf: Improve libc portability / musl support (part 2) Tony Ambardar
2024-07-29 9:24 ` [PATCH bpf-next v2 1/8] selftests/bpf: Use portable POSIX basename() Tony Ambardar
2024-07-30 20:50 ` patchwork-bot+netdevbpf
2024-07-29 9:24 ` [PATCH bpf-next v2 2/8] selftests/bpf: Fix arg parsing in veristat, test_progs Tony Ambardar
2024-07-29 9:24 ` [PATCH bpf-next v2 3/8] selftests/bpf: Fix error compiling test_lru_map.c Tony Ambardar
2024-07-29 9:24 ` [PATCH bpf-next v2 4/8] selftests/bpf: Fix C++ compile error from missing _Bool type Tony Ambardar
2024-07-29 9:24 ` [PATCH bpf-next v2 5/8] selftests/bpf: Fix redefinition errors compiling lwt_reroute.c Tony Ambardar
2024-07-29 9:24 ` [PATCH bpf-next v2 6/8] selftests/bpf: Fix compile if backtrace support missing in libc Tony Ambardar
2024-07-29 9:24 ` [PATCH bpf-next v2 7/8] selftests/bpf: Fix using stdout, stderr as struct field names Tony Ambardar
2024-07-29 9:24 ` [PATCH bpf-next v2 8/8] selftests/bpf: Fix error compiling tc_redirect.c with musl libc Tony Ambardar
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=ZqdXWswv1oGYV/mN@kodidev-ubuntu \
--to=tony.ambardar@gmail.com \
--cc=andrii.nakryiko@gmail.com \
--cc=andrii@kernel.org \
--cc=ast@kernel.org \
--cc=bjorn@kernel.org \
--cc=bpf@vger.kernel.org \
--cc=daniel@iogearbox.net \
--cc=davem@davemloft.net \
--cc=eddyz87@gmail.com \
--cc=haoluo@google.com \
--cc=john.fastabend@gmail.com \
--cc=jolsa@kernel.org \
--cc=jonathan.lemon@gmail.com \
--cc=kpsingh@kernel.org \
--cc=linux-kselftest@vger.kernel.org \
--cc=maciej.fijalkowski@intel.com \
--cc=magnus.karlsson@intel.com \
--cc=martin.lau@linux.dev \
--cc=mykolal@fb.com \
--cc=netdev@vger.kernel.org \
--cc=sdf@fomichev.me \
--cc=shuah@kernel.org \
--cc=song@kernel.org \
--cc=yan@cloudflare.com \
--cc=yonghong.song@linux.dev \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox