move hard-wired Mac TLS key from 0x108 to 0x110

svn: r18405
This commit is contained in:
Matthew Flatt 2010-03-01 13:13:24 +00:00
parent eeb5a8df0a
commit c856b1b72e
4 changed files with 12 additions and 10 deletions

View File

@ -71,6 +71,8 @@ XFORMXX = $(XFORM_CMD) --cpp "$(CXXCPP) $(XFORM_CPP_ARGS)" @XFORMFLAGS@ -o
XFORM = $(XFORM_CMD) --cpp "$(CPP) $(XFORM_CPP_ARGS)" @XFORMFLAGS@ -o
XFORMDEP = $(srcdir)/../../mzscheme/gc2/xform.ss $(srcdir)/../../mzscheme/gc2/xform-mod.ss $(srcdir)/../../mzscheme/gc2/gc2.h
NONPRECOMPDEP = $(srcdir)/../../mzscheme/include/schthread.h
WXBDIR=../../wxxt
WXMACBDIR=../../wxmac/src
@ -359,7 +361,7 @@ macxsrc/wx_image.cc: $(WXMACDIR)/../utils/image/src/wx_image.cc $(XFORMDEP) $(MA
$(XFORMWP) macxsrc/wx_image.cc $(WXMACDIR)/../utils/image/src/wx_image.cc
macxsrc/wx_xbm.cc: $(WXMACDIR)/../utils/image/src/wx_xbm.cc $(XFORMDEP) $(MACXPRECOMPDEP)
$(XFORMWP) macxsrc/wx_xbm.cc $(WXMACDIR)/../utils/image/src/wx_xbm.cc
macxsrc/simpledrop.cc: $(srcdir)/../../mac/mzscheme/simpledrop.cpp $(XFORMDEP)
macxsrc/simpledrop.cc: $(srcdir)/../../mac/mzscheme/simpledrop.cpp $(NONPRECOMPDEP) $(XFORMDEP)
$(XFORMXX) macxsrc/simpledrop.cc $(srcdir)/../../mac/mzscheme/simpledrop.cpp
wx_xt_XFORMPRECOMP =
@ -370,7 +372,7 @@ XFORMPRECOMPDEP =
xsrc/wxscheme.cc: $(srcdir)/../wxs/wxscheme.cxx $(XFORMDEP) $(XFORMPRECOMPDEP)
$(XFORMWP) xsrc/wxscheme.cc $(srcdir)/../wxs/wxscheme.cxx
xsrc/xcglue.c: $(srcdir)/../../mzscheme/utils/xcglue.c $(XFORMDEP)
xsrc/xcglue.c: $(srcdir)/../../mzscheme/utils/xcglue.c $(NONPRECOMPDEP) $(XFORMDEP)
$(XFORM) xsrc/xcglue.c $(srcdir)/../../mzscheme/utils/xcglue.c

View File

@ -303,9 +303,9 @@ static inline Thread_Local_Variables *scheme_get_thread_local_variables() {
Thread_Local_Variables *x = NULL;
# if defined(OS_X)
# if defined(__x86_64__)
asm volatile("movq %%gs:0x8A0, %0" : "=r"(x));
asm volatile("movq %%gs:0x8E0, %0" : "=r"(x));
# else
asm volatile("movl %%gs:0x468, %0" : "=r"(x));
asm volatile("movl %%gs:0x488, %0" : "=r"(x));
# endif
# elif defined(linux) && defined(MZ_USES_SHARED_LIB)
# if defined(__x86_64__)

View File

@ -174,7 +174,7 @@ fun.@LTO@: $(srcdir)/fun.c
$(CC) $(CFLAGS) -c $(srcdir)/fun.c -o fun.@LTO@
future.@LTO@: $(srcdir)/future.c
$(CC) $(CFLAGS) -c $(srcdir)/future.c -o future.@LTO@
gmp.@LTO@: $(srcdir)/gmp/gmp.c $(srcdir)/gmp/gmplonglong.h
gmp.@LTO@: $(srcdir)/gmp/gmp.c $(srcdir)/gmp/gmplonglong.h $(srcdir)/../include/schthread.h
$(CC) $(CFLAGS) -c $(srcdir)/gmp/gmp.c -o gmp.@LTO@
hash.@LTO@: $(srcdir)/hash.c
$(CC) $(CFLAGS) -c $(srcdir)/hash.c -o hash.@LTO@
@ -271,7 +271,7 @@ file.@LTO@: $(COMMON_HEADERS) \
fun.@LTO@: $(COMMON_HEADERS) \
$(srcdir)/../src/stypes.h $(srcdir)/mzmark.c $(srcdir)/schmap.inc \
$(srcdir)/future.h
future.@LTO@: $(srcdir)/schpriv.h $(srcdir)/future.h $(SCONFIG) $(srcdir)/../include/scheme.h \
future.@LTO@: $(COMMON_HEADERS) $(srcdir)/future.h $(SCONFIG) \
$(srcdir)/../src/stypes.h $(srcdir)/mzmark.c $(srcdir)/mzrt.c \
$(srcdir)/jit_ts_future_glue.c $(srcdir)/jit_ts_runtime_glue.c $(srcdir)/jit_ts_protos.h
hash.@LTO@: $(COMMON_HEADERS) \

View File

@ -217,7 +217,7 @@ static void macosx_get_thread_local_key_for_assembly_code() XFORM_SKIP_PROC
the Go implementation (see "http://golang.org/src/libcgo/darwin_386.c").
In brief, we assume that thread-local variables are going to be
accessed via the gs segment register at offset 0x48 (i386) or 0x60 (x86_64),
and we also hardwire the thread-local key 0x108. Here we have to try to get
and we also hardwire the thread-local key 0x110. Here we have to try to get
that particular key and double-check that it worked. */
pthread_key_t unwanted[16];
int num_unwanted = 0;
@ -227,11 +227,11 @@ static void macosx_get_thread_local_key_for_assembly_code() XFORM_SKIP_PROC
fprintf(stderr, "pthread key create failed\n");
abort();
}
if (scheme_thread_local_key == 0x108)
if (scheme_thread_local_key == 0x110)
break;
else {
if (num_unwanted == 16) {
fprintf(stderr, "pthread key create never produced 0x108 for inline hack\n");
if (num_unwanted == 24) {
fprintf(stderr, "pthread key create never produced 0x110 for inline hack\n");
abort();
}
unwanted[num_unwanted++] = scheme_thread_local_key;