[PATCH] D139407: [llvm-objdump][AArch64] Fix ADRP target label calculation
Kristina Bessonova via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Mon Dec 12 10:30:17 PST 2022
krisb updated this revision to Diff 482186.
krisb added a comment.
Rebase & ping
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D139407/new/
https://reviews.llvm.org/D139407
Files:
llvm/lib/Target/AArch64/MCTargetDesc/AArch64MCTargetDesc.cpp
llvm/test/tools/llvm-objdump/ELF/AArch64/pcrel-address.yaml
Index: llvm/test/tools/llvm-objdump/ELF/AArch64/pcrel-address.yaml
===================================================================
--- llvm/test/tools/llvm-objdump/ELF/AArch64/pcrel-address.yaml
+++ llvm/test/tools/llvm-objdump/ELF/AArch64/pcrel-address.yaml
@@ -2,7 +2,7 @@
# RUN: llvm-objdump %t -d --no-show-raw-insn --no-leading-addr | FileCheck %s
# CHECK-LABEL: <_start>:
-# CHECK-NEXT: adrp x2, 0x220000 <_start+0x80>
+# CHECK-NEXT: adrp x2, 0x220000 <_start+0x1ff00>
--- !ELF
FileHeader:
@@ -16,10 +16,6 @@
Address: 0x200100
Flags: [SHF_ALLOC, SHF_EXECINSTR]
Content: '02010090'
- - Name: .data
- Type: SHT_PROGBITS
- Flags: [SHF_ALLOC, SHF_WRITE]
- Address: 0x220000
Symbols:
- Name: _start
Section: .text
Index: llvm/lib/Target/AArch64/MCTargetDesc/AArch64MCTargetDesc.cpp
===================================================================
--- llvm/lib/Target/AArch64/MCTargetDesc/AArch64MCTargetDesc.cpp
+++ llvm/lib/Target/AArch64/MCTargetDesc/AArch64MCTargetDesc.cpp
@@ -412,8 +412,11 @@
const auto &Desc = Info->get(Inst.getOpcode());
for (unsigned i = 0, e = Inst.getNumOperands(); i != e; i++) {
if (Desc.OpInfo[i].OperandType == MCOI::OPERAND_PCREL) {
- int64_t Imm = Inst.getOperand(i).getImm() * 4;
- Target = Addr + Imm;
+ int64_t Imm = Inst.getOperand(i).getImm();
+ if (Inst.getOpcode() == AArch64::ADRP)
+ Target = (Addr & -4096) + Imm * 4096;
+ else
+ Target = Addr + Imm * 4;
return true;
}
}
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D139407.482186.patch
Type: text/x-patch
Size: 1575 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20221212/cf165c9d/attachment.bin>
More information about the llvm-commits
mailing list