CodeQL / Analyze (actions) (push) Canceled after 0s
CodeQL / Analyze (python) (push) Canceled after 0s
pre-commit / pre-commit (push) Canceled after 0s
Multi-Arch CI / setup (push) Canceled after 0s
Publish build_manylinux_x86_64 images / publish_build_manylinux_x86_64 (push) Canceled after 0s
Setup (Multi-Arch) / setup (push) Canceled after 0s
Multi-Arch CI / Linux::${{ fromJSON(needs.setup.outputs.linux_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubi10 image / publish_no_rocm_image_ubi10 (push) Canceled after 0s
Multi-Arch CI / Windows::${{ fromJSON(needs.setup.outputs.windows_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Multi-Arch CI / Manifest Diff (push) Canceled after 0s
TheRock Manifest Diff Report / Generate Manifest Diff Report (push) Canceled after 0s
Multi-Arch CI / CI Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_ocl_rt images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_rocgdb images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Unit Tests / Unit Tests :: ubuntu-24.04 (push) Canceled after 0s
Unit Tests / Unit Tests :: windows-2022 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_media (push) Canceled after 0s
Unit Tests / Unit Tests Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_openmpi (push) Canceled after 0s
89 lines
3.8 KiB
ArmAsm
89 lines
3.8 KiB
ArmAsm
# REQUIRES: aarch64
|
|
# RUN: rm -rf %t && split-file %s %t
|
|
# RUN: llvm-mc -filetype=obj -triple=aarch64 %t/use.s -o %t/use-le.o
|
|
# RUN: llvm-mc -filetype=obj -triple=aarch64 %t/def.s -o %t/def-le.o
|
|
# RUN: llvm-mc -filetype=obj -triple=aarch64 %t/rel.s -o %t/rel-le.o
|
|
|
|
## Deactivation symbol used without being defined: instruction emitted as usual.
|
|
# RUN: ld.lld -o %t/undef-le %t/use-le.o --emit-relocs
|
|
# RUN: llvm-objdump -r %t/undef-le | FileCheck --check-prefix=RELOC %s
|
|
# RUN: llvm-objdump -d %t/undef-le | FileCheck --check-prefix=UNDEF %s
|
|
# RUN: ld.lld -pie -o %t/undef-le %t/use-le.o --emit-relocs
|
|
# RUN: llvm-objdump -r %t/undef-le | FileCheck --check-prefix=RELOC %s
|
|
# RUN: llvm-objdump -d %t/undef-le | FileCheck --check-prefix=UNDEF %s
|
|
|
|
## Deactivation symbol defined: instructions overwritten with NOPs.
|
|
# RUN: ld.lld -o %t/def-le %t/use-le.o %t/def-le.o --emit-relocs
|
|
# RUN: llvm-objdump -r %t/def-le | FileCheck --check-prefix=RELOC %s
|
|
# RUN: llvm-objdump -d %t/def-le | FileCheck --check-prefix=DEF %s
|
|
# RUN: ld.lld -pie -o %t/def-le %t/use-le.o %t/def-le.o --emit-relocs
|
|
# RUN: llvm-objdump -r %t/def-le | FileCheck --check-prefix=RELOC %s
|
|
# RUN: llvm-objdump -d %t/def-le | FileCheck --check-prefix=DEF %s
|
|
|
|
## Relocation pointing to a non-SHN_UNDEF non-SHN_ABS symbol is an error.
|
|
# RUN: not ld.lld -o %t/rel-le %t/use-le.o %t/rel-le.o 2>&1 | FileCheck --check-prefix=ERROR %s
|
|
# RUN: not ld.lld -pie -o %t/rel-le %t/use-le.o %t/rel-le.o 2>&1 | FileCheck --check-prefix=ERROR %s
|
|
|
|
## Behavior unchanged by endianness: relocation always written as little endian.
|
|
# RUN: llvm-mc -filetype=obj -triple=aarch64_be %t/use.s -o %t/use-be.o
|
|
# RUN: llvm-mc -filetype=obj -triple=aarch64_be %t/def.s -o %t/def-be.o
|
|
# RUN: llvm-mc -filetype=obj -triple=aarch64_be %t/rel.s -o %t/rel-be.o
|
|
# RUN: ld.lld -o %t/undef-be %t/use-be.o --emit-relocs
|
|
# RUN: llvm-objdump -r %t/undef-be | FileCheck --check-prefix=RELOC %s
|
|
# RUN: llvm-objdump -d %t/undef-be | FileCheck --check-prefix=UNDEF %s
|
|
# RUN: ld.lld -pie -o %t/undef-be %t/use-be.o --emit-relocs
|
|
# RUN: llvm-objdump -r %t/undef-be | FileCheck --check-prefix=RELOC %s
|
|
# RUN: llvm-objdump -d %t/undef-be | FileCheck --check-prefix=UNDEF %s
|
|
# RUN: ld.lld -o %t/def-be %t/use-be.o %t/def-be.o --emit-relocs
|
|
# RUN: llvm-objdump -r %t/def-be | FileCheck --check-prefix=RELOC %s
|
|
# RUN: llvm-objdump -d %t/def-be | FileCheck --check-prefix=DEF %s
|
|
# RUN: ld.lld -pie -o %t/def-be %t/use-be.o %t/def-be.o --emit-relocs
|
|
# RUN: llvm-objdump -r %t/def-be | FileCheck --check-prefix=RELOC %s
|
|
# RUN: llvm-objdump -d %t/def-be | FileCheck --check-prefix=DEF %s
|
|
# RUN: not ld.lld -o %t/rel-be %t/use-be.o %t/rel-be.o 2>&1 | FileCheck --check-prefix=ERROR %s
|
|
# RUN: not ld.lld -pie -o %t/rel-be %t/use-be.o %t/rel-be.o 2>&1 | FileCheck --check-prefix=ERROR %s
|
|
|
|
# RELOC: R_AARCH64_JUMP26
|
|
# RELOC-NEXT: R_AARCH64_PATCHINST ds
|
|
# RELOC-NEXT: R_AARCH64_PATCHINST ds
|
|
# RELOC-NEXT: R_AARCH64_PATCHINST ds0+0xd503201f
|
|
|
|
#--- use.s
|
|
.weak ds
|
|
.weak ds0
|
|
# This instruction has a single relocation: the DS relocation.
|
|
# UNDEF: add x0, x1, x2
|
|
# DEF: nop
|
|
# ERROR: R_AARCH64_PATCHINST relocation against non-absolute symbol ds
|
|
.reloc ., R_AARCH64_PATCHINST, ds
|
|
add x0, x1, x2
|
|
# This instruction has two relocations: the DS relocation and the JUMP26 to f1.
|
|
# Make sure that the DS relocation takes precedence.
|
|
.reloc ., R_AARCH64_PATCHINST, ds
|
|
# UNDEF: b {{.*}} <f1>
|
|
# DEF: nop
|
|
# ERROR: R_AARCH64_PATCHINST relocation against non-absolute symbol ds
|
|
b f1
|
|
# Alternative representation: instruction opcode stored in addend.
|
|
# UNDEF: add x3, x4, x5
|
|
# DEF: nop
|
|
# ERROR: R_AARCH64_PATCHINST relocation against non-absolute symbol ds0
|
|
.reloc ., R_AARCH64_PATCHINST, ds0 + 0xd503201f
|
|
add x3, x4, x5
|
|
|
|
.section .text.f1,"ax",@progbits
|
|
f1:
|
|
ret
|
|
|
|
#--- def.s
|
|
.globl ds
|
|
ds = 0xd503201f
|
|
.globl ds0
|
|
ds0 = 0
|
|
|
|
#--- rel.s
|
|
.globl ds
|
|
ds:
|
|
.globl ds0
|
|
ds0:
|