This is the mail archive of the
glibc-cvs@sourceware.org
mailing list for the glibc project.
GNU C Library master sources branch hjl/pointer updated. glibc-2.16-ports-merge-773-gf10294d
- From: hjl at sourceware dot org
- To: glibc-cvs at sourceware dot org
- Date: 26 Nov 2012 18:36:44 -0000
- Subject: GNU C Library master sources branch hjl/pointer updated. glibc-2.16-ports-merge-773-gf10294d
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GNU C Library master sources".
The branch, hjl/pointer has been updated
via f10294d3c55a2d8c15e51cb2dbc2a41f908f3fa8 (commit)
from 6a77943153843e1dc8ab8642085344f199ed40e0 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
http://sources.redhat.com/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=f10294d3c55a2d8c15e51cb2dbc2a41f908f3fa8
commit f10294d3c55a2d8c15e51cb2dbc2a41f908f3fa8
Author: H.J. Lu <hjl.tools@gmail.com>
Date: Mon Nov 26 10:36:24 2012 -0800
Add and use cast_to_integer
diff --git a/ChangeLog.hjl b/ChangeLog.hjl
index 430ac65..dfc0297 100644
--- a/ChangeLog.hjl
+++ b/ChangeLog.hjl
@@ -3,10 +3,11 @@
* elf/dl-load.c (_dl_map_object_from_fd): Cast to uintptr_t
before casting to void *.
* include/sys/cdefs.h (__pointer_type): New macro.
- (__real_type_sub): Likewise.
- (__real_type): Likewise.
+ (__integer_if_pointer_type_sub): Likewise.
+ (__integer_if_pointer_type): Likewise.
+ (cast_to_integer): Likewise.
* sysdeps/x86_64/bits/atomic.h
- (__arch_c_compare_and_exchange_val_64_acq): Cast to __real_type
+ (__arch_c_compare_and_exchange_val_64_acq): Use cast_to_integer
before casting to atomic64_t.
(atomic_exchange_acq): Likewise.
(__arch_exchange_and_add_body): Likewise.
@@ -20,7 +21,7 @@ nptl/
* unwind.c (__pthread_unwind): Pass address of unwind_cleanup
to THREAD_SETMEM.
- * sysdeps/i386/tls.h (THREAD_SETMEM): Cast to __real_type before
+ * sysdeps/i386/tls.h (THREAD_SETMEM): Use cast_to_integer before
casting to uint64_t.
(THREAD_SETMEM_NC): Likewise.
* sysdeps/x86_64/tls.h (THREAD_SETMEM): Likewise.
diff --git a/include/sys/cdefs.h b/include/sys/cdefs.h
index 6685fbf..5d96464 100644
--- a/include/sys/cdefs.h
+++ b/include/sys/cdefs.h
@@ -31,3 +31,6 @@ rtld_hidden_proto (__chk_fail)
#define __integer_if_pointer_type(expr) \
__integer_if_pointer_type_sub(__typeof__ ((__typeof__ (expr)) 0), \
__pointer_type (__typeof__ (expr)))
+
+/* Cast an integer or a pointer VAL to integer with proper type. */
+#define cast_to_integer(val) ((__integer_if_pointer_type (val)) (val))
diff --git a/nptl/sysdeps/i386/tls.h b/nptl/sysdeps/i386/tls.h
index 98bafdb..96a2708 100644
--- a/nptl/sysdeps/i386/tls.h
+++ b/nptl/sysdeps/i386/tls.h
@@ -343,7 +343,7 @@ union user_desc_init
\
asm volatile ("movl %%eax,%%gs:%P1\n\t" \
"movl %%edx,%%gs:%P2" : \
- : "A" ((uint64_t) (__integer_if_pointer_type (value)) (value)),\
+ : "A" ((uint64_t) cast_to_integer (value)), \
"i" (offsetof (struct pthread, member)), \
"i" (offsetof (struct pthread, member) + 4)); \
}})
@@ -370,7 +370,7 @@ union user_desc_init
\
asm volatile ("movl %%eax,%%gs:%P1(,%2,8)\n\t" \
"movl %%edx,%%gs:4+%P1(,%2,8)" : \
- : "A" ((uint64_t) (__integer_if_pointer_type (value)) (value)),\
+ : "A" ((uint64_t) cast_to_integer (value)), \
"i" (offsetof (struct pthread, member)), \
"r" (idx)); \
}})
diff --git a/nptl/sysdeps/x86_64/tls.h b/nptl/sysdeps/x86_64/tls.h
index 23675b3..ee0b6c0 100644
--- a/nptl/sysdeps/x86_64/tls.h
+++ b/nptl/sysdeps/x86_64/tls.h
@@ -263,7 +263,7 @@ typedef struct
abort (); \
\
asm volatile ("movq %q0,%%fs:%P1" : \
- : IMM_MODE ((uint64_t) (__integer_if_pointer_type (value)) (value)),\
+ : IMM_MODE ((uint64_t) cast_to_integer (value)), \
"i" (offsetof (struct pthread, member))); \
}})
@@ -288,7 +288,7 @@ typedef struct
abort (); \
\
asm volatile ("movq %q0,%%fs:%P1(,%q2,8)" : \
- : IMM_MODE ((uint64_t) (__integer_if_pointer_type (value)) (value)),\
+ : IMM_MODE ((uint64_t) cast_to_integer (value)), \
"i" (offsetof (struct pthread, member[0])), \
"r" (idx)); \
}})
diff --git a/sysdeps/x86_64/bits/atomic.h b/sysdeps/x86_64/bits/atomic.h
index 4c7efd8..81456ed 100644
--- a/sysdeps/x86_64/bits/atomic.h
+++ b/sysdeps/x86_64/bits/atomic.h
@@ -101,9 +101,9 @@ typedef uintmax_t uatomic_max_t;
"lock\n" \
"0:\tcmpxchgq %q2, %1" \
: "=a" (ret), "=m" (*mem) \
- : "q" ((atomic64_t) (__integer_if_pointer_type (newval)) (newval)),\
+ : "q" ((atomic64_t) cast_to_integer (newval)), \
"m" (*mem), \
- "0" ((atomic64_t) (__integer_if_pointer_type (oldval)) (oldval)),\
+ "0" ((atomic64_t) cast_to_integer (oldval)), \
"i" (offsetof (tcbhead_t, multiple_threads))); \
ret; })
@@ -126,7 +126,7 @@ typedef uintmax_t uatomic_max_t;
else \
__asm __volatile ("xchgq %q0, %1" \
: "=r" (result), "=m" (*mem) \
- : "0" ((atomic64_t) (__integer_if_pointer_type (newvalue)) (newvalue)),\
+ : "0" ((atomic64_t) cast_to_integer (newvalue)), \
"m" (*mem)); \
result; })
@@ -151,7 +151,7 @@ typedef uintmax_t uatomic_max_t;
else \
__asm __volatile (lock "xaddq %q0, %1" \
: "=r" (result), "=m" (*mem) \
- : "0" ((atomic64_t) (__integer_if_pointer_type (value)) (value)),\
+ : "0" ((atomic64_t) cast_to_integer (value)), \
"m" (*mem), \
"i" (offsetof (tcbhead_t, multiple_threads))); \
result; })
@@ -190,7 +190,7 @@ typedef uintmax_t uatomic_max_t;
else \
__asm __volatile (lock "addq %q1, %0" \
: "=m" (*mem) \
- : "ir" ((atomic64_t) (__integer_if_pointer_type (value)) (value)),\
+ : "ir" ((atomic64_t) cast_to_integer (value)), \
"m" (*mem), \
"i" (offsetof (tcbhead_t, multiple_threads))); \
} while (0)
@@ -222,7 +222,7 @@ typedef uintmax_t uatomic_max_t;
else \
__asm __volatile (LOCK_PREFIX "addq %q2, %0; sets %1" \
: "=m" (*mem), "=qm" (__result) \
- : "ir" ((atomic64_t) (__integer_if_pointer_type (value)) (value)),\
+ : "ir" ((atomic64_t) cast_to_integer (value)), \
"m" (*mem)); \
__result; })
@@ -244,7 +244,7 @@ typedef uintmax_t uatomic_max_t;
else \
__asm __volatile (LOCK_PREFIX "addq %q2, %0; setz %1" \
: "=m" (*mem), "=qm" (__result) \
- : "ir" ((atomic64_t) (__integer_if_pointer_type (value)) (value)),\
+ : "ir" ((atomic64_t) cast_to_integer (value)), \
"m" (*mem)); \
__result; })
-----------------------------------------------------------------------
Summary of changes:
ChangeLog.hjl | 9 +++++----
include/sys/cdefs.h | 3 +++
nptl/sysdeps/i386/tls.h | 4 ++--
nptl/sysdeps/x86_64/tls.h | 4 ++--
sysdeps/x86_64/bits/atomic.h | 14 +++++++-------
5 files changed, 19 insertions(+), 15 deletions(-)
hooks/post-receive
--
GNU C Library master sources