]> Cypherpunks repositories - gostls13.git/commitdiff
ld: remove MachoLoad limit
authorRuss Cox <rsc@golang.org>
Wed, 20 Apr 2011 20:25:00 +0000 (16:25 -0400)
committerRuss Cox <rsc@golang.org>
Wed, 20 Apr 2011 20:25:00 +0000 (16:25 -0400)
Fixes #1571.

R=ken2
CC=golang-dev
https://golang.org/cl/4443052

src/cmd/ld/macho.c

index c8d7c4a6d9dc5708bacbf11627228a5caf63288a..a1abbbc56ad70be10cc6f12a37747dbb51a05478 100644 (file)
 
 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++;