diff options
author | Sam Ravnborg <sam@uranus.ravnborg.org> | 2008-03-23 21:38:54 +0100 |
---|---|---|
committer | Sam Ravnborg <sam@uranus.ravnborg.org> | 2008-03-23 21:38:54 +0100 |
commit | 4ce6efed48d736e3384c39ff87bda723e1f8e041 (patch) | |
tree | 961601d69caf571c5d3350d8d9f9075b844486b6 /scripts/mod/file2alias.c | |
parent | d2532dd20a126020de407c1c2476a75b53fce7ac (diff) | |
download | linux-stable-4ce6efed48d736e3384c39ff87bda723e1f8e041.tar.gz linux-stable-4ce6efed48d736e3384c39ff87bda723e1f8e041.tar.bz2 linux-stable-4ce6efed48d736e3384c39ff87bda723e1f8e041.zip |
kbuild: soften modpost checks when doing cross builds
The module alias support in the kernel have a consistency
check where it is checked that the size of a structure
in the kernel and on the build host are the same.
For cross builds this check does not make sense so detect
when we do cross builds and silently skip the check in these
situations.
This fixes a build bug for a wireless driver when cross building
for arm.
Acked-by: Michael Buesch <mb@bu3sch.de>
Tested-by: Gordon Farquharson <gordonfarquharson@gmail.com>
Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
Cc: stable@kernel.org
Diffstat (limited to 'scripts/mod/file2alias.c')
-rw-r--r-- | scripts/mod/file2alias.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/scripts/mod/file2alias.c b/scripts/mod/file2alias.c index 9ddf944cce29..348d8687b7c9 100644 --- a/scripts/mod/file2alias.c +++ b/scripts/mod/file2alias.c @@ -51,11 +51,13 @@ do { \ sprintf(str + strlen(str), "*"); \ } while(0) +unsigned int cross_build = 0; /** * Check that sizeof(device_id type) are consistent with size of section * in .o file. If in-consistent then userspace and kernel does not agree * on actual size which is a bug. * Also verify that the final entry in the table is all zeros. + * Ignore both checks if build host differ from target host and size differs. **/ static void device_id_check(const char *modname, const char *device_id, unsigned long size, unsigned long id_size, @@ -64,6 +66,8 @@ static void device_id_check(const char *modname, const char *device_id, int i; if (size % id_size || size < id_size) { + if (cross_build != 0) + return; fatal("%s: sizeof(struct %s_device_id)=%lu is not a modulo " "of the size of section __mod_%s_device_table=%lu.\n" "Fix definition of struct %s_device_id " |