2.6.24-git18 build fails section type conflict psmouse-base
Subsystems (2)
Hi,
The 2.6.24-git18 kernel build fails on the power machine with following message
drivers/input/mouse/psmouse-base.c:44: error: __param_proto causes a section type conflict drivers/input/mouse/psmouse-base.c:44: error: __param_proto causes a section type conflict make[3]: *** [drivers/input/mouse/psmouse-base.o] Error 1
make[2]: *** [drivers/input/mouse] Error 2
make[1]: *** [drivers/input] Error 2
make: *** [drivers] Error 2
this failure was reported earlier http://lkml.org/lkml/2007/9/22/64
Signature · 4 lines
Thanks & Regards, Kamalesh Babulal, Linux Technology Center, IBM, ISTL.
Quoted 4 lines · Kamalesh Babulal
Hi,
The 2.6.24-git18 kernel build fails on the power machine with following message
Quoted 8 lines
drivers/input/mouse/psmouse-base.c:44: error:__param_protocauses a section type conflictdrivers/input/mouse/psmouse-base.c:44: error:__param_protocauses a section type conflict make[3]: *** [drivers/input/mouse/psmouse-base.o] Error 1
make[2]: *** [drivers/input/mouse] Error 2
make[1]: *** [drivers/input] Error 2
make: *** [drivers] Error 2this failure was reported earlier http://lkml.org/lkml/2007/9/22/64
You need the patch from [1] manually applied (due to changed context) and with " || defined(__powerpc__)" added for getting it compiling.
@Rusty:
Can you look at this issue? It's a modules problem on 3 architectures.
cu
Adrian
[1] http://lkml.org/lkml/2007/12/27/29
Signature · 4 lines
"Is there not promise of rain?" Ling Tan asked suddenly out
of the darkness. There had been need of rain for many days.
"Only a promise," Lao Er said.
Pearl S. Buck - Dragon SeedQuoted 17 lines · Adrian Bunk
Quoted 4 lines · Kamalesh Babulal
Hi,
The 2.6.24-git18 kernel build fails on the power machine with following message
Quoted 8 lines
drivers/input/mouse/psmouse-base.c:44: error:__param_protocauses a section type conflictdrivers/input/mouse/psmouse-base.c:44: error:__param_protocauses a section type conflict make[3]: *** [drivers/input/mouse/psmouse-base.o] Error 1
make[2]: *** [drivers/input/mouse] Error 2
make[1]: *** [drivers/input] Error 2
make: *** [drivers] Error 2this failure was reported earlier http://lkml.org/lkml/2007/9/22/64
You need the patch from [1] manually applied (due to changed context) and with " ||
defined(__powerpc__)" added for getting it compiling.
Quoted 8 lines
@Rusty:
Can you look at this issue? It's a modules problem on 3 architectures.cu
Adrian
I tried manually applying the patch and added ||defined(__powerpc__), the above build failure was resolved but it started failing at another place,
CC kernel/printk.okernel/printk.c:568: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘static’ make[1]: *** [kernel/printk.o] Error 1
make: *** [kernel] Error 2
Signature · 8 lines
Thanks & Regards, Kamalesh Babulal, Linux Technology Center, IBM, ISTL. - To unsubscribe from this list: send the line "unsubscribe linux-input" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
Quoted 26 lines · Kamalesh Babulal
Quoted 17 lines · Adrian Bunk
Quoted 4 lines · Kamalesh Babulal
Hi,
The 2.6.24-git18 kernel build fails on the power machine with following message
Quoted 8 lines
drivers/input/mouse/psmouse-base.c:44: error:__param_protocauses a section type conflictdrivers/input/mouse/psmouse-base.c:44: error:__param_protocauses a section type conflict make[3]: *** [drivers/input/mouse/psmouse-base.o] Error 1
make[2]: *** [drivers/input/mouse] Error 2
make[1]: *** [drivers/input] Error 2
make: *** [drivers] Error 2this failure was reported earlier http://lkml.org/lkml/2007/9/22/64
You need the patch from [1] manually applied (due to changed context) and with " ||
defined(__powerpc__)" added for getting it compiling.Quoted 8 lines
@Rusty:
Can you look at this issue? It's a modules problem on 3 architectures.cu
Adrian
Quoted 7 lines
I tried manually applying the patch and added ||defined(__powerpc__), the above build failure was resolved but it started failing at another place,
CC
kernel/printk.okernel/printk.c:568: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘static’ make[1]: *** [kernel/printk.o] Error 1
make: *** [kernel] Error 2
Below is what worked for me (based on Ivan's patch).
The comment is wrong now, the #if's should refer to kconfig variables, and I don't know whether this patch is really the best solution.
cu
Adrian
1fffe660ace75bd875fc23f7b2121d7341f08464 diff --git a/include/linux/moduleparam.h b/include/linux/moduleparam.h index 8126e55..d17ce12 100644
include/linux/moduleparam.h +10 -1
@@ -62,6 +62,15 @@ struct kparam_arrayvoid *elem; }; +/* On alpha and ia64 relocations to global data cannot go into read-only +sections, so 'const' makes no sense and even causes compile failures +with some compilers. */ +#if defined(__alpha__) || defined(__ia64__) || defined(__powerpc__) +#define __moduleparam_const +#else +#define __moduleparam_const const +#endif +/* This is the fundamental function for registering boot/module parameters. perm sets the visibility in sysfs: 000 means it's not there, read bits mean it's readable, write bits mean it's
@@ -71,7 +80,7 @@ struct kparam_array static int __param_perm_check_##name __attribute__((unused)) = \ BUILD_BUG_ON_ZERO((perm) < 0 || (perm) > 0777 || ((perm) & 2)); \ static const char __param_str_##name[] = prefix #name; \ - static struct kernel_param const __param_##name \ + static struct kernel_param __moduleparam_const __param_##name \ __used \ __attribute__ ((unused,__section__ ("__param"),aligned(sizeof(void *)))) \ = { __param_str_##name, perm, set, get, { arg } }
-
To unsubscribe from this list: send the line "unsubscribe linux-input" in the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html
Quoted 64 lines · Adrian Bunk
Quoted 25 lines · Kamalesh Babulal
Quoted 16 lines · Adrian Bunk
Quoted 4 lines · Kamalesh Babulal
Hi,
The 2.6.24-git18 kernel build fails on the power machine with following message
Quoted 8 lines
drivers/input/mouse/psmouse-base.c:44: error:__param_protocauses a section type conflictdrivers/input/mouse/psmouse-base.c:44: error:__param_protocauses a section type conflict make[3]: *** [drivers/input/mouse/psmouse-base.o] Error 1
make[2]: *** [drivers/input/mouse] Error 2
make[1]: *** [drivers/input] Error 2
make: *** [drivers] Error 2this failure was reported earlier http://lkml.org/lkml/2007/9/22/64
You need the patch from [1] manually applied (due to changed context) and with " ||
defined(__powerpc__)" added for getting it compiling.Quoted 8 lines
@Rusty:
Can you look at this issue? It's a modules problem on 3 architectures.cu
AdrianQuoted 7 lines
I tried manually applying the patch and added ||defined(__powerpc__), the above build failure was resolved but it started failing at another place,
CC
kernel/printk.okernel/printk.c:568: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘static’ make[1]: *** [kernel/printk.o] Error 1
make: *** [kernel] Error 2Below is what worked for me (based on Ivan's patch).
The comment is wrong now, the #if's should refer to kconfig variables, and I don't know whether this patch is really the best solution.
cu
Adrian
1fffe660ace75bd875fc23f7b2121d7341f08464diff --gita/include/linux/moduleparam.hb/include/linux/moduleparam.hindex 8126e55..d17ce12 100644include/linux/moduleparam.h +9
-0@@ -62,6 +62,15 @@ struct kparam_arrayvoid *elem; }; +/* On alpha and ia64 relocations to global data cannot go into read-only +sections, so 'const' makes no sense and even causes compile failures +with some compilers. */ +#if defined(__alpha__) || defined(__ia64__) || defined(__powerpc__) +#define __moduleparam_const +#else +#define __moduleparam_const const +#endif +/* This is the fundamental function for registering boot/module parameters. perm sets the visibility in sysfs: 000 means it's not there, read bits mean it's readable, write bits mean it's
include/linux/moduleparam.h struct kparam_array
Quoted 9 lines
include/linux/moduleparam.h +1
-2@@ -71,7 +80,7 @@ struct kparam_array static int __param_perm_check_##name __attribute__((unused)) = \ BUILD_BUG_ON_ZERO((perm) < 0 || (perm) > 0777 || ((perm) & 2)); \ static const char __param_str_##name[] = prefix #name; \ - static struct kernel_param const __param_##name \ + static struct kernel_param __moduleparam_const __param_##name \ __used \ __attribute__ ((unused,__section__ ("__param"),aligned(sizeof(void *)))) \ = { __param_str_##name, perm, set, get, { arg } } --
Hi Adrian,
Thanks the patch resolves the problem, I had a typo when applied the manually :-(.
Signature · 8 lines
Thanks & Regards, Kamalesh Babulal, Linux Technology Center, IBM, ISTL. - To unsubscribe from this list: send the line "unsubscribe linux-input" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
Quoted 3 lines · Adrian Bunk
Quoted 3 lines
Quoted 3 lines · Kamalesh Babulal
Quoted 2 lines
The 2.6.24-git18 kernel build fails on the power machine with following message
drivers/input/mouse/psmouse-base.c:44: error:__param_protocauses a section type conflict
My fault - I somehow overlooked that ppc64 is the club member...
Quoted 2 lines
The comment is wrong now, the #if's should refer to kconfig variables, and I don't know whether this patch is really the best solution.
I think it's the best, because it at least points at some of the problems which arise when you blindly rely on some undocumented behaviour of __attribute__(section()) on certain platform, and assume it's the same for the rest of the world...
Alternatives are:
- drop the 'const' qualifier from that macro unconditionally, so that __param section gets read/write on all arches. I'd be fine with it, but then we'll probably have the same problem again and again...
- make the offending module_param functions global (psmouse and 3-4 other places). But how do you explain that to driver writers? These functions are logically private to this particular module, so it's obviously not the same as "we don't export static functions", though underlying problem is precisely the same on our three platforms...
- hack up gcc. But I don't even have a proposal, because it's not a bug from gcc point of view. Ideally, I'd like to pass some extra parameters to __attribute__(section()), like r/w control and some equivalent of -fno-jump-tables...
Oh, well. Updated patch in a minute.
Ivan.
Quoted 11 lines · On Friday 08 February 2008 21:48:51 Adrian Bunk wrote:
Quoted 3 lines · Kamalesh Babulal
drivers/input/mouse/psmouse-base.c:44: error:__param_protocauses a section type conflictdrivers/input/mouse/psmouse-base.c:44: error:__param_protocauses a section type conflict@Rusty:
Can you look at this issue? It's a modules problem on 3 architectures.cu
Adrian
Erk... This is horrible, and arguably something gcc should try to deal with. How about we just drop the const and add a comment, rather than breaking one arch at a time?
Thanks,
Rusty.
Quoted 8 lines · Rusty Russell
Quoted 7 lines · On Friday 08 February 2008 21:48:51 Adrian Bunk wrote:
Quoted 3 lines · Kamalesh Babulal
drivers/input/mouse/psmouse-base.c:44: error:__param_protocauses a section type conflictdrivers/input/mouse/psmouse-base.c:44: error:__param_protocauses a section type conflict@Rusty:
Can you look at this issue? It's a modules problem on 3 architectures.
Quoted 8 lines
Quoted 4 lines
cu
AdrianErk... This is horrible, and arguably something gcc should try to deal with. How about we just drop the const and add a comment, rather than breaking one arch at a time?
We should have caught all architectures having problems, and a slightly improved patch is now in Linus' tree.
Quoted 2 lines
Thanks,
Rusty.
cu
Adrian
Signature · 4 lines
"Is there not promise of rain?" Ling Tan asked suddenly out
of the darkness. There had been need of rain for many days.
"Only a promise," Lao Er said.
Pearl S. Buck - Dragon SeedQuoted 7 lines · On Monday 03 March 2008 19:13:45 Adrian Bunk wrote:
Quoted 3 lines · Rusty Russell
Erk... This is horrible, and arguably something gcc should try to deal with. How about we just drop the const and add a comment, rather than breaking one arch at a time?
We should have caught all architectures having problems, and a slightly improved patch is now in Linus' tree.
Yes, thanks, I saw it later on in the thread. 'Tis still horrible tho :)
Rusty.