On Sun, Sep 30, 2007 at 11:42:20AM +0300, Meelis Roos wrote:
> After I applied the psmouse-base section fix (thanks!), I wuickly ran 
> into another compile problem with gcc-4.2 on alpha:
> 
>   CC [M]  drivers/input/gameport/gameport.o
> drivers/input/gameport/gameport.c:42: error: __ksymtab_gameport_set_name 
> causes a section type conflict
> drivers/input/gameport/gameport.c:41: error: __ksymtab_gameport_cooked_read 
> causes a section type conflict
> 

Maybe it's the same as:
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=31490

I have narrowed it down to the following code snippet. But now the complain are 
for a different parameter.
But do not have time to persuade it further.
Do you have time to simplify the code snippet and persuade the gcc people?
PS. cc: rth as he are in both camps.

        Sam

The following code result in:
alpha.c:45: error: __param_resolution causes a section type conflict

With gcc:
alpha-unknown-linux-gnu-gcc (GCC) 4.2.1

It was build using Dan Kegel's crosstool so I dunno about the exact configure 
options used.


gcc (GCC) 4.1.2 20070502 (Red Hat 4.1.2-12) on x86_64 does not issue this error 
on the same code snippet.
sam-gcc (GCC) 4.2.1 on x86_64 does neither issue same error.
sam-gcc I did built myself with:
configure --prefix=/home/sam/usr/local --program-prefix=sam- 
--target=alpha-linux





struct kernel_param;


typedef int (*param_set_fn)(const char *val, struct kernel_param *kp);

typedef int (*param_get_fn)(char *buffer, struct kernel_param *kp);

struct kernel_param {
 const char *name;
 unsigned int perm;
 param_set_fn set;
 param_get_fn get;
 void *arg;
};


extern int param_set_uint(const char *val, struct kernel_param *kp);
extern int param_get_uint(char *buffer, struct kernel_param *kp);



static const char __mod_author35[] __attribute__((__used__)) 
__attribute__((section(".modinfo"),unused)) = "author" "=" "Vojtech Pavlik 
<[EMAIL PROTECTED]>";
static const char __mod_description36[] __attribute__((__used__)) 
__attribute__((section(".modinfo"),unused)) = "description" "=" "PS/2 mouse 
driver";
static const char __mod_license37[] __attribute__((__used__)) 
__attribute__((section(".modinfo"),unused)) = "license" "=" "GPL";

static unsigned int psmouse_max_proto = 1;
static int psmouse_set_maxproto(const char *val, struct kernel_param *kp) {};
static int psmouse_get_maxproto(char *buffer, struct kernel_param *kp) {};



static inline unsigned int *__check_proto(void) { return(&(psmouse_max_proto)); 
};
static int __param_perm_check_proto __attribute__((unused)) = (sizeof(char[1 - 
2 * !!((0644) < 0 || (0644) > 0777 || ((0644) & 2))]) - 1);
static char __param_str_proto[] = "proto";
static struct kernel_param const __param_proto __attribute__((__used__)) 
__attribute__ ((unused,__section__ ("__param"),aligned(sizeof(void *)))) = 
{ __param_str_proto, 0644, psmouse_set_maxproto, psmouse_get_maxproto, 
&psmouse_max_proto };
static const char __mod_prototype45[] __attribute__((__used__)) 
__attribute__((section(".modinfo"),unused)) = "parmtype" "=" "proto" ":" 
"proto_abbrev";
static const char __mod_proto46[] __attribute__((__used__)) 
__attribute__((section(".modinfo"),unused)) = "parm" "=" "proto" ":" "Highest 
protocol extension to probe (bare, imps, exps, any). Useful for KVM switches.";

static unsigned int psmouse_resolution = 200;
static inline unsigned int *__check_resolution(void) { 
return(&(psmouse_resolution)); };
static int __param_perm_check_resolution __attribute__((unused)) = 
(sizeof(char[1 - 2 * !!((0644) < 0 || (0644) > 0777 || ((0644) & 2))]) - 1);
static char __param_str_resolution[] = "resolution";
static struct kernel_param const __param_resolution __attribute__((__used__)) 
__attribute__ ((unused,__section__ ("__param"),aligned(sizeof(void *)))) =
{ __param_str_resolution, 0644, param_set_uint, param_get_uint, 
&psmouse_resolution };
static const char __mod_resolutiontype49[] __attribute__((__used__)) 
__attribute__((section(".modinfo"),unused)) = "parmtype" "=" "resolution" ":" 
"uint";
static const char __mod_resolution50[] __attribute__((__used__)) 
__attribute__((section(".modinfo"),unused)) = "parm" "=" "resolution" ":" 
"Resolution, in dpi.";
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to