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] 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 _______________________________________________ llvm-branch-commits mailing list llvm-branch-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits