lkml.org 
[lkml]   [2011]   [Jun]   [24]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject{PATCH] fix __packed in exported kernel headers
    On 2011.06.24 at 15:07 +0200, Michal Marek wrote:
    > On 23.6.2011 18:57, Joe Perches wrote:
    > > On Thu, 2011-06-23 at 17:02 +0200, Markus Trippelsdorf wrote:
    > >> On 2011.06.23 at 09:42 -0400, Nick Bowler wrote:
    > >>> On 2011-06-22 08:34 +0200, Markus Trippelsdorf wrote:
    > >>>> One possible solution would be to let the "scripts/headers_install.pl"
    > >>>> script automatically substitute __packed with __attribute__((packed)):
    > >>>>
    > >>>> diff --git a/scripts/headers_install.pl b/scripts/headers_install.pl
    > > []
    > >> I'm not an expert of Perl regular expressions, but maybe this:
    > >> $line =~ s/\s__packed;$/ __attribute__((packed));/g
    > >> is a little bit closer to the intention?
    > >
    > > Maybe:
    > >
    > > s/\b__packed\b/__attribute__((packed))/g
    >
    > Markus, will you post a patch with this fix?
    >

    checkpatch.pl warns about using __attribute__((packed)) in kernel
    headers: "__packed is preferred over __attribute__((packed))". If one
    follows that advice it could cause problems in the exported header
    files, because the outside world doesn't know about this shortcut.

    For example busybox will fail to compile:
    CC miscutils/ubi_attach_detach.o
    In file included from miscutils/ubi_attach_detach.c:27:0:
    /usr/include/mtd/ubi-user.h:330:3: error: conflicting types for ‘__packed’
    /usr/include/mtd/ubi-user.h:314:3: note: previous declaration of ‘__packed’ was here
    ...

    Fix the problem by substituting __packed with __attribute__((packed)) in
    the header_install.pl script.

    Cc: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
    CC: Joe Perches <joe@perches.com>
    Signed-off-by: Markus Trippelsdorf <markus@trippelsdorf.de>
    ---
    scripts/headers_install.pl | 1 +
    1 files changed, 1 insertions(+), 0 deletions(-)

    diff --git a/scripts/headers_install.pl b/scripts/headers_install.pl
    index efb3be1..48462be 100644
    --- a/scripts/headers_install.pl
    +++ b/scripts/headers_install.pl
    @@ -35,6 +35,7 @@ foreach my $file (@files) {
    $line =~ s/([\s(])__iomem\s/$1/g;
    $line =~ s/\s__attribute_const__\s/ /g;
    $line =~ s/\s__attribute_const__$//g;
    + $line =~ s/\b__packed\b/__attribute__((packed))/g;
    $line =~ s/^#include <linux\/compiler.h>//;
    $line =~ s/(^|\s)(inline)\b/$1__$2__/g;
    $line =~ s/(^|\s)(asm)\b(\s|[(]|$)/$1__$2__$3/g;
    --
    Markus
    --
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/
    \
     
     \ /
      Last update: 2011-06-24 15:53    [W:0.026 / U:0.356 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site