This is the mail archive of the libc-hacker@sources.redhat.com mailing list for the glibc project.

Note that libc-hacker is a closed list. You may look at the archives of this list, but subscription and posting are not open.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[PATCH] Fix sysdeps/unix/sysv/linux/alpha/sysdep.h for GCC 3.2


Hi!

GCC 3.2 doesn't like asm ("" : "=" "r" (something)); (while GCC 3.3+ does).
The following patch fixes this by putting = into the constraint.
The linuxthreads Makefile is something I needed to make libpthread.so to
build on Alpha.

2003-01-06  Jakub Jelinek  <jakub@redhat.com>

	* sysdeps/unix/sysv/linux/alpha/sysdep.h
	(inline_syscall_r0_constraint): Rename to...
	(inline_syscall_r0_out_constraint): ... this.  Add =.
	(inline_syscall[0-6]): Use inline_syscall_r0_out_constraint
	instead of "=" inline_syscall_r0_constraint.
linuxthreads/
	* sysdeps/unix/sysv/linux/alpha/Makefile: New file.

--- libc/sysdeps/unix/sysv/linux/alpha/sysdep.h.jj	2003-01-05 22:08:49.000000000 +0100
+++ libc/sysdeps/unix/sysv/linux/alpha/sysdep.h	2003-01-06 01:07:33.000000000 +0100
@@ -1,4 +1,5 @@
-/* Copyright (C) 1992, 1993, 1995, 1996, 1997, 2002 Free Software Foundation, Inc.
+/* Copyright (C) 1992, 1993, 1995, 1996, 1997, 2002, 2003
+   Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper, <drepper@gnu.ai.mit.edu>, August 1995.
 
@@ -100,10 +101,10 @@
 
 #ifdef USE_TLS
 #define inline_syscall_r0_asm
-#define inline_syscall_r0_constraint	"v"
+#define inline_syscall_r0_out_constraint	"=v"
 #else
-#define inline_syscall_r0_asm		__asm__("$0")
-#define inline_syscall_r0_constraint	"r"
+#define inline_syscall_r0_asm			__asm__("$0")
+#define inline_syscall_r0_out_constraint	"=r"
 #endif
 
 /* It is moderately important optimization-wise to limit the lifetime
@@ -117,7 +118,7 @@
 								\
 	_sc_0 = __NR_##name;					\
 	__asm__("callsys # %0 %1 <= %2"				\
-		: "=" inline_syscall_r0_constraint (_sc_0),	\
+		: inline_syscall_r0_out_constraint (_sc_0),	\
 	          "=r"(_sc_19)					\
 		: "0"(_sc_0)					\
 		: inline_syscall_clobbers,			\
@@ -134,7 +135,7 @@
 	_sc_0 = __NR_##name;					\
 	_sc_16 = (long) (arg1);					\
 	__asm__("callsys # %0 %1 <= %2 %3"			\
-		: "=" inline_syscall_r0_constraint (_sc_0),	\
+		: inline_syscall_r0_out_constraint (_sc_0),	\
 		  "=r"(_sc_19), "=r"(_sc_16)			\
 		: "0"(_sc_0), "2"(_sc_16)			\
 		: inline_syscall_clobbers,			\
@@ -153,7 +154,7 @@
 	_sc_16 = (long) (arg1);					\
 	_sc_17 = (long) (arg2);					\
 	__asm__("callsys # %0 %1 <= %2 %3 %4"			\
-		: "=" inline_syscall_r0_constraint (_sc_0),	\
+		: inline_syscall_r0_out_constraint (_sc_0),	\
 		  "=r"(_sc_19), "=r"(_sc_16), "=r"(_sc_17)	\
 		: "0"(_sc_0), "2"(_sc_16), "3"(_sc_17)		\
 		: inline_syscall_clobbers,			\
@@ -174,7 +175,7 @@
 	_sc_17 = (long) (arg2);					\
 	_sc_18 = (long) (arg3);					\
 	__asm__("callsys # %0 %1 <= %2 %3 %4 %5"		\
-		: "=" inline_syscall_r0_constraint (_sc_0),	\
+		: inline_syscall_r0_out_constraint (_sc_0),	\
 		  "=r"(_sc_19), "=r"(_sc_16), "=r"(_sc_17),	\
 		  "=r"(_sc_18)					\
 		: "0"(_sc_0), "2"(_sc_16), "3"(_sc_17),		\
@@ -197,7 +198,7 @@
 	_sc_18 = (long) (arg3);					\
 	_sc_19 = (long) (arg4);					\
 	__asm__("callsys # %0 %1 <= %2 %3 %4 %5 %6"		\
-		: "=" inline_syscall_r0_constraint (_sc_0),	\
+		: inline_syscall_r0_out_constraint (_sc_0),	\
 		  "=r"(_sc_19), "=r"(_sc_16), "=r"(_sc_17),	\
 		  "=r"(_sc_18)					\
 		: "0"(_sc_0), "2"(_sc_16), "3"(_sc_17),		\
@@ -222,7 +223,7 @@
 	_sc_19 = (long) (arg4);					\
 	_sc_20 = (long) (arg5);					\
 	__asm__("callsys # %0 %1 <= %2 %3 %4 %5 %6 %7"		\
-		: "=" inline_syscall_r0_constraint (_sc_0),	\
+		: inline_syscall_r0_out_constraint (_sc_0),	\
 		  "=r"(_sc_19), "=r"(_sc_16), "=r"(_sc_17),	\
 		  "=r"(_sc_18),	"=r"(_sc_20)			\
 		: "0"(_sc_0), "2"(_sc_16), "3"(_sc_17),		\
@@ -249,7 +250,7 @@
 	_sc_20 = (long) (arg5);					\
 	_sc_21 = (long) (arg6);					\
 	__asm__("callsys # %0 %1 <= %2 %3 %4 %5 %6 %7 %8"	\
-		: "=" inline_syscall_r0_constraint (_sc_0),	\
+		: inline_syscall_r0_out_constraint (_sc_0),	\
 		  "=r"(_sc_19) "=r"(_sc_16), "=r"(_sc_17),	\
 		  "=r"(_sc_18), "=r"(_sc_20), "=r"(_sc_21)	\
 		: "0"(_sc_0), "2"(_sc_16), "3"(_sc_17),		\
--- libc/linuxthreads/sysdeps/unix/sysv/linux/alpha/Makefile.jj	2003-01-05 22:08:49.000000000 +0100
+++ libc/linuxthreads/sysdeps/unix/sysv/linux/alpha/Makefile	2003-01-06 01:07:33.000000000 +0100
@@ -0,0 +1,3 @@
+ifeq ($(subdir),linuxthreads)
+libpthread-routines += ptw-sysdep ptw-sigblock ptw-sigprocmask ptw-osf_sigprocmask
+endif

	Jakub


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]