]> Cypherpunks repositories - gostls13.git/commit
cmd/link,debug/elf: mips32, add .gnu.attributes and .MIPS.abiflags sections
authorYunQiang Su <syq@debian.org>
Sat, 20 Jun 2020 14:04:54 +0000 (14:04 +0000)
committerCherry Zhang <cherryyz@google.com>
Tue, 2 Mar 2021 00:51:00 +0000 (00:51 +0000)
commitff5cf4ced3f1681ec972cd954d4b476f87616fe3
treec1d0875a1515b6d829816a055f602791b0506deb
parent700b73975e9a925584773e6df85b175371cf9d95
cmd/link,debug/elf: mips32, add .gnu.attributes and .MIPS.abiflags sections

MIPS32 uses .gnu.attributes and .MIPS.abiflags sections to mark FP ABI
the object is using, and the kernel will set the correct FP mode for it.

Currrently Go doesn't generate these 2 sections. If we link object
without these 2 sections togather FPXX objects, the result will be FPXX,
which is wrong:
   FP32 + FPXX -> FP32
   FPXX + FP64 -> FP64
   FP32 + FP64 -> reject

These 2 sections is also needed to support FPXX and FP64 in future.

More details about FP32/FPXX/FP64 are explained in:
    https://web.archive.org/web/20180828210612/https://dmz-portal.mips.com/wiki/MIPS_O32_ABI_-_FR0_and_FR1_Interlinking

Fixes #39677

Change-Id: Ia34e7461dee38a4f575dd8ace609988744512ac1
Reviewed-on: https://go-review.googlesource.com/c/go/+/239217
Run-TryBot: Cherry Zhang <cherryyz@google.com>
Reviewed-by: Cherry Zhang <cherryyz@google.com>
TryBot-Result: Go Bot <gobot@golang.org>
Trust: Meng Zhuo <mzh@golangcn.org>
src/cmd/link/internal/ld/elf.go
src/debug/elf/elf.go