[lld][ELF] Add a corner testcase for elf::getLoongArchPageDelta
If `page(dest) - page(pc)` is 0xfffffffffff000, i.e. page(pc) is next to page(dest), and lo12(dest) > 0x7ff, correct %pc64_lo12 and %pc64_hi12 should be both -1 (which can be checked with binutils) but they are both 0 on lld. This patch adds such a test showing lld's incorrect behaviour and following patch will fix this issue.
This commit is contained in:
@@ -260,6 +260,19 @@
|
||||
# EXTREME15-NEXT: lu32i.d $t0, -349526
|
||||
# EXTREME15-NEXT: lu52i.d $t0, $t0, -1093
|
||||
|
||||
## FIXME: Correct %pc64_lo20 should be 0xfffff (-1) and %pc64_hi12 should be 0xfff (-1), but current values are:
|
||||
## page delta = 0x0000000000000000, page offset = 0x888
|
||||
## %pc_lo12 = 0x888 = -1912
|
||||
## %pc_hi20 = 0x00000 = 0
|
||||
## %pc64_lo20 = 0x00000 = 0
|
||||
## %pc64_hi12 = 0x00000 = 0
|
||||
# RUN: ld.lld %t/extreme.o --section-start=.rodata=0x0000000012344888 --section-start=.text=0x0000000012345678 -o %t/extreme16
|
||||
# RUN: llvm-objdump -d --no-show-raw-insn %t/extreme16 | FileCheck %s --check-prefix=EXTREME16
|
||||
# EXTREME16: addi.d $t0, $zero, -1912
|
||||
# EXTREME16-NEXT: pcalau12i $t1, 0
|
||||
# EXTREME16-NEXT: lu32i.d $t0, 0
|
||||
# EXTREME16-NEXT: lu52i.d $t0, $t0, 0
|
||||
|
||||
#--- a.s
|
||||
.rodata
|
||||
x:
|
||||
|
||||
Reference in New Issue
Block a user