From 37e195cf727eb61d352f244230d988eb444a9b13 Mon Sep 17 00:00:00 2001 From: Shenghou Ma Date: Wed, 5 Mar 2014 14:40:55 -0500 Subject: [PATCH] cmd/ld: don't include padding length in size of the note section Recently NetBSD starts to enforce this, and refuses to execute the program if n is larger than the sum of entry sizes. Before: $ readelf -n ../bin/go.old Notes at offset 0x00000bd0 with length 0x00000019: Owner Data size Description NetBSD 0x00000004 NT_VERSION (version) readelf: Warning: corrupt note found at offset 18 into core notes readelf: Warning: type: 0, namesize: 00000000, descsize: 00000000 $ readelf -n ../bin/go Notes at offset 0x00000bd0 with length 0x00000018: Owner Data size Description NetBSD 0x00000004 NT_VERSION (version) LGTM=iant R=iant CC=golang-codereviews https://golang.org/cl/70710043 --- src/cmd/ld/elf.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/cmd/ld/elf.c b/src/cmd/ld/elf.c index 4c0d071733..3b0f578814 100644 --- a/src/cmd/ld/elf.c +++ b/src/cmd/ld/elf.c @@ -355,7 +355,7 @@ elfnote(ElfShdr *sh, uint64 startva, uint64 resoff, int sz) sh->addralign = 4; sh->addr = startva + resoff - n; sh->off = resoff - n; - sh->size = n; + sh->size = n - resoff % 4; return n; }