diff options
author | YunQiang Su <syq@debian.org> | 2020-06-20 14:04:54 +0000 |
---|---|---|
committer | Cherry Zhang <cherryyz@google.com> | 2021-03-02 00:51:00 +0000 |
commit | ff5cf4ced3f1681ec972cd954d4b476f87616fe3 (patch) | |
tree | c1d0875a1515b6d829816a055f602791b0506deb /src/debug | |
parent | 700b73975e9a925584773e6df85b175371cf9d95 (diff) | |
download | go-ff5cf4ced3f1681ec972cd954d4b476f87616fe3.tar.gz go-ff5cf4ced3f1681ec972cd954d4b476f87616fe3.zip |
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>
Diffstat (limited to 'src/debug')
-rw-r--r-- | src/debug/elf/elf.go | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/src/debug/elf/elf.go b/src/debug/elf/elf.go index 2b777eabac..b04d874019 100644 --- a/src/debug/elf/elf.go +++ b/src/debug/elf/elf.go @@ -644,6 +644,7 @@ const ( SHT_GNU_VERSYM SectionType = 0x6fffffff /* GNU version symbol table */ SHT_HIOS SectionType = 0x6fffffff /* Last of OS specific semantics */ SHT_LOPROC SectionType = 0x70000000 /* reserved range for processor */ + SHT_MIPS_ABIFLAGS SectionType = 0x7000002a /* .MIPS.abiflags */ SHT_HIPROC SectionType = 0x7fffffff /* specific section header types */ SHT_LOUSER SectionType = 0x80000000 /* reserved range for application */ SHT_HIUSER SectionType = 0xffffffff /* specific indexes */ @@ -675,6 +676,7 @@ var shtStrings = []intName{ {0x6ffffffe, "SHT_GNU_VERNEED"}, {0x6fffffff, "SHT_GNU_VERSYM"}, {0x70000000, "SHT_LOPROC"}, + {0x7000002a, "SHT_MIPS_ABIFLAGS"}, {0x7fffffff, "SHT_HIPROC"}, {0x80000000, "SHT_LOUSER"}, {0xffffffff, "SHT_HIUSER"}, |