From c515fb5148f1d81d5f7736825e14c7502c15432a Mon Sep 17 00:00:00 2001 From: "H.J. Lu" Date: Mon, 26 Nov 2012 16:42:38 -0800 Subject: Cast to __intptr_t before casting pointer to int64 --- nptl/ChangeLog | 11 +++++++++++ nptl/sysdeps/i386/tls.h | 5 +++-- nptl/sysdeps/x86_64/tls.h | 5 +++-- nptl/unwind.c | 2 +- 4 files changed, 18 insertions(+), 5 deletions(-) (limited to 'nptl') diff --git a/nptl/ChangeLog b/nptl/ChangeLog index 7c8736cac3..a9b00e7c78 100644 --- a/nptl/ChangeLog +++ b/nptl/ChangeLog @@ -1,3 +1,14 @@ +2012-11-26 H.J. Lu + + * unwind.c (__pthread_unwind): Pass address of unwind_cleanup + to THREAD_SETMEM. + * sysdeps/i386/tls.h: Include . + (THREAD_SETMEM): Use cast_to_integer before casting to uint64_t. + (THREAD_SETMEM_NC): Likewise. + * sysdeps/x86_64/tls.h: Include . + (THREAD_SETMEM): Use cast_to_integer before casting to uint64_t. + (THREAD_SETMEM_NC): Likewise. + 2012-11-21 Joseph Myers * sysdeps/unix/sysv/linux/sem_post.c (__old_sem_post): Cast result diff --git a/nptl/sysdeps/i386/tls.h b/nptl/sysdeps/i386/tls.h index eb1ca312f9..90c7a534bf 100644 --- a/nptl/sysdeps/i386/tls.h +++ b/nptl/sysdeps/i386/tls.h @@ -26,6 +26,7 @@ # include # include # include +# include # include @@ -343,7 +344,7 @@ union user_desc_init \ asm volatile ("movl %%eax,%%gs:%P1\n\t" \ "movl %%edx,%%gs:%P2" : \ - : "A" ((uint64_t) (value)), \ + : "A" ((uint64_t) cast_to_integer (value)), \ "i" (offsetof (struct pthread, member)), \ "i" (offsetof (struct pthread, member) + 4)); \ }}) @@ -370,7 +371,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) (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 bc60a511fb..f3b76495b3 100644 --- a/nptl/sysdeps/x86_64/tls.h +++ b/nptl/sysdeps/x86_64/tls.h @@ -26,6 +26,7 @@ # include # include # include +# include # include /* Replacement type for __m128 since this file is included by ld.so, @@ -263,7 +264,7 @@ typedef struct abort (); \ \ asm volatile ("movq %q0,%%fs:%P1" : \ - : IMM_MODE ((uint64_t) (value)), \ + : IMM_MODE ((uint64_t) cast_to_integer (value)), \ "i" (offsetof (struct pthread, member))); \ }}) @@ -288,7 +289,7 @@ typedef struct abort (); \ \ asm volatile ("movq %q0,%%fs:%P1(,%q2,8)" : \ - : IMM_MODE ((uint64_t) (value)), \ + : IMM_MODE ((uint64_t) cast_to_integer (value)), \ "i" (offsetof (struct pthread, member[0])), \ "r" (idx)); \ }}) diff --git a/nptl/unwind.c b/nptl/unwind.c index 7ccb21382b..aedd037452 100644 --- a/nptl/unwind.c +++ b/nptl/unwind.c @@ -124,7 +124,7 @@ __pthread_unwind (__pthread_unwind_buf_t *buf) /* This is not a catchable exception, so don't provide any details about the exception type. We do need to initialize the field though. */ THREAD_SETMEM (self, exc.exception_class, 0); - THREAD_SETMEM (self, exc.exception_cleanup, unwind_cleanup); + THREAD_SETMEM (self, exc.exception_cleanup, &unwind_cleanup); _Unwind_ForcedUnwind (&self->exc, unwind_stop, ibuf); #else -- cgit 1.4.1