This is the mail archive of the libc-alpha@sourceware.org mailing list for the glibc project.


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

Fix compilation of glibc on x86


Compiling current glibc with GCC 4.3 and binutils from CVS, we're seeing
the following error on x86 systems:

pthread_rwlock_trywrlock.c: Assembler messages:
pthread_rwlock_trywrlock.c:45: Error: bad register name `%dil'

The problem is that private a QImode memory is and 'g' does not work for
char, so we need to promote it.

Ok to commit the appended patch?

Andreas

2008-09-08  Richard Guenther  <rguenther@suse.de>

	* nptl/sysdeps/unix/sysv/linux/i386/lowlevellock.h (lll_lock,
	lll_robust_lock, lll_cond_lock, lll_robust_cond_lock,
	lll_timedlock, lll_robust_timedlock, lll_unlock,
	lll_robust_unlock): Promote private to int.


--- nptl/sysdeps/unix/sysv/linux/i386/lowlevellock.h.orig	2008-09-08 13:31:23.000000000 +0200
+++ nptl/sysdeps/unix/sysv/linux/i386/lowlevellock.h	2008-09-08 13:36:57.000000000 +0200
@@ -323,7 +323,7 @@
 			       "=m" (futex), "=&d" (ignore3) 		      \
 			     : "1" (1), "m" (futex),			      \
 			       "i" (MULTIPLE_THREADS_OFFSET), "0" (0),	      \
-			       "g" (private)				      \
+			       "g" ((int)(private))			      \
 			     : "memory");				      \
 	 }								      \
     })
@@ -345,7 +345,7 @@
 		       "18:"						      \
 		       : "=a" (result), "=c" (ignore1), "=m" (futex),	      \
 			 "=&d" (ignore2)				      \
-		       : "0" (0), "1" (id), "m" (futex), "g" (private)	      \
+		       : "0" (0), "1" (id), "m" (futex), "g" ((int)(private)) \
 		       : "memory");					      \
      result; })
 
@@ -370,7 +370,7 @@
 			 "18:"						      \
 			 : "=a" (ignore1), "=c" (ignore2), "=m" (futex),      \
 			   "=&d" (ignore3)				      \
-			 : "0" (0), "1" (2), "m" (futex), "g" (private)	      \
+			 : "0" (0), "1" (2), "m" (futex), "g" ((int)(private))\
 			 : "memory");					      \
     })
 
@@ -393,7 +393,7 @@
 		       : "=a" (result), "=c" (ignore1), "=m" (futex),	      \
 			 "=&d" (ignore2)				      \
 		       : "0" (0), "1" (id | FUTEX_WAITERS), "m" (futex),      \
-			 "g" (private)					      \
+			 "g" ((int)(private))				      \
 		       : "memory");					      \
      result; })
 
@@ -416,7 +416,7 @@
 		       : "=a" (result), "=c" (ignore1), "=&d" (ignore2),      \
 			 "=m" (futex), "=S" (ignore3)			      \
 		       : "0" (0), "1" (1), "m" (futex), "m" (timeout),	      \
-			 "4" (private)					      \
+			 "4" ((int)(private))				      \
 		       : "memory");					      \
      result; })
 
@@ -439,7 +439,7 @@
 		       : "=a" (result), "=c" (ignore1), "=&d" (ignore2),      \
 			 "=m" (futex), "=S" (ignore3)			      \
 		       : "0" (0), "1" (id), "m" (futex), "m" (timeout),	      \
-			 "4" (private)					      \
+			 "4" ((int)(private))				      \
 		       : "memory");					      \
      result; })
 
@@ -489,7 +489,7 @@
 			     "18:"					      \
 			     : "=m" (futex), "=&a" (ignore), "=&c" (ignore2)  \
 			     : "i" (MULTIPLE_THREADS_OFFSET), "m" (futex),    \
-			       "g" (private)				      \
+			       "g" ((int)(private))			      \
 			     : "memory");				      \
 	 }								      \
     })
@@ -511,7 +511,8 @@
 			 LLL_STUB_UNWIND_INFO_4				      \
 			 "18:"						      \
 			 : "=m" (futex), "=&a" (ignore), "=&c" (ignore2)      \
-			 : "i" (FUTEX_WAITERS), "m" (futex), "g" (private)    \
+			 : "i" (FUTEX_WAITERS), "m" (futex),		      \
+			   "g" ((int)(private))				      \
 			 : "memory");					      \
     })
 


-- 
 Andreas Jaeger, Director Platform / openSUSE, aj@suse.de
  SUSE LINUX Products GmbH, GF: Markus Rex, HRB 16746 (AG Nürnberg)
   Maxfeldstr. 5, 90409 Nürnberg, Germany
    GPG fingerprint = 93A3 365E CE47 B889 DF7F  FED1 389A 563C C272 A126

Attachment: pgp00000.pgp
Description: PGP signature


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