From patchwork Thu Nov 29 21:12:28 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: [4.6] Fix PR libgcc/48076 Date: Thu, 29 Nov 2012 11:12:28 -0000 From: Richard Henderson X-Patchwork-Id: 202826 Message-Id: <50B7CFBC.5010109@redhat.com> To: GCC Patches A different fix is required for 4.6, because the __atomic functions don't exist yet. r~ PR libgcc/48076 * emutls.c (__emutls_get_address): Add memory barrier before referencing emutls_key. diff --git a/gcc/emutls.c b/gcc/emutls.c index b7ee3bd..fcf6eb5 100644 --- a/gcc/emutls.c +++ b/gcc/emutls.c @@ -151,6 +151,9 @@ __emutls_get_address (struct __emutls_object *obj) __gthread_mutex_unlock (&emutls_mutex); } + /* Do not allow emutls_key to be loaded before offset. */ + __sync_synchronize(); + struct __emutls_array *arr = __gthread_getspecific (emutls_key); if (__builtin_expect (arr == NULL, 0)) {