From: Russ Cox Date: Wed, 20 Apr 2011 20:25:00 +0000 (-0400) Subject: ld: remove MachoLoad limit X-Git-Tag: weekly.2011-04-27~94 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=047e698c5294d26490d856a9ea79df403916f79c;p=gostls13.git ld: remove MachoLoad limit Fixes #1571. R=ken2 CC=golang-dev https://golang.org/cl/4443052 --- diff --git a/src/cmd/ld/macho.c b/src/cmd/ld/macho.c index c8d7c4a6d9..a1abbbc56a 100644 --- a/src/cmd/ld/macho.c +++ b/src/cmd/ld/macho.c @@ -12,10 +12,10 @@ static int macho64; static MachoHdr hdr; -static MachoLoad load[16]; +static MachoLoad *load; static MachoSeg seg[16]; static MachoDebug xdebug[16]; -static int nload, nseg, ndebug, nsect; +static int nload, mload, nseg, ndebug, nsect; void machoinit(void) @@ -43,11 +43,18 @@ newMachoLoad(uint32 type, uint32 ndata) { MachoLoad *l; - if(nload >= nelem(load)) { - diag("too many loads"); - errorexit(); + if(nload >= mload) { + if(mload == 0) + mload = 1; + else + mload *= 2; + load = realloc(load, mload*sizeof load[0]); + if(load == nil) { + diag("out of memory"); + errorexit(); + } } - + if(macho64 && (ndata & 1)) ndata++;