public inbox for gcc-bugs@sourceware.org help / color / mirror / Atom feed
From: "redi at gcc dot gnu.org" <gcc-bugzilla@gcc.gnu.org> To: gcc-bugs@gcc.gnu.org Subject: [Bug libstdc++/113450] [14 Regression] std/format/functions/format.cc FAILs Date: Wed, 21 Feb 2024 11:33:20 +0000 [thread overview] Message-ID: <bug-113450-4-naR3UyvQC9@http.gcc.gnu.org/bugzilla/> (raw) In-Reply-To: <bug-113450-4@http.gcc.gnu.org/bugzilla/> https://gcc.gnu.org/bugzilla/show_bug.cgi?id=113450 --- Comment #15 from Jonathan Wakely <redi at gcc dot gnu.org> --- (In reply to ro@CeBiTec.Uni-Bielefeld.DE from comment #14) > Further research has uncovered some interesting facts: > > * Neither the SysV SPARC psABI (3rd Edition, 1996) nor the original i386 > psABI (4th Edition, 1997) specify int8_t at all. Actually no wonder > because both predate C99. > > However, even the current Intel386 psABI 1.1 (2015) has nothing here, > nor does the AMD64 psABI 1.0 (2024). > > To my astonishment however, the SPARC Compliance Definition 2.4.1 > (1999), defacto if not in name the SPARC V9 psABI, lists in Figure > 6-140: <inttypes.h>, p.6P-13: > > typedef signed char int8_t; > > So it seems at least Solaris/SPARCV9 violates its own ABI ;-( Ouch! > * When checking clang, there were more surprises: > > #define __INT8_TYPE__ signed char > > With very few exceptions, clang uses the default definitions of the > intN_t types everywhere. That's interesting. I think GCC defines those __INTn_TYPE__ macros after inspecting the target headers (assuming the target provides <stdint.h> or <inttypes.h>) to ensure they agree. I wonder if Clang intentionally deviated from the Solaris headers to "fix" this issue, or if they just define __INT8_TYPE__ to signed char for all 8-bit targets because "obviously" that's correct for all targets (even though it isn't actually correct for Solaris). That means GCC and Clang will disagree about the mangling of a C++ function like void foo(int8_t); > However, the question remains how much that counts: given clang/llvm > has seen years of neglect on Solaris, I wonder how much actual code is > really built with it on Solaris. > > * The Oracle Studio 12.6 cc has no definition of __INT8_TYPE__ at all > AFAICT. If that's true, one could change the type's definition simply > by adjusting <sys/int_types.h>, which would be nice and easy. I think those macros are a GCC thing not required by any standard. Oracle Studio can just rely on <stdint.h> being present, because they know that's true for Solaris. GCC can't (or couldn't historically) rely on <stdint.h> being present for all targets so needed some other way to make those types available. Thanks for digging into this!
next prev parent reply other threads:[~2024-02-21 11:33 UTC|newest] Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top 2024-01-17 15:06 [Bug libstdc++/113450] New: " ro at gcc dot gnu.org 2024-01-17 15:07 ` [Bug libstdc++/113450] " ro at gcc dot gnu.org 2024-01-17 21:32 ` [Bug libstdc++/113450] [14 Regression] " redi at gcc dot gnu.org 2024-01-18 10:06 ` ro at CeBiTec dot Uni-Bielefeld.DE 2024-01-18 12:54 ` cvs-commit at gcc dot gnu.org 2024-01-18 12:58 ` redi at gcc dot gnu.org 2024-01-18 21:03 ` cvs-commit at gcc dot gnu.org 2024-01-19 8:47 ` ro at CeBiTec dot Uni-Bielefeld.DE 2024-02-14 16:46 ` redi at gcc dot gnu.org 2024-02-14 16:51 ` jakub at gcc dot gnu.org 2024-02-14 16:54 ` redi at gcc dot gnu.org 2024-02-14 17:00 ` jakub at gcc dot gnu.org 2024-02-20 16:09 ` ro at CeBiTec dot Uni-Bielefeld.DE 2024-02-20 16:11 ` ro at CeBiTec dot Uni-Bielefeld.DE 2024-02-20 16:11 ` ro at CeBiTec dot Uni-Bielefeld.DE 2024-02-21 9:56 ` ro at CeBiTec dot Uni-Bielefeld.DE 2024-02-21 11:33 ` redi at gcc dot gnu.org [this message] 2024-02-21 13:34 ` ro at CeBiTec dot Uni-Bielefeld.DE 2024-02-21 16:42 ` jsm28 at gcc dot gnu.org 2024-02-22 8:51 ` ro at CeBiTec dot Uni-Bielefeld.DE 2024-02-26 13:40 ` ro at CeBiTec dot Uni-Bielefeld.DE
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=bug-113450-4-naR3UyvQC9@http.gcc.gnu.org/bugzilla/ \ --to=gcc-bugzilla@gcc.gnu.org \ --cc=gcc-bugs@gcc.gnu.org \ /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: linkBe 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; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).