lkml.org 
[lkml]   [2019]   [Dec]   [13]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: READ_ONCE() + STACKPROTECTOR_STRONG == :/ (was Re: [GIT PULL] Please pull powerpc/linux.git powerpc-5.5-2 tag (topic/kasan-bitops))
    On Thu, Dec 12, 2019 at 09:53:38PM +0100, Peter Zijlstra wrote:
    > Now, looking at the current GCC source:
    >
    > https://github.com/gcc-mirror/gcc/blob/97d7270f894395e513667a031a0c309d1819d05e/gcc/c/c-parser.c#L3707
    >
    > it seems that __typeof__() is supposed to strip all qualifiers from
    > _Atomic types. That lead me to try:
    >
    > typeof(_Atomic typeof(p)) __p = (p);
    >
    > But alas, I still get the same junk you got for ool_store_release() :/

    I was checking this to see if Sparse was ready to support this.
    I was a bit surprised because at first sigth GCC was doing as
    it claims (typeof striping const & volatile on _Atomic types)
    but your exampe wasn't working. But it's working if an
    intermediate var is used:
    _Atomic typeof(p) tmp;
    typeof(tmp) __p = (p);
    or, uglier but probably more practical:
    typeof(({_Atomic typeof(p) tmp; })) __p = (p);

    Go figure!

    OTOH, at least on GCC 8.3, it seems to always do the same with
    volatiles than it does with consts.

    -- Luc Van Oostenryck

    \
     
     \ /
      Last update: 2019-12-13 11:48    [W:4.192 / U:1.272 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site