Re: Modutils patch needs some more work?
On Sat, 4 Oct 2003 15:07:23 +0200,
Arnd Bergmann <arnd@arndb.de> wrote:
>Actually, the problem is a little more tricky. The modutils already handle
>pointers in device_id fields correctly for anything except ieee1394.
>The problem here is padding: on ia32, uint64_t variables are 4 byte aligned,
>while they are 8 byte aligned on amd64 and the compiler there inserts
>an empty word between version and driver_data.
>
>Can you check if this patch fixes the problem without breaking for
>32 bit kernels?
>
> Arnd <><
>
>--- ./depmod/depmod.c 2003-10-04 14:59:11.000000000 +0200
>+++ ./depmod/depmod.c.orig 2003-10-04 14:58:37.000000000 +0200
>@@ -198,7 +198,7 @@
> __u32 model_id;
> __u32 specifier_id;
> __u32 version;
>- ElfW(Addr) driver_data;
>+ ElfW(Addr) driver_data __attribute__((aligned(sizeof(ElfW(Addr)))));
> };
>
> /*
info gcc says "The `aligned' attribute can only increase the alignment;
but you can decrease it by specifying `packed' as well". Try
ElfW(Addr) driver_data __attribute__ ((packed));
The kernel structure will require a corresponding __attribute__ ((packed));
Reply to: