Fix compilation of glibc on x86
Andreas Jaeger
aj@suse.de
Mon Sep 8 12:14:00 GMT 2008
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
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 188 bytes
Desc: not available
URL: <http://sourceware.org/pipermail/libc-alpha/attachments/20080908/82b10c98/attachment.sig>
More information about the Libc-alpha
mailing list