Commit 88f84b3e authored by Rémy Oudompheng's avatar Rémy Oudompheng

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
parent fed5428c
......@@ -139,9 +139,18 @@ linknew(LinkArch *arch)
*/
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:
......
......@@ -21,7 +21,7 @@ runtime·memhash(uintptr *h, uintptr s, void *a)
{
byte *b;
uintptr hash;
if(use_aeshash) {
if(!NaCl && use_aeshash) {
runtime·aeshash(h, s, a);
return;
}
......@@ -470,6 +470,9 @@ byte runtime·aeskeysched[HashRandomBytes];
void
runtime·hashinit(void)
{
if(NaCl)
return;
// Install aes hash algorithm if we have the instructions we need
if((runtime·cpuid_ecx & (1 << 25)) != 0 && // aes (aesenc)
(runtime·cpuid_ecx & (1 << 9)) != 0 && // sse3 (pshufb)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment