patches/linux/3.0.9/100-headers_install-fix-__packed-in-exported-kernel-head.patch
author Daniel Price <daniel.price@gmail.com>
Tue Nov 20 16:59:17 2012 -0800 (2012-11-20)
changeset 3126 333d3e40cbd1
parent 2735 f09ed6dd71a3
permissions -rw-r--r--
scripts: refine static linking check to better guide the user

The current mechanism to check if static linking is possible, and the mesage
displayed on failure, can be puzzling to the unsuspecting user.

Also, the current implementation is not using the existing infrastructure,
and is thus difficult to enhance with new tests.

So, switch to using the standard CT_DoExecLog infra, and use four tests to
check for the host compiler:
- check we can run it
- check it can build a trivial program
- check it can statically link that program
- check if it statically link with libstdc++

That should cover most of the problems. Hopefully.

(At the same time, fix a typo in a comment)

Signed-off-by: Daniel Price <daniel.price@gmail.com>
[yann.morin.1998@free.fr: split original patch for self-contained changes]
[yann.morin.1998@free.fr: use steps to better see gcc's output]
[yann.morin.1998@free.fr: commit log]
Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
Message-Id: <163f86b5216fc08c672a.1353459722@nipigon.dssd.com>
Patchwork-Id: 200536
yann@2735
     1
commit f210735fe2f17a6225432ee3d1239bcf23a8659c
yann@2735
     2
Author: Markus Trippelsdorf <markus@trippelsdorf.de>
yann@2735
     3
Date:   Fri Jun 24 15:51:00 2011 +0200
yann@2735
     4
yann@2735
     5
    headers_install: fix __packed in exported kernel headers
yann@2735
     6
    
yann@2735
     7
    checkpatch.pl warns about using __attribute__((packed)) in kernel
yann@2735
     8
    headers: "__packed is preferred over __attribute__((packed))". If one
yann@2735
     9
    follows that advice it could cause problems in the exported header
yann@2735
    10
    files, because the outside world doesn't know about this shortcut.
yann@2735
    11
    
yann@2735
    12
    For example busybox will fail to compile:
yann@2735
    13
     CC      miscutils/ubi_attach_detach.o
yann@2735
    14
     In file included from miscutils/ubi_attach_detach.c:27:0:
yann@2735
    15
     /usr/include/mtd/ubi-user.h:330:3: error: conflicting types for ‘__packed’
yann@2735
    16
     /usr/include/mtd/ubi-user.h:314:3: note: previous declaration of ‘__packed’ was here
yann@2735
    17
    ...
yann@2735
    18
    
yann@2735
    19
    Fix the problem by substituting __packed with __attribute__((packed)) in
yann@2735
    20
    the header_install.pl script.
yann@2735
    21
    
yann@2735
    22
    Cc: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
yann@2735
    23
    CC: Joe Perches <joe@perches.com>
yann@2735
    24
    Signed-off-by: Markus Trippelsdorf <markus@trippelsdorf.de>
yann@2735
    25
    Signed-off-by: Michal Marek <mmarek@suse.cz>
yann@2735
    26
yann@2735
    27
diff --git a/scripts/headers_install.pl b/scripts/headers_install.pl
yann@2735
    28
index efb3be1..48462be 100644
yann@2735
    29
--- a/scripts/headers_install.pl
yann@2735
    30
+++ b/scripts/headers_install.pl
yann@2735
    31
@@ -35,6 +35,7 @@ foreach my $file (@files) {
yann@2735
    32
 		$line =~ s/([\s(])__iomem\s/$1/g;
yann@2735
    33
 		$line =~ s/\s__attribute_const__\s/ /g;
yann@2735
    34
 		$line =~ s/\s__attribute_const__$//g;
yann@2735
    35
+		$line =~ s/\b__packed\b/__attribute__((packed))/g;
yann@2735
    36
 		$line =~ s/^#include <linux\/compiler.h>//;
yann@2735
    37
 		$line =~ s/(^|\s)(inline)\b/$1__$2__/g;
yann@2735
    38
 		$line =~ s/(^|\s)(asm)\b(\s|[(]|$)/$1__$2__$3/g;