Skip to content

Commit 0584574

Browse files
limeidancherrymui
authored andcommitted
cmd/internal, cmd/link: unify the relocation naming style of loong64
Change-Id: I2990701e71a63af7bdd6851b6008dc63cb1c1a83 Reviewed-on: https://go-review.googlesource.com/c/go/+/535616 Reviewed-by: abner chenc <[email protected]> LUCI-TryBot-Result: Go LUCI <[email protected]> Reviewed-by: Michael Pratt <[email protected]> Reviewed-by: sophie zhao <[email protected]> Reviewed-by: Cherry Mui <[email protected]> Run-TryBot: Cherry Mui <[email protected]> TryBot-Result: Gopher Robot <[email protected]>
1 parent 98bccd3 commit 0584574

File tree

4 files changed

+56
-59
lines changed

4 files changed

+56
-59
lines changed

src/cmd/internal/obj/loong64/asm.go

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1607,15 +1607,15 @@ func (c *ctxt0) asmout(p *obj.Prog, o *Optab, out []uint32) {
16071607
rel.Siz = 4
16081608
rel.Sym = p.To.Sym
16091609
rel.Add = p.To.Offset
1610-
rel.Type = objabi.R_ADDRLOONG64U
1610+
rel.Type = objabi.R_LOONG64_ADDR_HI
16111611

16121612
o2 = OP_12IRR(c.opirr(p.As), uint32(0), uint32(REGTMP), uint32(p.From.Reg))
16131613
rel2 := obj.Addrel(c.cursym)
16141614
rel2.Off = int32(c.pc + 4)
16151615
rel2.Siz = 4
16161616
rel2.Sym = p.To.Sym
16171617
rel2.Add = p.To.Offset
1618-
rel2.Type = objabi.R_ADDRLOONG64
1618+
rel2.Type = objabi.R_LOONG64_ADDR_LO
16191619

16201620
case 51: // mov addr,r ==> pcalau12i + lw
16211621
o1 = OP_IR(c.opir(APCALAU12I), uint32(0), uint32(REGTMP))
@@ -1624,14 +1624,14 @@ func (c *ctxt0) asmout(p *obj.Prog, o *Optab, out []uint32) {
16241624
rel.Siz = 4
16251625
rel.Sym = p.From.Sym
16261626
rel.Add = p.From.Offset
1627-
rel.Type = objabi.R_ADDRLOONG64U
1627+
rel.Type = objabi.R_LOONG64_ADDR_HI
16281628
o2 = OP_12IRR(c.opirr(-p.As), uint32(0), uint32(REGTMP), uint32(p.To.Reg))
16291629
rel2 := obj.Addrel(c.cursym)
16301630
rel2.Off = int32(c.pc + 4)
16311631
rel2.Siz = 4
16321632
rel2.Sym = p.From.Sym
16331633
rel2.Add = p.From.Offset
1634-
rel2.Type = objabi.R_ADDRLOONG64
1634+
rel2.Type = objabi.R_LOONG64_ADDR_LO
16351635

16361636
case 52: // mov $lext, r
16371637
// NOTE: this case does not use REGTMP. If it ever does,
@@ -1642,14 +1642,14 @@ func (c *ctxt0) asmout(p *obj.Prog, o *Optab, out []uint32) {
16421642
rel.Siz = 4
16431643
rel.Sym = p.From.Sym
16441644
rel.Add = p.From.Offset
1645-
rel.Type = objabi.R_ADDRLOONG64U
1645+
rel.Type = objabi.R_LOONG64_ADDR_HI
16461646
o2 = OP_12IRR(c.opirr(add), uint32(0), uint32(p.To.Reg), uint32(p.To.Reg))
16471647
rel2 := obj.Addrel(c.cursym)
16481648
rel2.Off = int32(c.pc + 4)
16491649
rel2.Siz = 4
16501650
rel2.Sym = p.From.Sym
16511651
rel2.Add = p.From.Offset
1652-
rel2.Type = objabi.R_ADDRLOONG64
1652+
rel2.Type = objabi.R_LOONG64_ADDR_LO
16531653

16541654
case 53: // mov r, tlsvar ==> lu12i.w + ori + add r2, regtmp + sw o(regtmp)
16551655
// NOTE: this case does not use REGTMP. If it ever does,
@@ -1660,14 +1660,14 @@ func (c *ctxt0) asmout(p *obj.Prog, o *Optab, out []uint32) {
16601660
rel.Siz = 4
16611661
rel.Sym = p.To.Sym
16621662
rel.Add = p.To.Offset
1663-
rel.Type = objabi.R_ADDRLOONG64TLSU
1663+
rel.Type = objabi.R_LOONG64_TLS_LE_HI
16641664
o2 = OP_12IRR(c.opirr(AOR), uint32(0), uint32(REGTMP), uint32(REGTMP))
16651665
rel2 := obj.Addrel(c.cursym)
16661666
rel2.Off = int32(c.pc + 4)
16671667
rel2.Siz = 4
16681668
rel2.Sym = p.To.Sym
16691669
rel2.Add = p.To.Offset
1670-
rel2.Type = objabi.R_ADDRLOONG64TLS
1670+
rel2.Type = objabi.R_LOONG64_TLS_LE_LO
16711671
o3 = OP_RRR(c.oprrr(AADDV), uint32(REG_R2), uint32(REGTMP), uint32(REGTMP))
16721672
o4 = OP_12IRR(c.opirr(p.As), uint32(0), uint32(REGTMP), uint32(p.From.Reg))
16731673

@@ -1680,14 +1680,14 @@ func (c *ctxt0) asmout(p *obj.Prog, o *Optab, out []uint32) {
16801680
rel.Siz = 4
16811681
rel.Sym = p.From.Sym
16821682
rel.Add = p.From.Offset
1683-
rel.Type = objabi.R_ADDRLOONG64TLSU
1683+
rel.Type = objabi.R_LOONG64_TLS_LE_HI
16841684
o2 = OP_12IRR(c.opirr(AOR), uint32(0), uint32(REGTMP), uint32(REGTMP))
16851685
rel2 := obj.Addrel(c.cursym)
16861686
rel2.Off = int32(c.pc + 4)
16871687
rel2.Siz = 4
16881688
rel2.Sym = p.From.Sym
16891689
rel2.Add = p.From.Offset
1690-
rel2.Type = objabi.R_ADDRLOONG64TLS
1690+
rel2.Type = objabi.R_LOONG64_TLS_LE_LO
16911691
o3 = OP_RRR(c.oprrr(AADDV), uint32(REG_R2), uint32(REGTMP), uint32(REGTMP))
16921692
o4 = OP_12IRR(c.opirr(-p.As), uint32(0), uint32(REGTMP), uint32(p.To.Reg))
16931693

@@ -1700,14 +1700,14 @@ func (c *ctxt0) asmout(p *obj.Prog, o *Optab, out []uint32) {
17001700
rel.Siz = 4
17011701
rel.Sym = p.From.Sym
17021702
rel.Add = p.From.Offset
1703-
rel.Type = objabi.R_ADDRLOONG64TLSU
1703+
rel.Type = objabi.R_LOONG64_TLS_LE_HI
17041704
o2 = OP_12IRR(c.opirr(AOR), uint32(0), uint32(REGTMP), uint32(REGTMP))
17051705
rel2 := obj.Addrel(c.cursym)
17061706
rel2.Off = int32(c.pc + 4)
17071707
rel2.Siz = 4
17081708
rel2.Sym = p.From.Sym
17091709
rel2.Add = p.From.Offset
1710-
rel2.Type = objabi.R_ADDRLOONG64TLS
1710+
rel2.Type = objabi.R_LOONG64_TLS_LE_LO
17111711
o3 = OP_RRR(c.oprrr(AADDV), uint32(REG_R2), uint32(REGTMP), uint32(p.To.Reg))
17121712

17131713
case 56: // mov r, tlsvar IE model ==> (pcalau12i + ld.d)tlsvar@got + add.d + st.d
@@ -1717,7 +1717,7 @@ func (c *ctxt0) asmout(p *obj.Prog, o *Optab, out []uint32) {
17171717
rel.Siz = 4
17181718
rel.Sym = p.To.Sym
17191719
rel.Add = 0x0
1720-
rel.Type = objabi.R_LOONG64_TLS_IE_PCREL_HI
1720+
rel.Type = objabi.R_LOONG64_TLS_IE_HI
17211721
o2 = OP_12IRR(c.opirr(-p.As), uint32(0), uint32(REGTMP), uint32(REGTMP))
17221722
rel2 := obj.Addrel(c.cursym)
17231723
rel2.Off = int32(c.pc + 4)
@@ -1735,7 +1735,7 @@ func (c *ctxt0) asmout(p *obj.Prog, o *Optab, out []uint32) {
17351735
rel.Siz = 4
17361736
rel.Sym = p.From.Sym
17371737
rel.Add = 0x0
1738-
rel.Type = objabi.R_LOONG64_TLS_IE_PCREL_HI
1738+
rel.Type = objabi.R_LOONG64_TLS_IE_HI
17391739
o2 = OP_12IRR(c.opirr(-p.As), uint32(0), uint32(REGTMP), uint32(REGTMP))
17401740
rel2 := obj.Addrel(c.cursym)
17411741
rel2.Off = int32(c.pc + 4)

src/cmd/internal/objabi/reloctype.go

Lines changed: 11 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -320,29 +320,27 @@ const (
320320

321321
// Loong64.
322322

323-
// R_ADDRLOONG64 resolves to the low 12 bits of an external address, by encoding
324-
// it into the instruction.
325-
R_ADDRLOONG64
326-
327-
// R_ADDRLOONG64U resolves to the sign-adjusted "upper" 20 bits (bit 5-24) of an
323+
// R_LOONG64_ADDR_HI resolves to the sign-adjusted "upper" 20 bits (bit 5-24) of an
328324
// external address, by encoding it into the instruction.
329-
R_ADDRLOONG64U
325+
// R_LOONG64_ADDR_LO resolves to the low 12 bits of an external address, by encoding
326+
// it into the instruction.
327+
R_LOONG64_ADDR_HI
328+
R_LOONG64_ADDR_LO
330329

331-
// R_ADDRLOONG64TLS resolves to the low 12 bits of a TLS address (offset from
330+
// R_LOONG64_TLS_LE_HI resolves to the high 20 bits of a TLS address (offset from
332331
// thread pointer), by encoding it into the instruction.
333-
R_ADDRLOONG64TLS
334-
335-
// R_ADDRLOONG64TLSU resolves to the high 20 bits of a TLS address (offset from
332+
// R_LOONG64_TLS_LE_LO resolves to the low 12 bits of a TLS address (offset from
336333
// thread pointer), by encoding it into the instruction.
337-
R_ADDRLOONG64TLSU
334+
R_LOONG64_TLS_LE_HI
335+
R_LOONG64_TLS_LE_LO
338336

339337
// R_CALLLOONG64 resolves to non-PC-relative target address of a CALL (BL/JIRL)
340338
// instruction, by encoding the address into the instruction.
341339
R_CALLLOONG64
342340

343-
// R_LOONG64_TLS_IE_PCREL_HI and R_LOONG64_TLS_IE_LO relocates a pcalau12i, ld.d
341+
// R_LOONG64_TLS_IE_HI and R_LOONG64_TLS_IE_LO relocates a pcalau12i, ld.d
344342
// pair to compute the address of the GOT slot of the tls symbol.
345-
R_LOONG64_TLS_IE_PCREL_HI
343+
R_LOONG64_TLS_IE_HI
346344
R_LOONG64_TLS_IE_LO
347345

348346
// R_LOONG64_GOT_HI and R_LOONG64_GOT_LO resolves a GOT-relative instruction sequence,

src/cmd/internal/objabi/reloctype_string.go

Lines changed: 7 additions & 7 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/cmd/link/internal/loong64/asm.go

Lines changed: 24 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -34,15 +34,15 @@ func gentext(ctxt *ld.Link, ldr *loader.Loader) {
3434
// 0: 1a000004 pcalau12i $a0, 0
3535
// 0: R_LARCH_PCALA_HI20 local.moduledata
3636
o(0x1a000004)
37-
rel, _ := initfunc.AddRel(objabi.R_ADDRLOONG64U)
37+
rel, _ := initfunc.AddRel(objabi.R_LOONG64_ADDR_HI)
3838
rel.SetOff(0)
3939
rel.SetSiz(4)
4040
rel.SetSym(ctxt.Moduledata)
4141

4242
// 4: 02c00084 addi.d $a0, $a0, 0
4343
// 4: R_LARCH_PCALA_LO12 local.moduledata
4444
o(0x02c00084)
45-
rel2, _ := initfunc.AddRel(objabi.R_ADDRLOONG64)
45+
rel2, _ := initfunc.AddRel(objabi.R_LOONG64_ADDR_LO)
4646
rel2.SetOff(4)
4747
rel2.SetSiz(4)
4848
rel2.SetSym(ctxt.Moduledata)
@@ -84,12 +84,12 @@ func elfreloc1(ctxt *ld.Link, out *ld.OutBuf, ldr *loader.Loader, s loader.Sym,
8484
default:
8585
return false
8686
}
87-
case objabi.R_ADDRLOONG64TLS:
87+
case objabi.R_LOONG64_TLS_LE_LO:
8888
out.Write64(uint64(sectoff))
8989
out.Write64(uint64(elf.R_LARCH_TLS_LE_LO12) | uint64(elfsym)<<32)
9090
out.Write64(uint64(r.Xadd))
9191

92-
case objabi.R_ADDRLOONG64TLSU:
92+
case objabi.R_LOONG64_TLS_LE_HI:
9393
out.Write64(uint64(sectoff))
9494
out.Write64(uint64(elf.R_LARCH_TLS_LE_HI20) | uint64(elfsym)<<32)
9595
out.Write64(uint64(r.Xadd))
@@ -99,7 +99,7 @@ func elfreloc1(ctxt *ld.Link, out *ld.OutBuf, ldr *loader.Loader, s loader.Sym,
9999
out.Write64(uint64(elf.R_LARCH_B26) | uint64(elfsym)<<32)
100100
out.Write64(uint64(r.Xadd))
101101

102-
case objabi.R_LOONG64_TLS_IE_PCREL_HI:
102+
case objabi.R_LOONG64_TLS_IE_HI:
103103
out.Write64(uint64(sectoff))
104104
out.Write64(uint64(elf.R_LARCH_TLS_IE_PC_HI20) | uint64(elfsym)<<32)
105105
out.Write64(uint64(0x0))
@@ -109,12 +109,12 @@ func elfreloc1(ctxt *ld.Link, out *ld.OutBuf, ldr *loader.Loader, s loader.Sym,
109109
out.Write64(uint64(elf.R_LARCH_TLS_IE_PC_LO12) | uint64(elfsym)<<32)
110110
out.Write64(uint64(0x0))
111111

112-
case objabi.R_ADDRLOONG64:
112+
case objabi.R_LOONG64_ADDR_LO:
113113
out.Write64(uint64(sectoff))
114114
out.Write64(uint64(elf.R_LARCH_PCALA_LO12) | uint64(elfsym)<<32)
115115
out.Write64(uint64(r.Xadd))
116116

117-
case objabi.R_ADDRLOONG64U:
117+
case objabi.R_LOONG64_ADDR_HI:
118118
out.Write64(uint64(sectoff))
119119
out.Write64(uint64(elf.R_LARCH_PCALA_HI20) | uint64(elfsym)<<32)
120120
out.Write64(uint64(r.Xadd))
@@ -147,20 +147,20 @@ func archreloc(target *ld.Target, ldr *loader.Loader, syms *ld.ArchSyms, r loade
147147
switch r.Type() {
148148
default:
149149
return val, 0, false
150-
case objabi.R_ADDRLOONG64,
151-
objabi.R_ADDRLOONG64U:
150+
case objabi.R_LOONG64_ADDR_HI,
151+
objabi.R_LOONG64_ADDR_LO:
152152
// set up addend for eventual relocation via outer symbol.
153153
rs, _ := ld.FoldSubSymbolOffset(ldr, rs)
154154
rst := ldr.SymType(rs)
155155
if rst != sym.SHOSTOBJ && rst != sym.SDYNIMPORT && ldr.SymSect(rs) == nil {
156156
ldr.Errorf(s, "missing section for %s", ldr.SymName(rs))
157157
}
158158
return val, 1, true
159-
case objabi.R_ADDRLOONG64TLS,
160-
objabi.R_ADDRLOONG64TLSU,
159+
case objabi.R_LOONG64_TLS_LE_HI,
160+
objabi.R_LOONG64_TLS_LE_LO,
161161
objabi.R_CALLLOONG64,
162162
objabi.R_JMPLOONG64,
163-
objabi.R_LOONG64_TLS_IE_PCREL_HI,
163+
objabi.R_LOONG64_TLS_IE_HI,
164164
objabi.R_LOONG64_TLS_IE_LO,
165165
objabi.R_LOONG64_GOT_HI,
166166
objabi.R_LOONG64_GOT_LO:
@@ -176,18 +176,18 @@ func archreloc(target *ld.Target, ldr *loader.Loader, syms *ld.ArchSyms, r loade
176176
return r.Add(), noExtReloc, isOk
177177
case objabi.R_GOTOFF:
178178
return ldr.SymValue(r.Sym()) + r.Add() - ldr.SymValue(syms.GOT), noExtReloc, isOk
179-
case objabi.R_ADDRLOONG64,
180-
objabi.R_ADDRLOONG64U:
179+
case objabi.R_LOONG64_ADDR_HI,
180+
objabi.R_LOONG64_ADDR_LO:
181181
pc := ldr.SymValue(s) + int64(r.Off())
182182
t := calculatePCAlignedReloc(r.Type(), ldr.SymAddr(rs)+r.Add(), pc)
183-
if r.Type() == objabi.R_ADDRLOONG64 {
183+
if r.Type() == objabi.R_LOONG64_ADDR_LO {
184184
return int64(val&0xffc003ff | (t << 10)), noExtReloc, isOk
185185
}
186186
return int64(val&0xfe00001f | (t << 5)), noExtReloc, isOk
187-
case objabi.R_ADDRLOONG64TLS,
188-
objabi.R_ADDRLOONG64TLSU:
187+
case objabi.R_LOONG64_TLS_LE_HI,
188+
objabi.R_LOONG64_TLS_LE_LO:
189189
t := ldr.SymAddr(rs) + r.Add()
190-
if r.Type() == objabi.R_ADDRLOONG64TLS {
190+
if r.Type() == objabi.R_LOONG64_TLS_LE_LO {
191191
return int64(val&0xffc003ff | ((t & 0xfff) << 10)), noExtReloc, isOk
192192
}
193193
return int64(val&0xfe00001f | (((t) >> 12 << 5) & 0x1ffffe0)), noExtReloc, isOk
@@ -207,20 +207,19 @@ func archrelocvariant(*ld.Target, *loader.Loader, loader.Reloc, sym.RelocVariant
207207

208208
func extreloc(target *ld.Target, ldr *loader.Loader, r loader.Reloc, s loader.Sym) (loader.ExtReloc, bool) {
209209
switch r.Type() {
210-
case objabi.R_ADDRLOONG64,
211-
objabi.R_ADDRLOONG64U,
210+
case objabi.R_LOONG64_ADDR_HI,
211+
objabi.R_LOONG64_ADDR_LO,
212212
objabi.R_LOONG64_GOT_HI,
213213
objabi.R_LOONG64_GOT_LO:
214-
215214
return ld.ExtrelocViaOuterSym(ldr, r, s), true
216215

217-
case objabi.R_ADDRLOONG64TLS,
218-
objabi.R_ADDRLOONG64TLSU,
216+
case objabi.R_LOONG64_TLS_LE_HI,
217+
objabi.R_LOONG64_TLS_LE_LO,
219218
objabi.R_CONST,
220219
objabi.R_GOTOFF,
221220
objabi.R_CALLLOONG64,
222221
objabi.R_JMPLOONG64,
223-
objabi.R_LOONG64_TLS_IE_PCREL_HI,
222+
objabi.R_LOONG64_TLS_IE_HI,
224223
objabi.R_LOONG64_TLS_IE_LO:
225224
return ld.ExtrelocSimple(ldr, r), true
226225
}
@@ -229,7 +228,7 @@ func extreloc(target *ld.Target, ldr *loader.Loader, r loader.Reloc, s loader.Sy
229228

230229
func isRequestingLowPageBits(t objabi.RelocType) bool {
231230
switch t {
232-
case objabi.R_ADDRLOONG64:
231+
case objabi.R_LOONG64_ADDR_LO:
233232
return true
234233
}
235234
return false

0 commit comments

Comments
 (0)