diff options
author | Anthony Martin <ality@pbrane.org> | 2011-10-18 16:05:38 -0400 |
---|---|---|
committer | Russ Cox <rsc@golang.org> | 2011-10-18 16:05:38 -0400 |
commit | 033585d6755a19308314b89f1252ec1438e24fe0 (patch) | |
tree | f314b918686c4bc1d093f665d1d518dd71c96c30 | |
parent | 4566868b41620ba47ef589d8bab9b0906c370cb6 (diff) | |
download | go-033585d6755a19308314b89f1252ec1438e24fe0.tar.gz go-033585d6755a19308314b89f1252ec1438e24fe0.zip |
5l, 6l, 8l: correct ELFRESERVE diagnostic
If the length of the interpreter string
pushes us over the ELFRESERVE limit, the
resulting error message will be comical.
I was doing some ELF tinkering with a
modified version of 8l when I hit this.
To be clear, the stock linkers wouldn't
hit this without adding about forty more
section headers. We're safe for now. ;)
Also, remove a redundant call to cflush.
R=golang-dev, rsc
CC=golang-dev
https://golang.org/cl/5268044
-rw-r--r-- | src/cmd/5l/asm.c | 4 | ||||
-rw-r--r-- | src/cmd/6l/asm.c | 4 | ||||
-rw-r--r-- | src/cmd/8l/asm.c | 4 |
3 files changed, 6 insertions, 6 deletions
diff --git a/src/cmd/5l/asm.c b/src/cmd/5l/asm.c index 46fb6b6323..f7fa688be1 100644 --- a/src/cmd/5l/asm.c +++ b/src/cmd/5l/asm.c @@ -632,8 +632,8 @@ asmb(void) a += elfwritehdr(); a += elfwritephdrs(); a += elfwriteshdrs(); - cflush(); - if(a+elfwriteinterp() > ELFRESERVE) + a += elfwriteinterp(); + if(a > ELFRESERVE) diag("ELFRESERVE too small: %d > %d", a, ELFRESERVE); break; } diff --git a/src/cmd/6l/asm.c b/src/cmd/6l/asm.c index dfb065e51c..8c6bab8399 100644 --- a/src/cmd/6l/asm.c +++ b/src/cmd/6l/asm.c @@ -1095,8 +1095,8 @@ asmb(void) a += elfwritehdr(); a += elfwritephdrs(); a += elfwriteshdrs(); - cflush(); - if(a+elfwriteinterp() > ELFRESERVE) + a += elfwriteinterp(); + if(a > ELFRESERVE) diag("ELFRESERVE too small: %d > %d", a, ELFRESERVE); break; case Hwindows: diff --git a/src/cmd/8l/asm.c b/src/cmd/8l/asm.c index 119c8364b0..948d4889ca 100644 --- a/src/cmd/8l/asm.c +++ b/src/cmd/8l/asm.c @@ -1160,8 +1160,8 @@ asmb(void) a += elfwritehdr(); a += elfwritephdrs(); a += elfwriteshdrs(); - cflush(); - if(a+elfwriteinterp() > ELFRESERVE) + a += elfwriteinterp(); + if(a > ELFRESERVE) diag("ELFRESERVE too small: %d > %d", a, ELFRESERVE); break; |