aboutsummaryrefslogtreecommitdiff
path: root/src/cmd/link
diff options
context:
space:
mode:
authorIan Lance Taylor <iant@golang.org>2021-12-21 10:00:23 -0800
committerIan Lance Taylor <iant@golang.org>2021-12-21 18:34:03 +0000
commitcfb0cc355233d4367b188b23a3bc143985a28b8c (patch)
treef50bd8b2cbb742b5d06eb8ad838acabaae16ad36 /src/cmd/link
parent2d1d54808131b09da768ec334b3387ccb70562ec (diff)
downloadgo-cfb0cc355233d4367b188b23a3bc143985a28b8c.tar.gz
go-cfb0cc355233d4367b188b23a3bc143985a28b8c.zip
cmd/link: use SHT_INIT_ARRAY for .init_array section
Fixes #50295 Change-Id: If55ebcd5f2af724da7c9c744458a56d21a7ddde7 Reviewed-on: https://go-review.googlesource.com/c/go/+/373734 Trust: Ian Lance Taylor <iant@golang.org> Reviewed-by: Cherry Mui <cherryyz@google.com>
Diffstat (limited to 'src/cmd/link')
-rw-r--r--src/cmd/link/internal/ld/elf.go7
1 files changed, 6 insertions, 1 deletions
diff --git a/src/cmd/link/internal/ld/elf.go b/src/cmd/link/internal/ld/elf.go
index 4a143dfcaa..1bdfb3369c 100644
--- a/src/cmd/link/internal/ld/elf.go
+++ b/src/cmd/link/internal/ld/elf.go
@@ -1080,7 +1080,12 @@ func elfshbits(linkmode LinkMode, sect *sym.Section) *ElfShdr {
}
if sect.Vaddr < sect.Seg.Vaddr+sect.Seg.Filelen {
- sh.Type = uint32(elf.SHT_PROGBITS)
+ switch sect.Name {
+ case ".init_array":
+ sh.Type = uint32(elf.SHT_INIT_ARRAY)
+ default:
+ sh.Type = uint32(elf.SHT_PROGBITS)
+ }
} else {
sh.Type = uint32(elf.SHT_NOBITS)
}