mirror of
https://github.com/golang/go
synced 2024-11-25 19:17:57 -07:00
cmd/dist: fix darwin build
The TLS block on Darwin is not the same as on ELF. TBR=elias.naur CC=golang-dev https://golang.org/cl/12741044
This commit is contained in:
parent
a5f257a042
commit
308a3e6c52
13
src/cmd/dist/buildruntime.c
vendored
13
src/cmd/dist/buildruntime.c
vendored
@ -166,17 +166,16 @@ static struct {
|
||||
// If the linker is not outputting a shared library, it will reduce
|
||||
// the TLS accessors to the local exec model, effectively removing
|
||||
// get_tls().
|
||||
{"amd64", "",
|
||||
"// The offsets 0 and 8 are known to:\n"
|
||||
"// ../../cmd/6l/pass.c:/D_GS\n"
|
||||
"// cgo/gcc_linux_amd64.c:/^threadentry\n"
|
||||
"// cgo/gcc_darwin_amd64.c:/^threadentry\n"
|
||||
"//\n"
|
||||
{"amd64", "linux",
|
||||
"#define get_tls(r) MOVQ runtime·tlsgm(SB), r\n"
|
||||
"#define g(r) 0(r)(GS*1)\n"
|
||||
"#define m(r) 8(r)(GS*1)\n"
|
||||
},
|
||||
|
||||
{"amd64", "",
|
||||
"#define get_tls(r)\n"
|
||||
"#define g(r) 0(GS)\n"
|
||||
"#define m(r) 8(GS)\n"
|
||||
},
|
||||
{"arm", "",
|
||||
"#define LR R14\n"
|
||||
},
|
||||
|
@ -1212,7 +1212,7 @@ dodata(void)
|
||||
diag("data or bss segment too large");
|
||||
}
|
||||
|
||||
if(iself && linkmode == LinkExternal && s != nil && s->type == STLSBSS && HEADTYPE != Hopenbsd) {
|
||||
if(iself && linkmode == LinkExternal && s != nil && s->type == STLSBSS && iself && HEADTYPE != Hopenbsd) {
|
||||
sect = addsection(&segdata, ".tbss", 06);
|
||||
sect->align = PtrSize;
|
||||
sect->vaddr = 0;
|
||||
|
@ -361,11 +361,12 @@ loadlib(void)
|
||||
s->type = 0;
|
||||
}
|
||||
}
|
||||
|
||||
gmsym = lookup("runtime.tlsgm", 0);
|
||||
gmsym->type = STLSBSS;
|
||||
gmsym->size = 2*PtrSize;
|
||||
gmsym->hide = 1;
|
||||
if(linkmode == LinkExternal)
|
||||
if(linkmode == LinkExternal && iself && HEADTYPE != Hopenbsd)
|
||||
gmsym->reachable = 1;
|
||||
else
|
||||
gmsym->reachable = 0;
|
||||
|
Loading…
Reference in New Issue
Block a user