2006-12-02 06:39:05

by mariusn

[permalink] [raw]
Subject: Linux portability bugs

[Please include me in CCs - I am not subscribed to the list.]

Hi guys,

I am a graduate student at University of Washington, building a tool
automatically discover portability bugs in system-level code written
in C. My definition of "portability" is at the data layout level,
accounting for differences in alignment, padding, and generally layout
policies on various platforms. E.g., one might perform a pointer cast
that only works as intended when doubles are 4-byte aligned, which is
the case with gcc/ia-32 (default options) but not with gcc/sparc (due
to sparc's limited support for accessing doubles on non-8-byte
boundaries).

I am looking for advice on how/where to look for these kinds of bugs
in the kernel and related software. This (dated) document
(http://netwinder.osuosl.org/users/b/brianbr/public_html/alignment.html
) describes exactly these sorts of issues in the context of Linux/ARM
and mentions things like the kernel, binutils, cpio, X11, Orbit, as
sources of these sorts of bugs. I am having a bit of a hard time
locating change logs and otherwise related information on where these
bugs occurred, patches that addressed them, etc.

Any pointers or discussion whatsoever about known/fixed bugs, and also
any hunches on where these sorts of portability bugs might lay
dormant, would be much appreciated. I am committed to contributing
back anything I find in my research - in the form of patches or bug
reports.

Thank you!

-Marius


2006-12-11 04:49:14

by Chuck Ebbert

[permalink] [raw]
Subject: Re: Linux portability bugs

In-Reply-To: <[email protected]>

On Fri, 1 Dec 2006 22:39:01 -0800, mariusn wrote:

> I am a graduate student at University of Washington, building a tool
> automatically discover portability bugs in system-level code written
> in C. My definition of "portability" is at the data layout level,
> accounting for differences in alignment, padding, and generally layout
> policies on various platforms. E.g., one might perform a pointer cast
> that only works as intended when doubles are 4-byte aligned, which is
> the case with gcc/ia-32 (default options) but not with gcc/sparc (due
> to sparc's limited support for accessing doubles on non-8-byte
> boundaries).
>
> I am looking for advice on how/where to look for these kinds of bugs
> in the kernel and related software. This (dated) document
> (http://netwinder.osuosl.org/users/b/brianbr/public_html/alignment.html
> ) describes exactly these sorts of issues in the context of Linux/ARM
> and mentions things like the kernel, binutils, cpio, X11, Orbit, as
> sources of these sorts of bugs. I am having a bit of a hard time
> locating change logs and otherwise related information on where these
> bugs occurred, patches that addressed them, etc.

Look for "compat" in the patch title and comments, like this one:

http://www.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commitdiff;h=46c5ea3c9ae7fbc6e52a13c92e59d4fc7f4ca80a
--
Chuck
"Even supernovas have their duller moments."