mailing list of musl libc
 help / color / mirror / code / Atom feed
From: Jens Gustedt <jens.gustedt@inria.fr>
To: musl@lists.openwall.com
Subject: Re: [PATCH] Add stdatomic.h for clang>=3.1 and gcc>=4.1
Date: Sun, 23 Nov 2014 10:43:34 +0100	[thread overview]
Message-ID: <1416735814.16006.387.camel@eris.loria.fr> (raw)
In-Reply-To: <e4297aac.dNq.dMV.1h.cxuw4R@mailjet.com>

[-- Attachment #1: Type: text/plain, Size: 1941 bytes --]

Hello,

Am Sonntag, den 23.11.2014, 02:47 +0100 schrieb Joakim Sindholt:
> GCC 4.9:
> 
> typedef _Atomic struct
> {
> #if __GCC_ATOMIC_TEST_AND_SET_TRUEVAL == 1
>   _Bool __val;
> #else
>   unsigned char __val;
> #endif
> } atomic_flag;
> 
> Clang 3.6:
> 
> #ifdef __cplusplus
> typedef _Atomic(bool)               atomic_bool;
> #else
> typedef _Atomic(_Bool)              atomic_bool;
> #endif
> 
> typedef struct atomic_flag { atomic_bool _Value; } atomic_flag;

So they fucked it up and have incompatible declarations? Great.

Please, first of all don't look at it for the #ifdef things, this is
secondary, in particular if it never triggers in real life (but I
think it does), see below.

These two declarations are incompatible and having to compilation
units one compiled with gcc and one with clang that are linked
together, leads to UB:

 - the structures should end up to have the same layout, but here one
   has a qualified field and the other not, so not the same types.

 - for struct types to be compatible, the struct tag must be the same

For the discussion about the second case for the type, this is the
question if there are archs that implement TAS operations with other
values than 0 for "unset" and 1 for "set". There seem to be archs out
there that implement TAS with other values, I vaguely remember having
heard about some risk arch (??). Actually this also is the reason why
the standard defines this type in such a weird manner, and why per the
standard it needs a dedicated initialization macro, default
initialization with 0 doesn't do in all cases.

Jens

-- 
:: INRIA Nancy Grand Est ::: AlGorille ::: ICube/ICPS :::
:: ::::::::::::::: office Strasbourg : +33 368854536   ::
:: :::::::::::::::::::::: gsm France : +33 651400183   ::
:: ::::::::::::::: gsm international : +49 15737185122 ::
:: http://icube-icps.unistra.fr/index.php/Jens_Gustedt ::



[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 198 bytes --]

  parent reply	other threads:[~2014-11-23  9:43 UTC|newest]

Thread overview: 23+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-11-09 12:53 Joakim Sindholt
2014-11-09 17:11 ` Jens Gustedt
2014-11-22 20:52   ` Joakim Sindholt
2014-11-22 23:09     ` Jens Gustedt
2014-11-22 23:30       ` Rich Felker
2014-11-23  1:31         ` Jens Gustedt
2014-11-23  1:43           ` Rich Felker
2014-11-23  1:47             ` Joakim Sindholt
2014-11-23  2:42               ` Rich Felker
2014-11-23  9:43               ` Jens Gustedt [this message]
2014-11-23 15:21                 ` Rich Felker
2014-11-23 16:29                   ` Jens Gustedt
2014-11-23 16:38                     ` Rich Felker
2014-11-23 17:05                       ` Jens Gustedt
2014-11-23 17:29                         ` stephen Turner
2014-11-23 19:38                         ` Rich Felker
2014-11-23  8:49             ` Jens Gustedt
2014-11-23 15:06               ` Rich Felker
2014-11-23 16:18                 ` Jens Gustedt
2014-11-23 16:37                   ` Rich Felker
2014-11-23 18:01                     ` Jens Gustedt
2014-11-23 19:39                       ` Rich Felker
2014-11-23 23:30                         ` Jens Gustedt

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=1416735814.16006.387.camel@eris.loria.fr \
    --to=jens.gustedt@inria.fr \
    --cc=musl@lists.openwall.com \
    /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.
Code repositories for project(s) associated with this public inbox

	https://git.vuxu.org/mirror/musl/

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 NNTP newsgroup(s).