lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Date:	Sun, 30 Sep 2007 11:53:46 +0200
From:	Sam Ravnborg <sam@...nborg.org>
To:	Meelis Roos <mroos@...ux.ee>
Cc:	Linux Kernel list <linux-kernel@...r.kernel.org>, rth@...ddle.net
Subject: Re: another gcc-4.2 compile problem on alpha: gameport

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 <vojtech@...e.cz>";
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 majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ