diff --git a/llvm/lib/Target/VE/MCTargetDesc/VEELFObjectWriter.cpp b/llvm/lib/Target/VE/MCTargetDesc/VEELFObjectWriter.cpp --- a/llvm/lib/Target/VE/MCTargetDesc/VEELFObjectWriter.cpp +++ b/llvm/lib/Target/VE/MCTargetDesc/VEELFObjectWriter.cpp @@ -67,6 +67,7 @@ Ctx.reportError(Fixup.getLoc(), "8-byte pc-relative data relocation is not supported"); return ELF::R_VE_NONE; + case VE::fixup_ve_reflong: case VE::fixup_ve_srel32: return ELF::R_VE_SREL32; case VE::fixup_ve_pc_hi32: diff --git a/llvm/test/MC/VE/sym-lea.s b/llvm/test/MC/VE/sym-lea.s new file mode 100644 --- /dev/null +++ b/llvm/test/MC/VE/sym-lea.s @@ -0,0 +1,11 @@ +# RUN: llvm-mc -triple=ve %s -o - | FileCheck %s +# RUN: llvm-mc -triple=ve -filetype=obj %s -o - | llvm-objdump -r - | FileCheck %s --check-prefix=CHECK-OBJ + + lea %s0, tgt + lea %s0, tgt2-. +# CHECK: lea %s0, tgt +# CHECK-NEXT: [[LABEL:.*]]: +# CHECK-NEXT: lea %s0, tgt2-[[LABEL]] + +# CHECK-OBJ: 0 R_VE_REFLONG tgt +# CHECK-OBJ: 8 R_VE_SREL32 tgt2