164 lines · plain
1# REQUIRES: riscv2## Test that we can handle R_RISCV_ALIGN.3 4# RUN: rm -rf %t && mkdir %t && cd %t5 6# RUN: llvm-mc -filetype=obj -triple=riscv32 -mattr=+relax %s -o 32.o7# RUN: ld.lld -Ttext=0x10000 32.o -o 328# RUN: llvm-objdump -td --no-show-raw-insn -M no-aliases 32 | FileCheck %s9## R_RISCV_ALIGN is handled regarldess of --no-relax.10# RUN: ld.lld -Ttext=0x10000 --no-relax 32.o -o 32.norelax11# RUN: llvm-objdump -td --no-show-raw-insn -M no-aliases 32.norelax | FileCheck %s12 13# RUN: llvm-mc -filetype=obj -triple=riscv64 -mattr=+relax %s -riscv-align-rvc=0 -o 64.o14# RUN: ld.lld -Ttext=0x10000 64.o -o 6415# RUN: llvm-objdump -td --no-show-raw-insn -M no-aliases 64 | FileCheck %s16# RUN: ld.lld -Ttext=0x10000 --no-relax 64.o -o 64.norelax17# RUN: llvm-objdump -td --no-show-raw-insn -M no-aliases 64.norelax | FileCheck %s18 19# RUN: ld.lld -Ttext=0x10000 --gc-sections 64.o -o 64.gc20# RUN: llvm-objdump -td --no-show-raw-insn -M no-aliases 64.gc | FileCheck %s --check-prefix=GC21 22## -r keeps section contents unchanged.23# RUN: ld.lld -r 64.o -o 64.r24# RUN: llvm-objdump -dr --no-show-raw-insn -M no-aliases 64.r | FileCheck %s --check-prefix=CHECKR25 26# CHECK-DAG: 00010004 l .text {{0*}}1c a27# CHECK-DAG: 00010008 l .text {{0*}}28 b28# CHECK-DAG: 00010014 l .text {{0*}}20 c29# CHECK-DAG: 00010000 g .text {{0*}}38 _start30 31# CHECK: <_start>:32# CHECK-NEXT: lui a0, 0x1033# CHECK-EMPTY:34# CHECK-NEXT: <a>:35# CHECK-NEXT: addi a0, a0, 0x236# CHECK-EMPTY:37# CHECK-NEXT: <b>:38# CHECK-NEXT: addi zero, zero, 0x039# CHECK-NEXT: addi zero, zero, 0x040# CHECK-NEXT: 10010: addi a0, a0, 0x341# CHECK-EMPTY:42# CHECK-NEXT: <c>:43# CHECK-NEXT: addi a0, a0, 0x444# CHECK-NEXT: addi a0, a0, 0x545# CHECK-NEXT: addi zero, zero, 0x046# CHECK-NEXT: 10020: addi a0, a0, 0x647# CHECK-NEXT: addi a0, a0, 0x748# CHECK-NEXT: addi zero, zero, 0x049# CHECK-NEXT: addi zero, zero, 0x050# CHECK-NEXT: 10030: addi a0, a0, 0x851# CHECK-NEXT: addi a0, a0, 0x952# CHECK-EMPTY:53# CHECK: <e>:54# CHECK-NEXT: addi a0, a0, 0x155# CHECK-EMPTY:56# CHECK-NEXT: <f>:57# CHECK-NEXT: 10044: addi a0, a0, 0x258# CHECK-NEXT: addi zero, zero, 0x059# CHECK-NEXT: addi zero, zero, 0x060# CHECK-NEXT: addi zero, zero, 0x061# CHECK-NEXT: addi zero, zero, 0x062# CHECK-NEXT: addi zero, zero, 0x063# CHECK-NEXT: addi zero, zero, 0x064# CHECK-NEXT: 10060: addi a0, a0, 0x365# CHECK-EMPTY:66 67## _start-0x10070 = 0x10000-0x10070 = -11268# CHECK: <.L1>:69# CHECK-NEXT: 10070: auipc a0, 0x070# CHECK-NEXT: addi a0, a0, -0x7071# CHECK-NEXT: addi zero, zero, 0x072# CHECK-NEXT: addi zero, zero, 0x073# CHECK-NEXT: auipc a0, 0x074# CHECK-NEXT: addi a0, a0, -0x7075# CHECK-EMPTY:76 77# GC-DAG: 00010004 l .text {{0*}}1c a78# GC-DAG: 00010008 l .text {{0*}}28 b79# GC-DAG: 00010014 l .text {{0*}}20 c80# GC-DAG: 00010000 g .text {{0*}}38 _start81# GC: <_start>:82# GC-NOT: <d>:83 84# CHECKR: <_start>:85# CHECKR-NEXT: lui a0, 0x086# CHECKR-NEXT: 0000000000000000: R_RISCV_HI20 _start87# CHECKR-NEXT: 0000000000000000: R_RISCV_RELAX *ABS*88# CHECKR-EMPTY:89# CHECKR-NEXT: <a>:90# CHECKR-NEXT: addi a0, a0, 0x291# CHECKR-EMPTY:92# CHECKR-NEXT: <b>:93# CHECKR-NEXT: addi zero, zero, 0x094# CHECKR-NEXT: 0000000000000008: R_RISCV_ALIGN *ABS*+0xc95# CHECKR-NEXT: addi zero, zero, 0x096# CHECKR-NEXT: addi zero, zero, 0x097# CHECKR-NEXT: addi a0, a0, 0x398# CHECKR-EMPTY:99# CHECKR-NEXT: <c>:100# CHECKR-NEXT: addi a0, a0, 0x4101# CHECKR-NEXT: addi a0, a0, 0x5102# CHECKR-NEXT: addi zero, zero, 0x0103# CHECKR-NEXT: 0000000000000020: R_RISCV_ALIGN *ABS*+0x1c104# CHECKR-NEXT: addi zero, zero, 0x0105# CHECKR-NEXT: addi zero, zero, 0x0106# CHECKR-NEXT: addi zero, zero, 0x0107# CHECKR-NEXT: addi zero, zero, 0x0108# CHECKR-NEXT: addi zero, zero, 0x0109# CHECKR-NEXT: addi zero, zero, 0x0110# CHECKR-NEXT: addi a0, a0, 0x6111# CHECKR-NEXT: addi a0, a0, 0x7112# CHECKR-NEXT: addi zero, zero, 0x0113# CHECKR-NEXT: 0000000000000044: R_RISCV_ALIGN *ABS*+0xc114# CHECKR-NEXT: addi zero, zero, 0x0115# CHECKR-NEXT: addi zero, zero, 0x0116# CHECKR-NEXT: addi a0, a0, 0x8117# CHECKR-NEXT: addi a0, a0, 0x9118 119.global _start120_start:121 lui a0, %hi(_start)122a:123 addi a0, a0, 0x2124b:125.balign 16126 addi a0, a0, 0x3127c:128 addi a0, a0, 0x4129 addi a0, a0, 0x5130.balign 32131.size a, . - a132 addi a0, a0, 0x6133 addi a0, a0, 0x7134.balign 16135.size b, . - b136 addi a0, a0, 0x8137.size c, . - c138 addi a0, a0, 0x9139.size _start, . - _start140 141## Test another text section.142.section .text2,"ax",@progbits143d:144e:145.balign 8146 addi a0, a0, 0x1147f:148 addi a0, a0, 0x2149.balign 32150.size d, . - d151 addi a0, a0, 0x3152.size e, . - e153.size f, . - f154 155## Test that matching HI20 can be found despite deleted bytes.156.section .pcrel,"ax",@progbits157.L1:158 auipc a0, %pcrel_hi(_start)159 addi a0, a0, %pcrel_lo(.L1)160.balign 16161.L2:162 auipc a0, %pcrel_hi(_start)163 addi a0, a0, %pcrel_lo(.L1)164