rel.Siz = 4
rel.Sym = p.To.Sym
rel.Add = p.To.Offset
- rel.Type = objabi.R_ADDRLOONG64U
+ rel.Type = objabi.R_LOONG64_ADDR_HI
o2 = OP_12IRR(c.opirr(p.As), uint32(0), uint32(REGTMP), uint32(p.From.Reg))
rel2 := obj.Addrel(c.cursym)
rel2.Siz = 4
rel2.Sym = p.To.Sym
rel2.Add = p.To.Offset
- rel2.Type = objabi.R_ADDRLOONG64
+ rel2.Type = objabi.R_LOONG64_ADDR_LO
case 51: // mov addr,r ==> pcalau12i + lw
o1 = OP_IR(c.opir(APCALAU12I), uint32(0), uint32(REGTMP))
rel.Siz = 4
rel.Sym = p.From.Sym
rel.Add = p.From.Offset
- rel.Type = objabi.R_ADDRLOONG64U
+ rel.Type = objabi.R_LOONG64_ADDR_HI
o2 = OP_12IRR(c.opirr(-p.As), uint32(0), uint32(REGTMP), uint32(p.To.Reg))
rel2 := obj.Addrel(c.cursym)
rel2.Off = int32(c.pc + 4)
rel2.Siz = 4
rel2.Sym = p.From.Sym
rel2.Add = p.From.Offset
- rel2.Type = objabi.R_ADDRLOONG64
+ rel2.Type = objabi.R_LOONG64_ADDR_LO
case 52: // mov $lext, r
// NOTE: this case does not use REGTMP. If it ever does,
rel.Siz = 4
rel.Sym = p.From.Sym
rel.Add = p.From.Offset
- rel.Type = objabi.R_ADDRLOONG64U
+ rel.Type = objabi.R_LOONG64_ADDR_HI
o2 = OP_12IRR(c.opirr(add), uint32(0), uint32(p.To.Reg), uint32(p.To.Reg))
rel2 := obj.Addrel(c.cursym)
rel2.Off = int32(c.pc + 4)
rel2.Siz = 4
rel2.Sym = p.From.Sym
rel2.Add = p.From.Offset
- rel2.Type = objabi.R_ADDRLOONG64
+ rel2.Type = objabi.R_LOONG64_ADDR_LO
case 53: // mov r, tlsvar ==> lu12i.w + ori + add r2, regtmp + sw o(regtmp)
// NOTE: this case does not use REGTMP. If it ever does,
rel.Siz = 4
rel.Sym = p.To.Sym
rel.Add = p.To.Offset
- rel.Type = objabi.R_ADDRLOONG64TLSU
+ rel.Type = objabi.R_LOONG64_TLS_LE_HI
o2 = OP_12IRR(c.opirr(AOR), uint32(0), uint32(REGTMP), uint32(REGTMP))
rel2 := obj.Addrel(c.cursym)
rel2.Off = int32(c.pc + 4)
rel2.Siz = 4
rel2.Sym = p.To.Sym
rel2.Add = p.To.Offset
- rel2.Type = objabi.R_ADDRLOONG64TLS
+ rel2.Type = objabi.R_LOONG64_TLS_LE_LO
o3 = OP_RRR(c.oprrr(AADDV), uint32(REG_R2), uint32(REGTMP), uint32(REGTMP))
o4 = OP_12IRR(c.opirr(p.As), uint32(0), uint32(REGTMP), uint32(p.From.Reg))
rel.Siz = 4
rel.Sym = p.From.Sym
rel.Add = p.From.Offset
- rel.Type = objabi.R_ADDRLOONG64TLSU
+ rel.Type = objabi.R_LOONG64_TLS_LE_HI
o2 = OP_12IRR(c.opirr(AOR), uint32(0), uint32(REGTMP), uint32(REGTMP))
rel2 := obj.Addrel(c.cursym)
rel2.Off = int32(c.pc + 4)
rel2.Siz = 4
rel2.Sym = p.From.Sym
rel2.Add = p.From.Offset
- rel2.Type = objabi.R_ADDRLOONG64TLS
+ rel2.Type = objabi.R_LOONG64_TLS_LE_LO
o3 = OP_RRR(c.oprrr(AADDV), uint32(REG_R2), uint32(REGTMP), uint32(REGTMP))
o4 = OP_12IRR(c.opirr(-p.As), uint32(0), uint32(REGTMP), uint32(p.To.Reg))
rel.Siz = 4
rel.Sym = p.From.Sym
rel.Add = p.From.Offset
- rel.Type = objabi.R_ADDRLOONG64TLSU
+ rel.Type = objabi.R_LOONG64_TLS_LE_HI
o2 = OP_12IRR(c.opirr(AOR), uint32(0), uint32(REGTMP), uint32(REGTMP))
rel2 := obj.Addrel(c.cursym)
rel2.Off = int32(c.pc + 4)
rel2.Siz = 4
rel2.Sym = p.From.Sym
rel2.Add = p.From.Offset
- rel2.Type = objabi.R_ADDRLOONG64TLS
+ rel2.Type = objabi.R_LOONG64_TLS_LE_LO
o3 = OP_RRR(c.oprrr(AADDV), uint32(REG_R2), uint32(REGTMP), uint32(p.To.Reg))
case 56: // mov r, tlsvar IE model ==> (pcalau12i + ld.d)tlsvar@got + add.d + st.d
rel.Siz = 4
rel.Sym = p.To.Sym
rel.Add = 0x0
- rel.Type = objabi.R_LOONG64_TLS_IE_PCREL_HI
+ rel.Type = objabi.R_LOONG64_TLS_IE_HI
o2 = OP_12IRR(c.opirr(-p.As), uint32(0), uint32(REGTMP), uint32(REGTMP))
rel2 := obj.Addrel(c.cursym)
rel2.Off = int32(c.pc + 4)
rel.Siz = 4
rel.Sym = p.From.Sym
rel.Add = 0x0
- rel.Type = objabi.R_LOONG64_TLS_IE_PCREL_HI
+ rel.Type = objabi.R_LOONG64_TLS_IE_HI
o2 = OP_12IRR(c.opirr(-p.As), uint32(0), uint32(REGTMP), uint32(REGTMP))
rel2 := obj.Addrel(c.cursym)
rel2.Off = int32(c.pc + 4)
// Loong64.
- // R_ADDRLOONG64 resolves to the low 12 bits of an external address, by encoding
- // it into the instruction.
- R_ADDRLOONG64
-
- // R_ADDRLOONG64U resolves to the sign-adjusted "upper" 20 bits (bit 5-24) of an
+ // 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_ADDRLOONG64U
+ // R_LOONG64_ADDR_LO resolves to the low 12 bits of an external address, by encoding
+ // it into the instruction.
+ R_LOONG64_ADDR_HI
+ R_LOONG64_ADDR_LO
- // R_ADDRLOONG64TLS resolves to the low 12 bits of a TLS address (offset from
+ // R_LOONG64_TLS_LE_HI resolves to the high 20 bits of a TLS address (offset from
// thread pointer), by encoding it into the instruction.
- R_ADDRLOONG64TLS
-
- // R_ADDRLOONG64TLSU resolves to the high 20 bits of a TLS address (offset from
+ // R_LOONG64_TLS_LE_LO resolves to the low 12 bits of a TLS address (offset from
// thread pointer), by encoding it into the instruction.
- R_ADDRLOONG64TLSU
+ R_LOONG64_TLS_LE_HI
+ R_LOONG64_TLS_LE_LO
// R_CALLLOONG64 resolves to non-PC-relative target address of a CALL (BL/JIRL)
// instruction, by encoding the address into the instruction.
R_CALLLOONG64
- // R_LOONG64_TLS_IE_PCREL_HI and R_LOONG64_TLS_IE_LO relocates a pcalau12i, ld.d
+ // R_LOONG64_TLS_IE_HI and R_LOONG64_TLS_IE_LO relocates a pcalau12i, ld.d
// pair to compute the address of the GOT slot of the tls symbol.
- R_LOONG64_TLS_IE_PCREL_HI
+ 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,
_ = x[R_RISCV_RVC_BRANCH-72]
_ = x[R_RISCV_RVC_JUMP-73]
_ = x[R_PCRELDBL-74]
- _ = x[R_ADDRLOONG64-75]
- _ = x[R_ADDRLOONG64U-76]
- _ = x[R_ADDRLOONG64TLS-77]
- _ = x[R_ADDRLOONG64TLSU-78]
+ _ = x[R_LOONG64_ADDR_HI-75]
+ _ = x[R_LOONG64_ADDR_LO-76]
+ _ = x[R_LOONG64_TLS_LE_HI-77]
+ _ = x[R_LOONG64_TLS_LE_LO-78]
_ = x[R_CALLLOONG64-79]
- _ = x[R_LOONG64_TLS_IE_PCREL_HI-80]
+ _ = x[R_LOONG64_TLS_IE_HI-80]
_ = x[R_LOONG64_TLS_IE_LO-81]
_ = x[R_LOONG64_GOT_HI-82]
_ = x[R_LOONG64_GOT_LO-83]
_ = x[R_INITORDER-91]
}
-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_DWARFFILEREFR_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_PCREL_HI20R_RISCV_PCREL_LO12_IR_RISCV_PCREL_LO12_SR_RISCV_BRANCHR_RISCV_RVC_BRANCHR_RISCV_RVC_JUMPR_PCRELDBLR_ADDRLOONG64R_ADDRLOONG64UR_ADDRLOONG64TLSR_ADDRLOONG64TLSUR_CALLLOONG64R_LOONG64_TLS_IE_PCREL_HIR_LOONG64_TLS_IE_LOR_LOONG64_GOT_HIR_LOONG64_GOT_LOR_JMPLOONG64R_ADDRMIPSUR_ADDRMIPSTLSR_ADDRCUOFFR_WASMIMPORTR_XCOFFREFR_PEIMAGEOFFR_INITORDER"
+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_DWARFFILEREFR_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_PCREL_HI20R_RISCV_PCREL_LO12_IR_RISCV_PCREL_LO12_SR_RISCV_BRANCHR_RISCV_RVC_BRANCHR_RISCV_RVC_JUMPR_PCRELDBLR_LOONG64_ADDR_HIR_LOONG64_ADDR_LOR_LOONG64_TLS_LE_HIR_LOONG64_TLS_LE_LOR_CALLLOONG64R_LOONG64_TLS_IE_HIR_LOONG64_TLS_IE_LOR_LOONG64_GOT_HIR_LOONG64_GOT_LOR_JMPLOONG64R_ADDRMIPSUR_ADDRMIPSTLSR_ADDRCUOFFR_WASMIMPORTR_XCOFFREFR_PEIMAGEOFFR_INITORDER"
-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, 328, 344, 355, 368, 387, 407, 427, 447, 460, 474, 488, 502, 517, 531, 545, 556, 578, 600, 614, 629, 652, 669, 687, 708, 723, 742, 753, 770, 782, 801, 820, 834, 848, 864, 882, 902, 922, 936, 954, 970, 980, 993, 1007, 1023, 1040, 1053, 1078, 1097, 1113, 1129, 1141, 1152, 1165, 1176, 1188, 1198, 1210, 1221}
+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, 328, 344, 355, 368, 387, 407, 427, 447, 460, 474, 488, 502, 517, 531, 545, 556, 578, 600, 614, 629, 652, 669, 687, 708, 723, 742, 753, 770, 782, 801, 820, 834, 848, 864, 882, 902, 922, 936, 954, 970, 980, 997, 1014, 1033, 1052, 1065, 1084, 1103, 1119, 1135, 1147, 1158, 1171, 1182, 1194, 1204, 1216, 1227}
func (i RelocType) String() string {
i -= 1
// 0: 1a000004 pcalau12i $a0, 0
// 0: R_LARCH_PCALA_HI20 local.moduledata
o(0x1a000004)
- rel, _ := initfunc.AddRel(objabi.R_ADDRLOONG64U)
+ rel, _ := initfunc.AddRel(objabi.R_LOONG64_ADDR_HI)
rel.SetOff(0)
rel.SetSiz(4)
rel.SetSym(ctxt.Moduledata)
// 4: 02c00084 addi.d $a0, $a0, 0
// 4: R_LARCH_PCALA_LO12 local.moduledata
o(0x02c00084)
- rel2, _ := initfunc.AddRel(objabi.R_ADDRLOONG64)
+ rel2, _ := initfunc.AddRel(objabi.R_LOONG64_ADDR_LO)
rel2.SetOff(4)
rel2.SetSiz(4)
rel2.SetSym(ctxt.Moduledata)
default:
return false
}
- case objabi.R_ADDRLOONG64TLS:
+ case objabi.R_LOONG64_TLS_LE_LO:
out.Write64(uint64(sectoff))
out.Write64(uint64(elf.R_LARCH_TLS_LE_LO12) | uint64(elfsym)<<32)
out.Write64(uint64(r.Xadd))
- case objabi.R_ADDRLOONG64TLSU:
+ case objabi.R_LOONG64_TLS_LE_HI:
out.Write64(uint64(sectoff))
out.Write64(uint64(elf.R_LARCH_TLS_LE_HI20) | uint64(elfsym)<<32)
out.Write64(uint64(r.Xadd))
out.Write64(uint64(elf.R_LARCH_B26) | uint64(elfsym)<<32)
out.Write64(uint64(r.Xadd))
- case objabi.R_LOONG64_TLS_IE_PCREL_HI:
+ case objabi.R_LOONG64_TLS_IE_HI:
out.Write64(uint64(sectoff))
out.Write64(uint64(elf.R_LARCH_TLS_IE_PC_HI20) | uint64(elfsym)<<32)
out.Write64(uint64(0x0))
out.Write64(uint64(elf.R_LARCH_TLS_IE_PC_LO12) | uint64(elfsym)<<32)
out.Write64(uint64(0x0))
- case objabi.R_ADDRLOONG64:
+ case objabi.R_LOONG64_ADDR_LO:
out.Write64(uint64(sectoff))
out.Write64(uint64(elf.R_LARCH_PCALA_LO12) | uint64(elfsym)<<32)
out.Write64(uint64(r.Xadd))
- case objabi.R_ADDRLOONG64U:
+ case objabi.R_LOONG64_ADDR_HI:
out.Write64(uint64(sectoff))
out.Write64(uint64(elf.R_LARCH_PCALA_HI20) | uint64(elfsym)<<32)
out.Write64(uint64(r.Xadd))
switch r.Type() {
default:
return val, 0, false
- case objabi.R_ADDRLOONG64,
- objabi.R_ADDRLOONG64U:
+ case objabi.R_LOONG64_ADDR_HI,
+ objabi.R_LOONG64_ADDR_LO:
// set up addend for eventual relocation via outer symbol.
rs, _ := ld.FoldSubSymbolOffset(ldr, rs)
rst := ldr.SymType(rs)
ldr.Errorf(s, "missing section for %s", ldr.SymName(rs))
}
return val, 1, true
- case objabi.R_ADDRLOONG64TLS,
- objabi.R_ADDRLOONG64TLSU,
+ case objabi.R_LOONG64_TLS_LE_HI,
+ objabi.R_LOONG64_TLS_LE_LO,
objabi.R_CALLLOONG64,
objabi.R_JMPLOONG64,
- objabi.R_LOONG64_TLS_IE_PCREL_HI,
+ objabi.R_LOONG64_TLS_IE_HI,
objabi.R_LOONG64_TLS_IE_LO,
objabi.R_LOONG64_GOT_HI,
objabi.R_LOONG64_GOT_LO:
return r.Add(), noExtReloc, isOk
case objabi.R_GOTOFF:
return ldr.SymValue(r.Sym()) + r.Add() - ldr.SymValue(syms.GOT), noExtReloc, isOk
- case objabi.R_ADDRLOONG64,
- objabi.R_ADDRLOONG64U:
+ case objabi.R_LOONG64_ADDR_HI,
+ objabi.R_LOONG64_ADDR_LO:
pc := ldr.SymValue(s) + int64(r.Off())
t := calculatePCAlignedReloc(r.Type(), ldr.SymAddr(rs)+r.Add(), pc)
- if r.Type() == objabi.R_ADDRLOONG64 {
+ if r.Type() == objabi.R_LOONG64_ADDR_LO {
return int64(val&0xffc003ff | (t << 10)), noExtReloc, isOk
}
return int64(val&0xfe00001f | (t << 5)), noExtReloc, isOk
- case objabi.R_ADDRLOONG64TLS,
- objabi.R_ADDRLOONG64TLSU:
+ case objabi.R_LOONG64_TLS_LE_HI,
+ objabi.R_LOONG64_TLS_LE_LO:
t := ldr.SymAddr(rs) + r.Add()
- if r.Type() == objabi.R_ADDRLOONG64TLS {
+ if r.Type() == objabi.R_LOONG64_TLS_LE_LO {
return int64(val&0xffc003ff | ((t & 0xfff) << 10)), noExtReloc, isOk
}
return int64(val&0xfe00001f | (((t) >> 12 << 5) & 0x1ffffe0)), noExtReloc, isOk
func extreloc(target *ld.Target, ldr *loader.Loader, r loader.Reloc, s loader.Sym) (loader.ExtReloc, bool) {
switch r.Type() {
- case objabi.R_ADDRLOONG64,
- objabi.R_ADDRLOONG64U,
+ case objabi.R_LOONG64_ADDR_HI,
+ objabi.R_LOONG64_ADDR_LO,
objabi.R_LOONG64_GOT_HI,
objabi.R_LOONG64_GOT_LO:
-
return ld.ExtrelocViaOuterSym(ldr, r, s), true
- case objabi.R_ADDRLOONG64TLS,
- objabi.R_ADDRLOONG64TLSU,
+ case objabi.R_LOONG64_TLS_LE_HI,
+ objabi.R_LOONG64_TLS_LE_LO,
objabi.R_CONST,
objabi.R_GOTOFF,
objabi.R_CALLLOONG64,
objabi.R_JMPLOONG64,
- objabi.R_LOONG64_TLS_IE_PCREL_HI,
+ objabi.R_LOONG64_TLS_IE_HI,
objabi.R_LOONG64_TLS_IE_LO:
return ld.ExtrelocSimple(ldr, r), true
}
func isRequestingLowPageBits(t objabi.RelocType) bool {
switch t {
- case objabi.R_ADDRLOONG64:
+ case objabi.R_LOONG64_ADDR_LO:
return true
}
return false