https://github.com/aengelke updated https://github.com/llvm/llvm-project/pull/145009
>From db5463b1af5c1c425866979dcf85ee5919c8a75d Mon Sep 17 00:00:00 2001 From: Alexis Engelke <enge...@in.tum.de> Date: Mon, 23 Jun 2025 08:50:34 +0000 Subject: [PATCH 1/5] address comments + add reloctable test Created using spr 1.3.5-bogner --- ...=> elf-executable-symbolize-operands.yaml} | 31 +++++++- .../elf-relocatable-symbolize-operands.s | 77 +++++++++++++++++++ 2 files changed, 105 insertions(+), 3 deletions(-) rename llvm/test/tools/llvm-objdump/AArch64/{elf-disassemble-symbololize-operands.yaml => elf-executable-symbolize-operands.yaml} (64%) create mode 100644 llvm/test/tools/llvm-objdump/AArch64/elf-relocatable-symbolize-operands.s diff --git a/llvm/test/tools/llvm-objdump/AArch64/elf-disassemble-symbololize-operands.yaml b/llvm/test/tools/llvm-objdump/AArch64/elf-executable-symbolize-operands.yaml similarity index 64% rename from llvm/test/tools/llvm-objdump/AArch64/elf-disassemble-symbololize-operands.yaml rename to llvm/test/tools/llvm-objdump/AArch64/elf-executable-symbolize-operands.yaml index 3f3c6f33e620f..d318ea01b4c30 100644 --- a/llvm/test/tools/llvm-objdump/AArch64/elf-disassemble-symbololize-operands.yaml +++ b/llvm/test/tools/llvm-objdump/AArch64/elf-executable-symbolize-operands.yaml @@ -1,14 +1,14 @@ # RUN: yaml2obj %s -o %t # RUN: llvm-objdump %t -d --symbolize-operands --no-show-raw-insn --no-leading-addr | \ -# RUN: FileCheck %s --match-full-lines +# RUN: FileCheck %s --match-full-lines -DABS_ADRP_VAL=0x6000 # RUN: llvm-objdump %t -d --symbolize-operands --no-show-raw-insn --no-leading-addr --adjust-vma=0x2000 | \ -# RUN: FileCheck %s --match-full-lines +# RUN: FileCheck %s --match-full-lines -DABS_ADRP_VAL=0x8000 ## Expect to find the branch labels and global variable name. # CHECK: <_start>: # CHECK-NEXT: ldr x0, <symbol> # CHECK-NEXT: <L0>: -# CHECK-NEXT: adrp x1, 0x{{[68]}}000 <symbol+0xff4> +# CHECK-NEXT: adrp x1, [[ABS_ADRP_VAL]] <symbol+0xff4> # CHECK-NEXT: adr x2, <symbol> # CHECK-NEXT: cmp x1, x2 # CHECK-NEXT: b.eq <L1> @@ -17,6 +17,31 @@ # CHECK-NEXT: cbz x2, <L0> # CHECK-NEXT: ret +## Machine code generated with: +# llvm-mc --arch=aarch64 --filetype=obj -o tmp.o <<EOF +# .text +# .p2align 14 +# .globl .start +# _start: +# ldr x0, symbol +# 1: +# adrp x1, symbol + 0x1000 +# adr x2, symbol +# cmp x1, x2 +# b.eq 2f +# b 1b +# 2: +# cbz x2, 1b +# ret +# +# .data +# .p2align 12 +# .skip 12 +# symbol: +# EOF +# ld.lld -shared --nmagic -o tmp.so tmp.o +# llvm-objdump -s tmp.so --section=.text + --- !ELF FileHeader: Class: ELFCLASS64 diff --git a/llvm/test/tools/llvm-objdump/AArch64/elf-relocatable-symbolize-operands.s b/llvm/test/tools/llvm-objdump/AArch64/elf-relocatable-symbolize-operands.s new file mode 100644 index 0000000000000..c661f866cc7c8 --- /dev/null +++ b/llvm/test/tools/llvm-objdump/AArch64/elf-relocatable-symbolize-operands.s @@ -0,0 +1,77 @@ +# RUN: llvm-mc --arch=aarch64 --filetype=obj < %s | llvm-objdump -d -r --symbolize-operands --no-show-raw-insn --no-leading-addr - | FileCheck %s --match-full-lines + +# CHECK: <fn1>: +# CHECK-NEXT: b <L0> +# CHECK-NEXT: tbz x0, #0x2c, <L2> +# CHECK-NEXT: <L0>: +# CHECK-NEXT: b.eq <L1> +# CHECK-NEXT: <L1>: +# CHECK-NEXT: cbz x1, <L0> +# CHECK-NEXT: <L2>: +# CHECK-NEXT: nop +# CHECK-NEXT: <L3>: +# CHECK-NEXT: bl <L3> +# CHECK-NEXT: R_AARCH64_CALL26 fn2 +# CHECK-NEXT: bl <fn2> +# CHECK-NEXT: adr x0, <L2> +# CHECK-NEXT: <L4>: +# CHECK-NEXT: adr x1, <L4> +# CHECK-NEXT: R_AARCH64_ADR_PREL_LO21 fn2 +# CHECK-NEXT: adr x2, <fn2> +# CHECK-NEXT: ldr w0, <L2> +# CHECK-NEXT: <L5>: +# CHECK-NEXT: ldr w0, <L5> +# CHECK-NEXT: R_AARCH64_LD_PREL_LO19 fn2 +# CHECK-NEXT: ret +# CHECK-NEXT: nop +# CHECK-NEXT: nop +# CHECK-NEXT: nop +# CHECK-EMPTY: +# CHECK-NEXT: <fn2>: +# CHECK-NEXT: bl <L0> +# CHECK-NEXT: adrp x3, 0x0 <fn1> +# CHECK-NEXT: R_AARCH64_ADR_PREL_PG_HI21 fn2 +# CHECK-NEXT: add x3, x3, #0x0 +# CHECK-NEXT: R_AARCH64_ADD_ABS_LO12_NC fn2 +# CHECK-NEXT: adrp x3, 0x0 <fn1> +# CHECK-NEXT: R_AARCH64_ADR_PREL_PG_HI21 fn2 +# CHECK-NEXT: ldr x0, [x3] +# CHECK-NEXT: R_AARCH64_LDST64_ABS_LO12_NC fn2 +# CHECK-NEXT: ret +# CHECK-NEXT: nop +# CHECK-NEXT: nop +# CHECK-NEXT: <L0>: +# CHECK-NEXT: ret + + .p2align 4 + .global fn1 +fn1: + b 0f + tbz x0, 44, 2f +0: b.eq 1f +1: cbz x1, 0b +2: nop + bl fn2 + bl .Lfn2 + adr x0, 2b + adr x1, fn2 + adr x2, .Lfn2 + ldr w0, 2b + ldr w0, fn2 + ret + + .p2align 4 + .global fn2 +fn2: +.Lfn2: # local label for non-interposable call + bl .Lfn3 + # In future, we might identify the pairs and symbolize the operands properly + adrp x3, fn2 + add x3, x3, :lo12:fn2 + adrp x3, fn2 + ldr x0, [x3, :lo12:fn2] + ret + + .p2align 4 +.Lfn3: # private function + ret >From 1abf014077dd0e7f5592651a51484a544cad1e49 Mon Sep 17 00:00:00 2001 From: Alexis Engelke <enge...@in.tum.de> Date: Mon, 23 Jun 2025 09:24:47 +0000 Subject: [PATCH 2/5] move tests to avoid failure if AArch64 is not configured Created using spr 1.3.5-bogner --- .../AArch64/symbolize-operands-executable.yaml} | 0 .../AArch64/symbolize-operands-reloctable.s} | 0 2 files changed, 0 insertions(+), 0 deletions(-) rename llvm/test/tools/llvm-objdump/{AArch64/elf-executable-symbolize-operands.yaml => ELF/AArch64/symbolize-operands-executable.yaml} (100%) rename llvm/test/tools/llvm-objdump/{AArch64/elf-relocatable-symbolize-operands.s => ELF/AArch64/symbolize-operands-reloctable.s} (100%) diff --git a/llvm/test/tools/llvm-objdump/AArch64/elf-executable-symbolize-operands.yaml b/llvm/test/tools/llvm-objdump/ELF/AArch64/symbolize-operands-executable.yaml similarity index 100% rename from llvm/test/tools/llvm-objdump/AArch64/elf-executable-symbolize-operands.yaml rename to llvm/test/tools/llvm-objdump/ELF/AArch64/symbolize-operands-executable.yaml diff --git a/llvm/test/tools/llvm-objdump/AArch64/elf-relocatable-symbolize-operands.s b/llvm/test/tools/llvm-objdump/ELF/AArch64/symbolize-operands-reloctable.s similarity index 100% rename from llvm/test/tools/llvm-objdump/AArch64/elf-relocatable-symbolize-operands.s rename to llvm/test/tools/llvm-objdump/ELF/AArch64/symbolize-operands-reloctable.s >From ff6dde151e3db0a4cf4c55924b0e777574e0cb43 Mon Sep 17 00:00:00 2001 From: Alexis Engelke <enge...@in.tum.de> Date: Mon, 23 Jun 2025 09:25:58 +0000 Subject: [PATCH 3/5] fix typo in filename Created using spr 1.3.5-bogner --- ...ize-operands-reloctable.s => symbolize-operands-relocatable.s} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename llvm/test/tools/llvm-objdump/ELF/AArch64/{symbolize-operands-reloctable.s => symbolize-operands-relocatable.s} (100%) diff --git a/llvm/test/tools/llvm-objdump/ELF/AArch64/symbolize-operands-reloctable.s b/llvm/test/tools/llvm-objdump/ELF/AArch64/symbolize-operands-relocatable.s similarity index 100% rename from llvm/test/tools/llvm-objdump/ELF/AArch64/symbolize-operands-reloctable.s rename to llvm/test/tools/llvm-objdump/ELF/AArch64/symbolize-operands-relocatable.s >From 010cd60331ae7cca9984affc11f9c005599ac91f Mon Sep 17 00:00:00 2001 From: Alexis Engelke <enge...@in.tum.de> Date: Mon, 23 Jun 2025 11:05:53 +0000 Subject: [PATCH 4/5] specify triple in test command line Created using spr 1.3.5-bogner --- .../llvm-objdump/ELF/AArch64/symbolize-operands-relocatable.s | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/llvm/test/tools/llvm-objdump/ELF/AArch64/symbolize-operands-relocatable.s b/llvm/test/tools/llvm-objdump/ELF/AArch64/symbolize-operands-relocatable.s index c661f866cc7c8..92c2e56014dc2 100644 --- a/llvm/test/tools/llvm-objdump/ELF/AArch64/symbolize-operands-relocatable.s +++ b/llvm/test/tools/llvm-objdump/ELF/AArch64/symbolize-operands-relocatable.s @@ -1,4 +1,4 @@ -# RUN: llvm-mc --arch=aarch64 --filetype=obj < %s | llvm-objdump -d -r --symbolize-operands --no-show-raw-insn --no-leading-addr - | FileCheck %s --match-full-lines +# RUN: llvm-mc --triple=aarch64-elf --filetype=obj < %s | llvm-objdump -d -r --symbolize-operands --no-show-raw-insn --no-leading-addr - | FileCheck %s --match-full-lines # CHECK: <fn1>: # CHECK-NEXT: b <L0> >From ca20e1fdc1e737eb6e9a0bb884406c47ec5c2c26 Mon Sep 17 00:00:00 2001 From: Alexis Engelke <enge...@in.tum.de> Date: Tue, 24 Jun 2025 08:03:31 +0000 Subject: [PATCH 5/5] address comments Created using spr 1.3.5-bogner --- llvm/docs/CommandGuide/llvm-objdump.rst | 2 +- .../Target/AArch64/MCTargetDesc/AArch64InstPrinter.cpp | 4 ++-- .../ELF/AArch64/symbolize-operands-relocatable.s | 10 ++++++---- 3 files changed, 9 insertions(+), 7 deletions(-) diff --git a/llvm/docs/CommandGuide/llvm-objdump.rst b/llvm/docs/CommandGuide/llvm-objdump.rst index 5e5eaccecd2b7..c9f0379694287 100644 --- a/llvm/docs/CommandGuide/llvm-objdump.rst +++ b/llvm/docs/CommandGuide/llvm-objdump.rst @@ -278,7 +278,7 @@ OPTIONS any analysis with a special representation (i.e. BlockFrequency, BranchProbability, etc) are printed as raw hex values. - Only works with PowerPC objects or X86 linked images. + Only supported for AArch64, BPF, PowerPC, and X86. Example: A non-symbolized branch instruction with a local target and pc-relative memory access like diff --git a/llvm/lib/Target/AArch64/MCTargetDesc/AArch64InstPrinter.cpp b/llvm/lib/Target/AArch64/MCTargetDesc/AArch64InstPrinter.cpp index fa7610db82bfb..3c8b5712c1f0c 100644 --- a/llvm/lib/Target/AArch64/MCTargetDesc/AArch64InstPrinter.cpp +++ b/llvm/lib/Target/AArch64/MCTargetDesc/AArch64InstPrinter.cpp @@ -1784,7 +1784,7 @@ void AArch64InstPrinter::printAlignedLabel(const MCInst *MI, uint64_t Address, unsigned OpNum, const MCSubtargetInfo &STI, raw_ostream &O) { - // Do not print the numberic target address when symbolizing. + // Do not print the numeric target address when symbolizing. if (SymbolizeOperands) return; @@ -1817,7 +1817,7 @@ void AArch64InstPrinter::printAdrAdrpLabel(const MCInst *MI, uint64_t Address, unsigned OpNum, const MCSubtargetInfo &STI, raw_ostream &O) { - // Do not print the numberic target address when symbolizing. + // Do not print the numeric target address when symbolizing. // However, do print for ADRP, as this is typically used together with an ADD // or an immediate-offset ldr/str and the label is likely at the wrong point. if (SymbolizeOperands && MI->getOpcode() != AArch64::ADRP) diff --git a/llvm/test/tools/llvm-objdump/ELF/AArch64/symbolize-operands-relocatable.s b/llvm/test/tools/llvm-objdump/ELF/AArch64/symbolize-operands-relocatable.s index 92c2e56014dc2..17af1bfcde33a 100644 --- a/llvm/test/tools/llvm-objdump/ELF/AArch64/symbolize-operands-relocatable.s +++ b/llvm/test/tools/llvm-objdump/ELF/AArch64/symbolize-operands-relocatable.s @@ -1,4 +1,6 @@ -# RUN: llvm-mc --triple=aarch64-elf --filetype=obj < %s | llvm-objdump -d -r --symbolize-operands --no-show-raw-insn --no-leading-addr - | FileCheck %s --match-full-lines +# RUN: llvm-mc --triple=aarch64-elf --filetype=obj < %s | \ +# RUN: llvm-objdump -d -r --symbolize-operands --no-show-raw-insn --no-leading-addr - | \ +# RUN: FileCheck %s --match-full-lines # CHECK: <fn1>: # CHECK-NEXT: b <L0> @@ -63,9 +65,9 @@ fn1: .p2align 4 .global fn2 fn2: -.Lfn2: # local label for non-interposable call +.Lfn2: ## Local label for non-interposable call. bl .Lfn3 - # In future, we might identify the pairs and symbolize the operands properly + ## In future, we might identify the pairs and symbolize the operands properly. adrp x3, fn2 add x3, x3, :lo12:fn2 adrp x3, fn2 @@ -73,5 +75,5 @@ fn2: ret .p2align 4 -.Lfn3: # private function +.Lfn3: ## Private function ret _______________________________________________ llvm-branch-commits mailing list llvm-branch-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits