move hard-wired Mac TLS key from 0x108 to 0x110
svn: r18405
This commit is contained in:
parent
eeb5a8df0a
commit
c856b1b72e
|
@ -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
|
||||
|
||||
|
||||
|
|
|
@ -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__)
|
||||
|
|
|
@ -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) \
|
||||
|
|
|
@ -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;
|
||||
|
|
Loading…
Reference in New Issue
Block a user