From: Martin Uecker <ma.uecker@gmail.com>
To: Alejandro Colomar <alx@kernel.org>
Cc: libc-alpha@sourceware.org, gcc@gcc.gnu.org,
Paul Eggert <eggert@cs.ucla.edu>,
linux-man@vger.kernel.org, xry111@xry111.site, jakub@redhat.com,
lh_mouse@126.com, jwakely.gcc@gmail.com,
Richard.Earnshaw@arm.com, sam@gentoo.org,
ben.boeckel@kitware.com, heiko.eissfeldt@siemens.com,
dmalcolm@redhat.com, torreemanuele6@gmail.com
Subject: Re: WG14 paper for removing restrict from nptr in strtol(3)
Date: Sun, 07 Jul 2024 14:21:17 +0200 [thread overview]
Message-ID: <567c558f7ae6f26902105cc208b1fde241e6df6d.camel@gmail.com> (raw)
In-Reply-To: <mlzyfpvrnihbcg27oopghds5mm5ysz6sujrxvnbiixlcs53nkd@ibyybtnekhyc>
Am Sonntag, dem 07.07.2024 um 13:07 +0200 schrieb Alejandro Colomar via Gcc:
> Hi Martin,
>
> On Sun, Jul 07, 2024 at 09:15:23AM GMT, Martin Uecker wrote:
> >
> > Hi Alejandro,
> >
> > if in caller it is known that endptr has access mode "write_only"
> > then it can conclude that the content of *endptr has access mode
> > "none", couldn't it?
>
> Hmmmm. I think you're correct. I'll incorporate that and see how it
> affects the caller.
>
> At first glance, I think it would result in
>
> nptr access(read_only) alias *endptr
> endptr access(write_only) unique
> errno access(read_write) unique
> *endptr access(none) alias nptr
>
> Which is actually having perfect information, regardless of 'restrict'
> on nptr. :-)
Yes, but my point is that even with "restrict" a smarter
compiler could then also be smart enough not to warn even
when *endptr aliases nptr.
>
> > You also need to discuss backwards compatibility. Changing
> > the type of those functions can break valid programs.
>
> I might be forgetting about other possibilities, but the only one I had
> in mind that could break API would be function pointers. However, a
> small experiment seems to say it doesn't:
Right, the outermost qualifiers are ignored, so this is not a
compatibility problem. So I think this is not an issue, but
it is worth pointing it out.
Martin
>
> $ cat strtolp.c
> #include <stdlib.h>
>
> long
> alx_strtol(const char *nptr, char **restrict endptr, int base)
> {
> return strtol(nptr, endptr, base);
> }
>
> typedef long (*strtolp_t)(const char *restrict nptr,
> char **restrict endptr, int base);
> typedef long (*strtolpnr_t)(const char *nptr,
> char **restrict endptr, int base);
>
> int
> main(void)
> {
> [[maybe_unused]] strtolp_t a = &strtol;
> [[maybe_unused]] strtolpnr_t b = &strtol;
> [[maybe_unused]] strtolp_t c = &alx_strtol;
> [[maybe_unused]] strtolpnr_t d = &alx_strtol;
> }
>
> $ cc -Wall -Wextra strtolp.c
> $
>
> Anyway, I'll say that it doesn't seem to break API.
>
> > You would
> > need to make a case that this is unlikely to affect any real
> > world program.
>
> If you have something else in mind that could break API, please let me
> know, and I'll add it to the experiments.
>
> Thanks!
>
> Have a lovely day!
> Alex
>
next prev parent reply other threads:[~2024-07-07 12:21 UTC|newest]
Thread overview: 76+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <20240705130249.14116-2-alx@kernel.org>
[not found] ` <38982a470643f766747b0ca06b27ca859a87b101.camel@xry111.site>
2024-07-05 14:37 ` [PATCH v1] Remove 'restrict' from 'nptr' in strtol(3)-like functions Alejandro Colomar
2024-07-05 15:02 ` Martin Uecker
2024-07-05 15:23 ` Alejandro Colomar
2024-07-05 15:34 ` Martin Uecker
2024-07-05 15:53 ` Alejandro Colomar
2024-07-05 16:01 ` Xi Ruoyao
2024-07-05 16:17 ` Xi Ruoyao
2024-07-05 16:24 ` Jonathan Wakely
2024-07-05 16:30 ` Martin Uecker
2024-07-05 19:28 ` Alejandro Colomar
2024-07-05 19:38 ` Jonathan Wakely
2024-07-05 19:47 ` Alejandro Colomar
2024-07-05 19:52 ` Jonathan Wakely
2024-07-05 20:11 ` Alejandro Colomar
2024-07-05 20:15 ` Emanuele Torre
2024-07-05 20:31 ` Ben Boeckel
2024-07-05 20:25 ` Martin Uecker
2024-07-05 20:28 ` Jonathan Wakely
2024-07-05 20:41 ` Alejandro Colomar
2024-07-05 20:55 ` Alejandro Colomar
2024-07-05 21:39 ` Jonathan Wakely
2024-07-05 22:02 ` Alejandro Colomar
2024-07-05 22:04 ` Alejandro Colomar
2024-07-06 2:24 ` Xi Ruoyao
2024-07-06 2:39 ` Xi Ruoyao
2024-07-06 5:51 ` [[gnu::null_terminated_string_arg(1)]] on strtol(1) (was: [PATCH v1] Remove 'restrict' from 'nptr' in strtol(3)-like) functions Alejandro Colomar
2024-07-06 6:10 ` [PATCH v1] Remove 'restrict' from 'nptr' in strtol(3)-like functions Alejandro Colomar
2024-07-06 6:11 ` Alejandro Colomar
2024-07-05 16:32 ` Sam James
2024-07-05 16:02 ` Martin Uecker
2024-07-05 16:11 ` Jonathan Wakely
2024-07-05 16:21 ` Richard Earnshaw (lists)
2024-07-05 15:54 ` LIU Hao
2024-07-05 15:55 ` Xi Ruoyao
2024-07-05 16:32 ` Alejandro Colomar
2024-07-05 17:32 ` Alejandro Colomar
2024-07-05 19:41 ` [WG14] Request for document number; strtol restrictness Alejandro Colomar
2024-07-07 15:46 ` Daniel Plakosh
2024-07-09 19:00 ` Alejandro Colomar
2024-07-09 20:04 ` Daniel Plakosh
2024-07-07 1:58 ` WG14 paper for removing restrict from nptr in strtol(3) Alejandro Colomar
2024-07-07 7:15 ` Martin Uecker
2024-07-07 11:07 ` Alejandro Colomar
2024-07-07 12:21 ` Martin Uecker [this message]
2024-07-07 13:10 ` Alejandro Colomar
2024-07-07 10:42 ` Paul Eggert
2024-07-07 12:42 ` Alejandro Colomar
2024-07-07 17:30 ` Paul Eggert
2024-07-07 22:52 ` Alejandro Colomar
2024-07-09 12:09 ` Paul Eggert
2024-07-09 17:36 ` Alejandro Colomar
2024-07-08 14:30 ` David Malcolm
2024-07-08 15:01 ` Alejandro Colomar
2024-07-08 16:05 ` Martin Uecker
2024-07-08 20:17 ` Alejandro Colomar
2024-07-09 5:58 ` Martin Uecker
2024-07-09 9:26 ` Alejandro Colomar
2024-07-08 22:48 ` David Malcolm
2024-07-09 9:07 ` Alejandro Colomar
2024-07-09 9:18 ` Jakub Jelinek
2024-07-09 10:28 ` Alejandro Colomar
2024-07-09 11:28 ` Alejandro Colomar
2024-07-09 22:42 ` n3294 - The restrict function attribute as a replacement of the restrict qualifier Alejandro Colomar
2024-07-26 16:24 ` Joseph Myers
2024-07-26 16:35 ` G. Branden Robinson
2024-07-26 19:53 ` Alejandro Colomar
2024-07-26 18:50 ` Paul Eggert
2024-07-26 20:11 ` Alejandro Colomar
2024-07-26 20:30 ` Joseph Myers
2024-07-26 21:14 ` Alejandro Colomar
2024-07-26 21:22 ` Joseph Myers
2024-07-26 21:49 ` Alejandro Colomar
2024-07-26 22:03 ` Martin Uecker
2024-07-26 22:26 ` Alejandro Colomar
2024-07-26 22:59 ` Martin Uecker
2024-07-27 8:44 ` Alejandro Colomar
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=567c558f7ae6f26902105cc208b1fde241e6df6d.camel@gmail.com \
--to=ma.uecker@gmail.com \
--cc=Richard.Earnshaw@arm.com \
--cc=alx@kernel.org \
--cc=ben.boeckel@kitware.com \
--cc=dmalcolm@redhat.com \
--cc=eggert@cs.ucla.edu \
--cc=gcc@gcc.gnu.org \
--cc=heiko.eissfeldt@siemens.com \
--cc=jakub@redhat.com \
--cc=jwakely.gcc@gmail.com \
--cc=lh_mouse@126.com \
--cc=libc-alpha@sourceware.org \
--cc=linux-man@vger.kernel.org \
--cc=sam@gentoo.org \
--cc=torreemanuele6@gmail.com \
--cc=xry111@xry111.site \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.