lkml.org 
[lkml]   [2012]   [Feb]   [3]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: Memory corruption due to word sharing
    On Fri, 3 Feb 2012, DJ Delorie wrote:

    >
    > Jan Kara <jack@suse.cz> writes:
    > > we've spotted the following mismatch between what kernel folks expect
    > > from a compiler and what GCC really does, resulting in memory corruption on
    > > some architectures. Consider the following structure:
    > > struct x {
    > > long a;
    > > unsigned int b1;
    > > unsigned int b2:1;
    > > };
    >
    > If this structure were volatile, you could try
    > -fstrict-volatile-bitfields, which forces GCC to use the C type to
    > define the access width, instead of doing whatever it thinks is optimal.
    >
    > Note: that flag is enabled by default for some targets already, most
    > notably ARM.

    Note that -fstrict-volatile-bitfields does not work for

    volatile struct S {
    int i : 1;
    char c;
    } s;
    int main()
    {
    s.i = 1;
    s.c = 2;
    }

    where it accesses s.i using SImode. -fstrict-volatile-bitfields
    falls foul of all the games bitfield layout plays and the
    irrelevantness of the declared bitfield type (but maybe the
    ARM ABI exactly specifies it that way).

    So no, I would not recommend -fstrict-volatile-bitfields.

    Richard.


    \
     
     \ /
      Last update: 2012-02-03 10:39    [W:0.020 / U:31.268 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site