diff options
author | Ian Lance Taylor <iant@golang.org> | 2021-12-21 10:00:23 -0800 |
---|---|---|
committer | Ian Lance Taylor <iant@golang.org> | 2021-12-21 18:34:03 +0000 |
commit | cfb0cc355233d4367b188b23a3bc143985a28b8c (patch) | |
tree | f50bd8b2cbb742b5d06eb8ad838acabaae16ad36 /src/cmd | |
parent | 2d1d54808131b09da768ec334b3387ccb70562ec (diff) | |
download | go-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')
-rw-r--r-- | src/cmd/link/internal/ld/elf.go | 7 |
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) } |