Re: patch: signed char issues

From: Russell King (rmk@arm.linux.org.uk)
Date: Mon Apr 24 2000 - 03:57:47 EST


Horst von Brand writes:
> Philip Blundell <Philip.Blundell@pobox.com> said:
> > Here's a handful of patches for areas of the kernel that assume `char' is
> > a signed type. It was generated against 2.3.99-pre3 but it seems to apply
> > cleanly against -pre5 as well.
>
> Are you sure this is really needed? On a machine with native unsigned char
> this might be a sizeable performance impact for each use.

I think you've misunderstood the patch. The problem is that:

        char wibble = -1;

        ...

        if (wibble == -1)
                printk("wibble is -1\n");
        else
                printk("wibble is not -1\n");

will always print "wibble is not -1" on a native unsigned char machine.
This is a bug, which occurs very often when people don't keep their wits
about them when using "char" to represent signed numbers. Philip's patch
solves those discovered in the kernel thus far.

Unfortunately, people forget about signed-ness issues. I actually wish
that GCC would warn more about this type of unportable code. (eg,
detecting an assignment or test between a bare "char" type and a
negative number).
   _____
  |_____| ------------------------------------------------- ---+---+-
  | | Russell King rmk@arm.linux.org.uk --- ---
  | | | | http://www.arm.linux.org.uk/~rmk/aboutme.html / / |
  | +-+-+ --- -+-
  / | THE developer of ARM Linux |+| /|\
 / | | | --- |
    +-+-+ ------------------------------------------------- /\\\ |

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.tux.org/lkml/



This archive was generated by hypermail 2b29 : Sun Apr 30 2000 - 21:00:07 EST