Use weak __thread declarations in parlib-compat (XCC)
authorBarret Rhoden <brho@cs.berkeley.edu>
Thu, 20 Apr 2017 17:48:01 +0000 (13:48 -0400)
committerBarret Rhoden <brho@cs.berkeley.edu>
Wed, 3 May 2017 16:13:02 +0000 (12:13 -0400)
The weak_alias() macro doesn't work well with the __thread keyword.  We can
just do the weak attribute manually.  This pops up as a bug if we ever
include a header that has the real __thread declaration in parlib-compat.c.

Rebuild glibc at your leisure.

Signed-off-by: Barret Rhoden <brho@cs.berkeley.edu>
tools/compilers/gcc-glibc/glibc-2.19-akaros/sysdeps/akaros/parlib-compat.c

index 448973d..2c6f0fc 100644 (file)
  * functions that ld.so calls.  See the notes below for more info. */
 
 __thread int __weak_vcoreid = 0;
-weak_alias(__weak_vcoreid, __vcoreid);
+extern __thread int __vcoreid __attribute__ ((weak, alias ("__weak_vcoreid")));
 
 __thread bool __weak_vcore_context = FALSE;
-weak_alias(__weak_vcore_context, __vcore_context);
+extern __thread bool __vcore_context
+       __attribute__ ((weak, alias ("__weak_vcore_context")));
 
 int __akaros_printf(const char *format, ...)
 {