liblink, runtime: make nacl/386 binaries valid.
They were rejected by NaCl due to AES instructions and
accesses to %gs:0x8, caused by wrong tlsoffset value.
LGTM=iant
R=rsc, dave, iant
CC=golang-codereviews
https://golang.org/cl/76050044
diff --git a/src/liblink/sym.c b/src/liblink/sym.c
index 0c7aae0..3990f72 100644
--- a/src/liblink/sym.c
+++ b/src/liblink/sym.c
@@ -139,9 +139,18 @@
*/
ctxt->tlsoffset = -2*ctxt->arch->ptrsize;
break;
-
+
case Hnacl:
- ctxt->tlsoffset = 0;
+ switch(ctxt->arch->thechar) {
+ default:
+ sysfatal("unknown thread-local storage offset for nacl/%s", ctxt->arch->name);
+ case '6':
+ ctxt->tlsoffset = 0;
+ break;
+ case '8':
+ ctxt->tlsoffset = -8;
+ break;
+ }
break;
case Hdarwin: