forked from OSchip/llvm-project
[JITLink] Add R_RISCV_SUB6 relocation
Add R_RISCV_SUB6 relocation Differential Revision: https://reviews.llvm.org/D120001
This commit is contained in:
parent
f46890711f
commit
3362f54d08
|
@ -152,6 +152,12 @@ enum EdgeKind_riscv : Edge::Kind {
|
|||
/// Fixup <- (Target - *{1}Fixup - Addend)
|
||||
R_RISCV_SUB8,
|
||||
|
||||
/// 6 bits label subtraction
|
||||
///
|
||||
/// Fixup expression
|
||||
/// Fixup <- (Target - *{1}Fixup - Addend)
|
||||
R_RISCV_SUB6,
|
||||
|
||||
/// Local label assignment
|
||||
///
|
||||
/// Fixup expression:
|
||||
|
|
|
@ -372,6 +372,13 @@ private:
|
|||
*FixupPtr = static_cast<uint8_t>(Value);
|
||||
break;
|
||||
}
|
||||
case R_RISCV_SUB6: {
|
||||
int64_t Value =
|
||||
*(reinterpret_cast<const uint8_t *>(FixupAddress.getValue())) &
|
||||
0x3f - E.getTarget().getAddress().getValue() - E.getAddend();
|
||||
*FixupPtr = (*FixupPtr & 0xc0) | (static_cast<uint8_t>(Value) & 0x3f);
|
||||
break;
|
||||
}
|
||||
case R_RISCV_SET6: {
|
||||
int64_t Value = (E.getTarget().getAddress() + E.getAddend()).getValue();
|
||||
uint32_t RawData = *(little32_t *)FixupPtr;
|
||||
|
@ -457,6 +464,8 @@ private:
|
|||
return EdgeKind_riscv::R_RISCV_SUB16;
|
||||
case ELF::R_RISCV_SUB8:
|
||||
return EdgeKind_riscv::R_RISCV_SUB8;
|
||||
case ELF::R_RISCV_SUB6:
|
||||
return EdgeKind_riscv::R_RISCV_SUB6;
|
||||
case ELF::R_RISCV_SET6:
|
||||
return EdgeKind_riscv::R_RISCV_SET6;
|
||||
case ELF::R_RISCV_SET8:
|
||||
|
|
|
@ -58,6 +58,8 @@ const char *getEdgeKindName(Edge::Kind K) {
|
|||
return "R_RISCV_SUB16";
|
||||
case R_RISCV_SUB8:
|
||||
return "R_RISCV_SUB8";
|
||||
case R_RISCV_SUB6:
|
||||
return "R_RISCV_SUB6";
|
||||
case R_RISCV_SET6:
|
||||
return "R_RISCV_SET6";
|
||||
case R_RISCV_SET8:
|
||||
|
|
|
@ -8,6 +8,7 @@
|
|||
# jitlink-check: *{4}(named_data+8) = 0x8
|
||||
# jitlink-check: *{2}(named_data+12) = 0x8
|
||||
# jitlink-check: *{1}(named_data+14) = 0x8
|
||||
# jitlink-check: *{1}(named_data+15) = 0x8
|
||||
|
||||
.global main
|
||||
main:
|
||||
|
@ -20,8 +21,10 @@ main:
|
|||
.section ".rodata","",@progbits
|
||||
.type named_data,@object
|
||||
named_data:
|
||||
.reloc named_data+15, R_RISCV_SUB6, .L0
|
||||
.dword .L1 - .L0
|
||||
.word .L1 - .L0
|
||||
.half .L1 - .L0
|
||||
.byte .L1 - .L0
|
||||
.size named_data, 15
|
||||
.byte 0x8
|
||||
.size named_data, 16
|
||||
|
|
Loading…
Reference in New Issue