diff options
Diffstat (limited to 'src/cmd/ld/ldmacho.c')
-rw-r--r-- | src/cmd/ld/ldmacho.c | 8 |
1 files changed, 3 insertions, 5 deletions
diff --git a/src/cmd/ld/ldmacho.c b/src/cmd/ld/ldmacho.c index 41852f17c..d384a5094 100644 --- a/src/cmd/ld/ldmacho.c +++ b/src/cmd/ld/ldmacho.c @@ -639,10 +639,8 @@ ldmacho(Biobuf *f, char *pkg, int64 len, char *pn) s->size = (sym+1)->value - sym->value; else s->size = sect->addr + sect->size - sym->value; - if(!s->dynexport) { + if(!(s->cgoexport & CgoExportDynamic)) s->dynimplib = nil; // satisfy dynimport - s->dynimpname = nil; // satisfy dynimport - } if(outer->type == STEXT) { Prog *p; @@ -806,9 +804,9 @@ ldmacho(Biobuf *f, char *pkg, int64 len, char *pn) // // [For future reference, see Darwin's /usr/include/mach-o/x86_64/reloc.h] secaddr = c->seg.sect[rel->symnum-1].addr; - rp->add = e->e32(s->p+rp->off) + rp->off + 4 - secaddr; + rp->add = (int32)e->e32(s->p+rp->off) + rp->off + 4 - secaddr; } else - rp->add = e->e32(s->p+rp->off); + rp->add = (int32)e->e32(s->p+rp->off); // For i386 Mach-O PC-relative, the addend is written such that // it *is* the PC being subtracted. Use that to make |