From: mbuesch@freenet.de Date: Thu, 14 Oct 2004 05:38:15 +0000 (-0700) Subject: [PATCH] fix asmlinkage X-Git-Tag: 037~6 X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=commitdiff_plain;h=e5a5b54ab675988febeaa9cd831e21e675d5947b [PATCH] fix asmlinkage This patch fixes the reintroduced bug with the sig_handler(), if we link against a -mregparm=3 compiled klibc on i386. It also fixes some compiler warnings about redefined asmlinkage on some systems. Also some (broken?) compilers on distros throw out warnings if asmlinkage is before "static void". This fixes it, too. --- diff --git a/Makefile b/Makefile index 4107b96a3..4b8df1398 100644 --- a/Makefile +++ b/Makefile @@ -112,7 +112,7 @@ OPTIMIZATION := ${shell if $(CC) -Os -S -o /dev/null -xc /dev/null >/dev/null 2> # add -Wredundant-decls when libsysfs gets cleaned up WARNINGS := -Wall -CFLAGS := -pipe -Dasmlinkage= +CFLAGS := -pipe # set up the proper tdb spinlock code if we can ifeq ($(strip $(ARCH)),i386) diff --git a/udev.c b/udev.c index 78da715fe..94888d6a4 100644 --- a/udev.c +++ b/udev.c @@ -58,7 +58,7 @@ void log_message(int level, const char *format, ...) } #endif -asmlinkage static void sig_handler(int signum) +static void asmlinkage sig_handler(int signum) { switch (signum) { case SIGALRM: diff --git a/udev_lib.h b/udev_lib.h index 2f1965ea3..e9ff379fc 100644 --- a/udev_lib.h +++ b/udev_lib.h @@ -65,6 +65,15 @@ do { \ pos = pos + len + strspn(pos, separator), len = strcspn(pos, separator)) \ if (len > 0) +#ifdef asmlinkage +# undef asmlinkage +#endif +#ifdef __i386__ +# define asmlinkage __attribute__((regparm(0))) +#endif +#ifndef asmlinkage +# define asmlinkage /* nothing */ +#endif extern char *get_action(void); extern char *get_devpath(void); diff --git a/udevd.c b/udevd.c index 380511d47..811f62243 100644 --- a/udevd.c +++ b/udevd.c @@ -309,7 +309,7 @@ skip: return; } -asmlinkage static void sig_handler(int signum) +static void asmlinkage sig_handler(int signum) { int rc;