Fixed tls bug for addressing tls variables
authorKevin Klues <klueska@ros-dev.(none)>
Sat, 3 Apr 2010 02:47:33 +0000 (19:47 -0700)
committerKevin Klues <klueska@cs.berkeley.edu>
Thu, 3 Nov 2011 00:35:39 +0000 (17:35 -0700)
Also fixed bug with CFLAGS vs. KERN_CFLAGS and USER_CFLAGS
You need to rebuild your cross compiler if you checkout this commit.

GNUmakefile
kern/src/Makefrag
tools/compilers/gcc-glibc/glibc-2.11.1-ros/sysdeps/ros/i386/tls.h
user/Makefrag

index 4c9b499..796c5c6 100644 (file)
@@ -114,10 +114,10 @@ endif
 # Universal compiler flags
 # -fno-builtin is required to avoid refs to undefined functions in the kernel.
 # Only optimize to -O1 to discourage inlining, which complicates backtraces.
-CFLAGS += -D$(TARGET_ARCH) $(EXTRAARGS)
-CFLAGS += -O2 -pipe -MD -fno-builtin -gstabs
-CFLAGS += -Wall -Wno-format -Wno-unused -fno-strict-aliasing
-CFLAGS += -nostdinc -I$(dir $(GCC_LIB))/include
+KERN_CFLAGS += -D$(TARGET_ARCH) $(EXTRAARGS)
+KERN_CFLAGS += -O2 -pipe -MD -fno-builtin -gstabs
+KERN_CFLAGS += -Wall -Wno-format -Wno-unused -fno-strict-aliasing
+KERN_CFLAGS += -nostdinc -I$(dir $(GCC_LIB))/include
 
 # Universal loader flags
 LDFLAGS := -nostdlib
index 1eeebc1..3cc8c90 100644 (file)
@@ -49,6 +49,7 @@ KERN_APPFILES := \
 
 
 ifneq ($(findstring CONFIG_KFS,$(KERN_CFLAGS)),)
+all: tests
 $(OBJDIR)/$(KERN_DIR)/kernel: tests
 
 KERN_APPFILES += \
index 4b8e585..f14f7de 100644 (file)
@@ -433,6 +433,12 @@ union user_desc_init
 
 static const char* tls_init_tp(void* thrdescr)
 {
+  // TCB lives at thrdescr.
+  // The TCB's head pointer points to itself :-)
+  tcbhead_t* head = (tcbhead_t*)thrdescr;
+  head->tcb = thrdescr;
+  head->self = thrdescr;
+
   int core_id = __syscall_sysenter(SYS_getvcoreid,0,0,0,0,0,NULL);
 
   if(__procdata.ldt == NULL)
index 03984ee..0e2590f 100644 (file)
@@ -1,5 +1,5 @@
 USER_DIR := $(TOP_DIR)/user
-USER_CFLAGS += -std=gnu99 -I$(USER_DIR)/include
+USER_CFLAGS += $(CFLAGS) -std=gnu99 -I$(USER_DIR)/include
 
 include $(USER_DIR)/parlib/Makefrag
 include $(USER_DIR)/pthread/Makefrag