mirror of
https://github.com/golang/go.git
synced 2025-12-08 06:10:04 +00:00
debug/elf: sync new loong64 relocation types up to LoongArch ELF psABI v20250521
Add several new relocation types defined in newer versions of LoongArch ELF psABI v20250521, part of the v2.40 spec bundle. The new relocations are seeing increased adoption because distributions are moving to newer GNU/LLVM toolchain versions, so Go's internal linker must be prepared to handle some of them, especially R_LARCH_CALL36 because the ecosystem is slowly migrating to the "medium" code model by default. The constants R_LARCH_DELETE and R_LARCH_CFA were removed in LoongArch ELF psABI v20231102 (spec bundle v2.20), but they are already part of the public API, so they are retained for now for upholding the go1 compatibility guarantee. Corresponding binutils implementation: * R_LARCH_CALL36: https://sourceware.org/git/?p=binutils-gdb.git;a=commit;h=dc5f359ed6a36d2c895d89c3e4886f3a2b6d9232 * TLSDESC: https://sourceware.org/git/?p=binutils-gdb.git;a=commit;h=26265e7fdf19d461563388495b6799eb3719f80a * TLS {LD,GD,DESC} relaxation: https://sourceware.org/git/?p=binutils-gdb.git;a=commit;h=ae296cc45258b95223210263d1b91115e84beb56 * TLS LE relaxation: https://sourceware.org/git/?p=binutils-gdb.git;a=commit;h=775dead218e12e3fb94481c7a99aa0238d6a9138 Updates #75562 See: https://github.com/loongson/la-abi-specs/blob/v2.40/laelf.adoc See: https://github.com/loongson-community/discussions/issues/43 Change-Id: Ib023e0b6becc0862d27afc419d3eb84c737359db Reviewed-on: https://go-review.googlesource.com/c/go/+/709716 Reviewed-by: Mark Freeman <markfreeman@google.com> Reviewed-by: Meidan Li <limeidan@loongson.cn> Reviewed-by: abner chenc <chenguoqi@loongson.cn> LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com> Reviewed-by: Junyang Shao <shaojunyang@google.com> Reviewed-by: sophie zhao <zhaoxiaolin@loongson.cn>
This commit is contained in:
parent
e1a12c781f
commit
a087dea869
4 changed files with 81 additions and 0 deletions
38
api/next/75562.txt
Normal file
38
api/next/75562.txt
Normal file
|
|
@ -0,0 +1,38 @@
|
|||
pkg debug/elf, const R_LARCH_TLS_DESC32 = 13 #75562
|
||||
pkg debug/elf, const R_LARCH_TLS_DESC32 R_LARCH #75562
|
||||
pkg debug/elf, const R_LARCH_TLS_DESC64 = 14 #75562
|
||||
pkg debug/elf, const R_LARCH_TLS_DESC64 R_LARCH #75562
|
||||
pkg debug/elf, const R_LARCH_CALL36 = 110 #75562
|
||||
pkg debug/elf, const R_LARCH_CALL36 R_LARCH #75562
|
||||
pkg debug/elf, const R_LARCH_TLS_DESC_PC_HI20 = 111 #75562
|
||||
pkg debug/elf, const R_LARCH_TLS_DESC_PC_HI20 R_LARCH #75562
|
||||
pkg debug/elf, const R_LARCH_TLS_DESC_PC_LO12 = 112 #75562
|
||||
pkg debug/elf, const R_LARCH_TLS_DESC_PC_LO12 R_LARCH #75562
|
||||
pkg debug/elf, const R_LARCH_TLS_DESC64_PC_LO20 = 113 #75562
|
||||
pkg debug/elf, const R_LARCH_TLS_DESC64_PC_LO20 R_LARCH #75562
|
||||
pkg debug/elf, const R_LARCH_TLS_DESC64_PC_HI12 = 114 #75562
|
||||
pkg debug/elf, const R_LARCH_TLS_DESC64_PC_HI12 R_LARCH #75562
|
||||
pkg debug/elf, const R_LARCH_TLS_DESC_HI20 = 115 #75562
|
||||
pkg debug/elf, const R_LARCH_TLS_DESC_HI20 R_LARCH #75562
|
||||
pkg debug/elf, const R_LARCH_TLS_DESC_LO12 = 116 #75562
|
||||
pkg debug/elf, const R_LARCH_TLS_DESC_LO12 R_LARCH #75562
|
||||
pkg debug/elf, const R_LARCH_TLS_DESC64_LO20 = 117 #75562
|
||||
pkg debug/elf, const R_LARCH_TLS_DESC64_LO20 R_LARCH #75562
|
||||
pkg debug/elf, const R_LARCH_TLS_DESC64_HI12 = 118 #75562
|
||||
pkg debug/elf, const R_LARCH_TLS_DESC64_HI12 R_LARCH #75562
|
||||
pkg debug/elf, const R_LARCH_TLS_DESC_LD = 119 #75562
|
||||
pkg debug/elf, const R_LARCH_TLS_DESC_LD R_LARCH #75562
|
||||
pkg debug/elf, const R_LARCH_TLS_DESC_CALL = 120 #75562
|
||||
pkg debug/elf, const R_LARCH_TLS_DESC_CALL R_LARCH #75562
|
||||
pkg debug/elf, const R_LARCH_TLS_LE_HI20_R = 121 #75562
|
||||
pkg debug/elf, const R_LARCH_TLS_LE_HI20_R R_LARCH #75562
|
||||
pkg debug/elf, const R_LARCH_TLS_LE_ADD_R = 122 #75562
|
||||
pkg debug/elf, const R_LARCH_TLS_LE_ADD_R R_LARCH #75562
|
||||
pkg debug/elf, const R_LARCH_TLS_LE_LO12_R = 123 #75562
|
||||
pkg debug/elf, const R_LARCH_TLS_LE_LO12_R R_LARCH #75562
|
||||
pkg debug/elf, const R_LARCH_TLS_LD_PCREL20_S2 = 124 #75562
|
||||
pkg debug/elf, const R_LARCH_TLS_LD_PCREL20_S2 R_LARCH #75562
|
||||
pkg debug/elf, const R_LARCH_TLS_GD_PCREL20_S2 = 125 #75562
|
||||
pkg debug/elf, const R_LARCH_TLS_GD_PCREL20_S2 R_LARCH #75562
|
||||
pkg debug/elf, const R_LARCH_TLS_DESC_PCREL20_S2 = 126 #75562
|
||||
pkg debug/elf, const R_LARCH_TLS_DESC_PCREL20_S2 R_LARCH #75562
|
||||
4
doc/next/6-stdlib/99-minor/debug/elf/75562.md
Normal file
4
doc/next/6-stdlib/99-minor/debug/elf/75562.md
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
Additional `R_LARCH_*` constants from [LoongArch ELF psABI v20250521][laelf-20250521]
|
||||
(global version v2.40) are defined for use with LoongArch systems.
|
||||
|
||||
[laelf-20250521]: https://github.com/loongson/la-abi-specs/blob/v2.40/laelf.adoc
|
||||
|
|
@ -2305,6 +2305,8 @@ const (
|
|||
R_LARCH_TLS_TPREL32 R_LARCH = 10
|
||||
R_LARCH_TLS_TPREL64 R_LARCH = 11
|
||||
R_LARCH_IRELATIVE R_LARCH = 12
|
||||
R_LARCH_TLS_DESC32 R_LARCH = 13
|
||||
R_LARCH_TLS_DESC64 R_LARCH = 14
|
||||
R_LARCH_MARK_LA R_LARCH = 20
|
||||
R_LARCH_MARK_PCREL R_LARCH = 21
|
||||
R_LARCH_SOP_PUSH_PCREL R_LARCH = 22
|
||||
|
|
@ -2390,6 +2392,23 @@ const (
|
|||
R_LARCH_ADD_ULEB128 R_LARCH = 107
|
||||
R_LARCH_SUB_ULEB128 R_LARCH = 108
|
||||
R_LARCH_64_PCREL R_LARCH = 109
|
||||
R_LARCH_CALL36 R_LARCH = 110
|
||||
R_LARCH_TLS_DESC_PC_HI20 R_LARCH = 111
|
||||
R_LARCH_TLS_DESC_PC_LO12 R_LARCH = 112
|
||||
R_LARCH_TLS_DESC64_PC_LO20 R_LARCH = 113
|
||||
R_LARCH_TLS_DESC64_PC_HI12 R_LARCH = 114
|
||||
R_LARCH_TLS_DESC_HI20 R_LARCH = 115
|
||||
R_LARCH_TLS_DESC_LO12 R_LARCH = 116
|
||||
R_LARCH_TLS_DESC64_LO20 R_LARCH = 117
|
||||
R_LARCH_TLS_DESC64_HI12 R_LARCH = 118
|
||||
R_LARCH_TLS_DESC_LD R_LARCH = 119
|
||||
R_LARCH_TLS_DESC_CALL R_LARCH = 120
|
||||
R_LARCH_TLS_LE_HI20_R R_LARCH = 121
|
||||
R_LARCH_TLS_LE_ADD_R R_LARCH = 122
|
||||
R_LARCH_TLS_LE_LO12_R R_LARCH = 123
|
||||
R_LARCH_TLS_LD_PCREL20_S2 R_LARCH = 124
|
||||
R_LARCH_TLS_GD_PCREL20_S2 R_LARCH = 125
|
||||
R_LARCH_TLS_DESC_PCREL20_S2 R_LARCH = 126
|
||||
)
|
||||
|
||||
var rlarchStrings = []intName{
|
||||
|
|
@ -2406,6 +2425,8 @@ var rlarchStrings = []intName{
|
|||
{10, "R_LARCH_TLS_TPREL32"},
|
||||
{11, "R_LARCH_TLS_TPREL64"},
|
||||
{12, "R_LARCH_IRELATIVE"},
|
||||
{13, "R_LARCH_TLS_DESC32"},
|
||||
{14, "R_LARCH_TLS_DESC64"},
|
||||
{20, "R_LARCH_MARK_LA"},
|
||||
{21, "R_LARCH_MARK_PCREL"},
|
||||
{22, "R_LARCH_SOP_PUSH_PCREL"},
|
||||
|
|
@ -2491,6 +2512,23 @@ var rlarchStrings = []intName{
|
|||
{107, "R_LARCH_ADD_ULEB128"},
|
||||
{108, "R_LARCH_SUB_ULEB128"},
|
||||
{109, "R_LARCH_64_PCREL"},
|
||||
{110, "R_LARCH_CALL36"},
|
||||
{111, "R_LARCH_TLS_DESC_PC_HI20"},
|
||||
{112, "R_LARCH_TLS_DESC_PC_LO12"},
|
||||
{113, "R_LARCH_TLS_DESC64_PC_LO20"},
|
||||
{114, "R_LARCH_TLS_DESC64_PC_HI12"},
|
||||
{115, "R_LARCH_TLS_DESC_HI20"},
|
||||
{116, "R_LARCH_TLS_DESC_LO12"},
|
||||
{117, "R_LARCH_TLS_DESC64_LO20"},
|
||||
{118, "R_LARCH_TLS_DESC64_HI12"},
|
||||
{119, "R_LARCH_TLS_DESC_LD"},
|
||||
{120, "R_LARCH_TLS_DESC_CALL"},
|
||||
{121, "R_LARCH_TLS_LE_HI20_R"},
|
||||
{122, "R_LARCH_TLS_LE_ADD_R"},
|
||||
{123, "R_LARCH_TLS_LE_LO12_R"},
|
||||
{124, "R_LARCH_TLS_LD_PCREL20_S2"},
|
||||
{125, "R_LARCH_TLS_GD_PCREL20_S2"},
|
||||
{126, "R_LARCH_TLS_DESC_PCREL20_S2"},
|
||||
}
|
||||
|
||||
func (i R_LARCH) String() string { return stringName(uint32(i), rlarchStrings, false) }
|
||||
|
|
|
|||
|
|
@ -34,6 +34,7 @@ var nameTests = []nameTest{
|
|||
{R_ALPHA_OP_PUSH, "R_ALPHA_OP_PUSH"},
|
||||
{R_ARM_THM_ABS5, "R_ARM_THM_ABS5"},
|
||||
{R_386_GOT32, "R_386_GOT32"},
|
||||
{R_LARCH_CALL36, "R_LARCH_CALL36"},
|
||||
{R_PPC_GOT16_HI, "R_PPC_GOT16_HI"},
|
||||
{R_SPARC_GOT22, "R_SPARC_GOT22"},
|
||||
{ET_LOOS + 5, "ET_LOOS+5"},
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue