lkml.org 
[lkml]   [2021]   [Apr]   [17]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [PATCH 00/13] [RFC] Rust support
    On Fri, Apr 16, 2021 at 07:08:29PM +0100, Matthew Wilcox wrote:
    > On Fri, Apr 16, 2021 at 07:18:48PM +0200, Peter Zijlstra wrote:
    > > On Fri, Apr 16, 2021 at 07:10:17PM +0200, Miguel Ojeda wrote:
    > >
    > > > Of course, UB is only a subset of errors, but it is a major one, and
    > > > particularly critical for privileged code.
    > >
    > > I've seen relatively few UBSAN warnings that weren't due to UBSAN being
    > > broken.
    >
    > Lucky you.
    >
    > 84c34df158cf215b0cd1475ab3b8e6f212f81f23
    >
    > (i'd argue this is C being broken; promoting only as far as int, when
    > assigning to an unsigned long is Bad, but until/unless either GCC fixes
    > that or the language committee realises that being stuck in the 1970s
    > is Bad, people are going to keep making this kind of mistake)

    Well, I think the rules actually make sense, at the point in the syntax
    tree where + happens, we have 'unsigned char' and 'int', so at that
    point we promote to 'int'. Subsequently 'int' gets shifted and bad
    things happen.

    The 'unsigned long' doesn't happen until quite a bit later.

    Anyway, the rules are imo fairly clear and logical, but yes they can be
    annoying. The really silly thing here is that << and >> have UB at all,
    and I would love a -fwrapv style flag that simply defines it. Yes it
    will generate worse code in some cases, but having the UB there is just
    stupid.

    That of course doesn't help your case here, it would simply misbehave
    and not be UB.

    Another thing the C rules cannot really express is a 32x32->64
    multiplication, some (older) versions of GCC can be tricked into it, but
    mostly it just doesn't want to do that sanely and the C rules are
    absolutely no help there.

    \
     
     \ /
      Last update: 2021-04-17 13:18    [W:3.028 / U:0.000 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site