diff options
Diffstat (limited to 'src/cmd/internal/objabi')
| -rw-r--r-- | src/cmd/internal/objabi/reloctype.go | 26 | ||||
| -rw-r--r-- | src/cmd/internal/objabi/reloctype_string.go | 64 | ||||
| -rw-r--r-- | src/cmd/internal/objabi/symkind_string.go | 5 |
3 files changed, 58 insertions, 37 deletions
diff --git a/src/cmd/internal/objabi/reloctype.go b/src/cmd/internal/objabi/reloctype.go index 8e95b5dae2..b6764ff8ef 100644 --- a/src/cmd/internal/objabi/reloctype.go +++ b/src/cmd/internal/objabi/reloctype.go @@ -327,13 +327,20 @@ const ( // Loong64. - // R_LOONG64_ADDR_HI resolves to the sign-adjusted "upper" 20 bits (bit 5-24) of an - // external address, by encoding it into the instruction. + // R_LOONG64_ADDR_HI resolves [31...12]bits of 32/64-bit PC-relative offset of an + // external address, by encoding it into addi.w/addi.d instruction // R_LOONG64_ADDR_LO resolves to the low 12 bits of an external address, by encoding - // it into the instruction. + // it into pcalau12i instruction. R_LOONG64_ADDR_HI R_LOONG64_ADDR_LO + // R_LOONG64_ADDR64_HI resolves [63...52]bits of 64-bit PC-relative offset of an + // external address, by encoding it into lu52i.d instruction + // R_LOONG64_ADDR64_LO resolves [51...32]bits of 64-bit PC-relative offset of an + // external address, by encoding it into lu32i.d instruction + R_LOONG64_ADDR64_HI + R_LOONG64_ADDR64_LO + // R_LOONG64_ADDR_PCREL20_S2 resolves to the 22-bit, 4-byte aligned offset of an // external address, by encoding it into a PCADDI instruction. R_LOONG64_ADDR_PCREL20_S2 @@ -358,11 +365,20 @@ const ( R_LOONG64_TLS_IE_HI R_LOONG64_TLS_IE_LO - // R_LOONG64_GOT_HI and R_LOONG64_GOT_LO resolves a GOT-relative instruction sequence, - // usually an pcalau12i followed by another ld or addi instruction. + // R_LOONG64_GOT_HI resolves [31...12]bits of 32/64-bit PC-relative offset of + // GOT entry, by encoding it into pcalau12i instruction + // R_LOONG64_GOT_LO resolves [11...0]bits of 32/64-bit PC-relative offset of + // GOT entry, by encoding it into ld.w/ld.d instruction R_LOONG64_GOT_HI R_LOONG64_GOT_LO + // R_LOONG64_GOT64_HI resolves [63...52]bits of 64-bit PC-relative offset of + // GOT entry, by encoding it into lu52i.d instruction + // R_LOONG64_GOT64_LO resolves [51...32]bits of 64-bit PC-relative offset of + // GOT entry, by encoding it into lu32i.d instruction + R_LOONG64_GOT64_HI + R_LOONG64_GOT64_LO + // 64-bit in-place addition. R_LOONG64_ADD64 // 64-bit in-place subtraction. diff --git a/src/cmd/internal/objabi/reloctype_string.go b/src/cmd/internal/objabi/reloctype_string.go index 4152afd92f..c7a5e6c07a 100644 --- a/src/cmd/internal/objabi/reloctype_string.go +++ b/src/cmd/internal/objabi/reloctype_string.go @@ -86,40 +86,44 @@ func _() { _ = x[R_PCRELDBL-76] _ = x[R_LOONG64_ADDR_HI-77] _ = x[R_LOONG64_ADDR_LO-78] - _ = x[R_LOONG64_ADDR_PCREL20_S2-79] - _ = x[R_LOONG64_TLS_LE_HI-80] - _ = x[R_LOONG64_TLS_LE_LO-81] - _ = x[R_CALLLOONG64-82] - _ = x[R_LOONG64_CALL36-83] - _ = x[R_LOONG64_TLS_IE_HI-84] - _ = x[R_LOONG64_TLS_IE_LO-85] - _ = x[R_LOONG64_GOT_HI-86] - _ = x[R_LOONG64_GOT_LO-87] - _ = x[R_LOONG64_ADD64-88] - _ = x[R_LOONG64_SUB64-89] - _ = x[R_JMP16LOONG64-90] - _ = x[R_JMP21LOONG64-91] - _ = x[R_ADDRMIPSU-92] - _ = x[R_ADDRMIPSTLS-93] - _ = x[R_ADDRCUOFF-94] - _ = x[R_WASMIMPORT-95] - _ = x[R_XCOFFREF-96] - _ = x[R_PEIMAGEOFF-97] - _ = x[R_INITORDER-98] - _ = x[R_DWTXTADDR_U1-99] - _ = x[R_DWTXTADDR_U2-100] - _ = x[R_DWTXTADDR_U3-101] - _ = x[R_DWTXTADDR_U4-102] + _ = x[R_LOONG64_ADDR64_HI-79] + _ = x[R_LOONG64_ADDR64_LO-80] + _ = x[R_LOONG64_ADDR_PCREL20_S2-81] + _ = x[R_LOONG64_TLS_LE_HI-82] + _ = x[R_LOONG64_TLS_LE_LO-83] + _ = x[R_CALLLOONG64-84] + _ = x[R_LOONG64_CALL36-85] + _ = x[R_LOONG64_TLS_IE_HI-86] + _ = x[R_LOONG64_TLS_IE_LO-87] + _ = x[R_LOONG64_GOT_HI-88] + _ = x[R_LOONG64_GOT_LO-89] + _ = x[R_LOONG64_GOT64_HI-90] + _ = x[R_LOONG64_GOT64_LO-91] + _ = x[R_LOONG64_ADD64-92] + _ = x[R_LOONG64_SUB64-93] + _ = x[R_JMP16LOONG64-94] + _ = x[R_JMP21LOONG64-95] + _ = x[R_ADDRMIPSU-96] + _ = x[R_ADDRMIPSTLS-97] + _ = x[R_ADDRCUOFF-98] + _ = x[R_WASMIMPORT-99] + _ = x[R_XCOFFREF-100] + _ = x[R_PEIMAGEOFF-101] + _ = x[R_INITORDER-102] + _ = x[R_DWTXTADDR_U1-103] + _ = x[R_DWTXTADDR_U2-104] + _ = x[R_DWTXTADDR_U3-105] + _ = x[R_DWTXTADDR_U4-106] } -const _RelocType_name = "R_ADDRR_ADDRPOWERR_ADDRARM64R_ADDRMIPSR_ADDROFFR_SIZER_CALLR_CALLARMR_CALLARM64R_CALLINDR_CALLPOWERR_CALLMIPSR_CONSTR_PCRELR_TLS_LER_TLS_IER_GOTOFFR_PLT0R_PLT1R_PLT2R_USEFIELDR_USETYPER_USEIFACER_USEIFACEMETHODR_USENAMEDMETHODR_METHODOFFR_KEEPR_POWER_TOCR_GOTPCRELR_JMPMIPSR_DWARFSECREFR_ARM64_TLS_LER_ARM64_TLS_IER_ARM64_GOTPCRELR_ARM64_GOTR_ARM64_PCRELR_ARM64_PCREL_LDST8R_ARM64_PCREL_LDST16R_ARM64_PCREL_LDST32R_ARM64_PCREL_LDST64R_ARM64_LDST8R_ARM64_LDST16R_ARM64_LDST32R_ARM64_LDST64R_ARM64_LDST128R_POWER_TLS_LER_POWER_TLS_IER_POWER_TLSR_POWER_TLS_IE_PCREL34R_POWER_TLS_LE_TPREL34R_ADDRPOWER_DSR_ADDRPOWER_GOTR_ADDRPOWER_GOT_PCREL34R_ADDRPOWER_PCRELR_ADDRPOWER_TOCRELR_ADDRPOWER_TOCREL_DSR_ADDRPOWER_D34R_ADDRPOWER_PCREL34R_RISCV_JALR_RISCV_JAL_TRAMPR_RISCV_CALLR_RISCV_PCREL_ITYPER_RISCV_PCREL_STYPER_RISCV_TLS_IER_RISCV_TLS_LER_RISCV_GOT_HI20R_RISCV_GOT_PCREL_ITYPER_RISCV_PCREL_HI20R_RISCV_PCREL_LO12_IR_RISCV_PCREL_LO12_SR_RISCV_BRANCHR_RISCV_ADD32R_RISCV_SUB32R_RISCV_RVC_BRANCHR_RISCV_RVC_JUMPR_PCRELDBLR_LOONG64_ADDR_HIR_LOONG64_ADDR_LOR_LOONG64_ADDR_PCREL20_S2R_LOONG64_TLS_LE_HIR_LOONG64_TLS_LE_LOR_CALLLOONG64R_LOONG64_CALL36R_LOONG64_TLS_IE_HIR_LOONG64_TLS_IE_LOR_LOONG64_GOT_HIR_LOONG64_GOT_LOR_LOONG64_ADD64R_LOONG64_SUB64R_JMP16LOONG64R_JMP21LOONG64R_ADDRMIPSUR_ADDRMIPSTLSR_ADDRCUOFFR_WASMIMPORTR_XCOFFREFR_PEIMAGEOFFR_INITORDERR_DWTXTADDR_U1R_DWTXTADDR_U2R_DWTXTADDR_U3R_DWTXTADDR_U4" +const _RelocType_name = "R_ADDRR_ADDRPOWERR_ADDRARM64R_ADDRMIPSR_ADDROFFR_SIZER_CALLR_CALLARMR_CALLARM64R_CALLINDR_CALLPOWERR_CALLMIPSR_CONSTR_PCRELR_TLS_LER_TLS_IER_GOTOFFR_PLT0R_PLT1R_PLT2R_USEFIELDR_USETYPER_USEIFACER_USEIFACEMETHODR_USENAMEDMETHODR_METHODOFFR_KEEPR_POWER_TOCR_GOTPCRELR_JMPMIPSR_DWARFSECREFR_ARM64_TLS_LER_ARM64_TLS_IER_ARM64_GOTPCRELR_ARM64_GOTR_ARM64_PCRELR_ARM64_PCREL_LDST8R_ARM64_PCREL_LDST16R_ARM64_PCREL_LDST32R_ARM64_PCREL_LDST64R_ARM64_LDST8R_ARM64_LDST16R_ARM64_LDST32R_ARM64_LDST64R_ARM64_LDST128R_POWER_TLS_LER_POWER_TLS_IER_POWER_TLSR_POWER_TLS_IE_PCREL34R_POWER_TLS_LE_TPREL34R_ADDRPOWER_DSR_ADDRPOWER_GOTR_ADDRPOWER_GOT_PCREL34R_ADDRPOWER_PCRELR_ADDRPOWER_TOCRELR_ADDRPOWER_TOCREL_DSR_ADDRPOWER_D34R_ADDRPOWER_PCREL34R_RISCV_JALR_RISCV_JAL_TRAMPR_RISCV_CALLR_RISCV_PCREL_ITYPER_RISCV_PCREL_STYPER_RISCV_TLS_IER_RISCV_TLS_LER_RISCV_GOT_HI20R_RISCV_GOT_PCREL_ITYPER_RISCV_PCREL_HI20R_RISCV_PCREL_LO12_IR_RISCV_PCREL_LO12_SR_RISCV_BRANCHR_RISCV_ADD32R_RISCV_SUB32R_RISCV_RVC_BRANCHR_RISCV_RVC_JUMPR_PCRELDBLR_LOONG64_ADDR_HIR_LOONG64_ADDR_LOR_LOONG64_ADDR64_HIR_LOONG64_ADDR64_LOR_LOONG64_ADDR_PCREL20_S2R_LOONG64_TLS_LE_HIR_LOONG64_TLS_LE_LOR_CALLLOONG64R_LOONG64_CALL36R_LOONG64_TLS_IE_HIR_LOONG64_TLS_IE_LOR_LOONG64_GOT_HIR_LOONG64_GOT_LOR_LOONG64_GOT64_HIR_LOONG64_GOT64_LOR_LOONG64_ADD64R_LOONG64_SUB64R_JMP16LOONG64R_JMP21LOONG64R_ADDRMIPSUR_ADDRMIPSTLSR_ADDRCUOFFR_WASMIMPORTR_XCOFFREFR_PEIMAGEOFFR_INITORDERR_DWTXTADDR_U1R_DWTXTADDR_U2R_DWTXTADDR_U3R_DWTXTADDR_U4" -var _RelocType_index = [...]uint16{0, 6, 17, 28, 38, 47, 53, 59, 68, 79, 88, 99, 109, 116, 123, 131, 139, 147, 153, 159, 165, 175, 184, 194, 210, 226, 237, 243, 254, 264, 273, 286, 300, 314, 330, 341, 354, 373, 393, 413, 433, 446, 460, 474, 488, 503, 517, 531, 542, 564, 586, 600, 615, 638, 655, 673, 694, 709, 728, 739, 756, 768, 787, 806, 820, 834, 850, 873, 891, 911, 931, 945, 958, 971, 989, 1005, 1015, 1032, 1049, 1074, 1093, 1112, 1125, 1141, 1160, 1179, 1195, 1211, 1226, 1241, 1255, 1269, 1280, 1293, 1304, 1316, 1326, 1338, 1349, 1363, 1377, 1391, 1405} +var _RelocType_index = [...]uint16{0, 6, 17, 28, 38, 47, 53, 59, 68, 79, 88, 99, 109, 116, 123, 131, 139, 147, 153, 159, 165, 175, 184, 194, 210, 226, 237, 243, 254, 264, 273, 286, 300, 314, 330, 341, 354, 373, 393, 413, 433, 446, 460, 474, 488, 503, 517, 531, 542, 564, 586, 600, 615, 638, 655, 673, 694, 709, 728, 739, 756, 768, 787, 806, 820, 834, 850, 873, 891, 911, 931, 945, 958, 971, 989, 1005, 1015, 1032, 1049, 1068, 1087, 1112, 1131, 1150, 1163, 1179, 1198, 1217, 1233, 1249, 1267, 1285, 1300, 1315, 1329, 1343, 1354, 1367, 1378, 1390, 1400, 1412, 1423, 1437, 1451, 1465, 1479} func (i RelocType) String() string { - i -= 1 - if i < 0 || i >= RelocType(len(_RelocType_index)-1) { - return "RelocType(" + strconv.FormatInt(int64(i+1), 10) + ")" + idx := int(i) - 1 + if i < 1 || idx >= len(_RelocType_index)-1 { + return "RelocType(" + strconv.FormatInt(int64(i), 10) + ")" } - return _RelocType_name[_RelocType_index[i]:_RelocType_index[i+1]] + return _RelocType_name[_RelocType_index[idx]:_RelocType_index[idx+1]] } diff --git a/src/cmd/internal/objabi/symkind_string.go b/src/cmd/internal/objabi/symkind_string.go index fbf6a826a4..a22f9a6a1c 100644 --- a/src/cmd/internal/objabi/symkind_string.go +++ b/src/cmd/internal/objabi/symkind_string.go @@ -41,8 +41,9 @@ const _SymKind_name = "SxxxSTEXTSTEXTFIPSSRODATASRODATAFIPSSNOPTRDATASNOPTRDATAF var _SymKind_index = [...]uint16{0, 4, 9, 18, 25, 36, 46, 60, 65, 74, 78, 87, 94, 106, 117, 126, 138, 148, 157, 168, 177, 188, 198, 221, 238, 254, 268} func (i SymKind) String() string { - if i >= SymKind(len(_SymKind_index)-1) { + idx := int(i) - 0 + if i < 0 || idx >= len(_SymKind_index)-1 { return "SymKind(" + strconv.FormatInt(int64(i), 10) + ")" } - return _SymKind_name[_SymKind_index[i]:_SymKind_index[i+1]] + return _SymKind_name[_SymKind_index[idx]:_SymKind_index[idx+1]] } |
