[Bug 272723] <sys/cdefs.h> header breaks restricted pointers in C++

[email protected]
Newsgroups gmane.os.freebsd.devel.standards
Message-ID <[email protected]/bugzilla/>
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=272723

--- Comment #1 from [email protected] ---
A commit in branch main references this bug:

URL:
https://cgit.FreeBSD.org/src/commit/?id=15876d9fd83fdfa7d541ea747eb40faeade975d2

commit 15876d9fd83fdfa7d541ea747eb40faeade975d2
Author:     Sebastian Huber <[email protected]>
AuthorDate: 2023-08-06 13:27:27 +0000
Commit:     Konstantin Belousov <[email protected]>
CommitDate: 2023-08-06 21:09:52 +0000

    sys/cdefs.h: fix for use __restrict in C++

    Newlib shares large parts of <sys/cdefs.h> with FreeBSD and received
    this bug report:

    https://sourceware.org/pipermail/newlib/2023/020400.html

    As an extension, GCC and clang offer C99-style restricted pointers in
    C++ mode:
    https://gcc.gnu.org/onlinedocs/gcc/Restricted-Pointers.html

    We notice that this extension is broken when including newlib headers:
    restricted pointers are treated as ordinary pointers.

    We traced this to the following section of
    newlib/libc/include/sys/cdefs.h:

      /*
       * GCC 2.95 provides `__restrict' as an extension to C90 to support the
       * C99-specific `restrict' type qualifier.  We happen to use `__restrict'
as
       * a way to define the `restrict' type qualifier without disturbing older
       * software that is unaware of C99 keywords.
       */
      #if !(__GNUC__ == 2 && __GNUC_MINOR__ == 95)
      #if !defined(__STDC_VERSION__) || __STDC_VERSION__ < 199901
      #define       __restrict
      #else
      #define       __restrict      restrict
      #endif
      #endif

    While the GCC __restrict extension was indeed introduced in GCC 2.95, it
    is not limited to this version; the extension is also not limited to
    C90:
    https://gcc.gnu.org/gcc-2.95/c++features.html

    Rewrite the logic in the header so that __restrict is kept alone when
    available.

    PR:     272723
    MFC after:      1 week

 sys/sys/cdefs.h | 16 +++++++---------
 1 file changed, 7 insertions(+), 9 deletions(-)

-- 
You are receiving this mail because:
You are the assignee for the bug.
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.