brintos

brintos / llvm-project-archived public Read only

0
0
Text · 4.5 KiB · 9cd59e9 Raw
141 lines · plain
1# REQUIRES: riscv2# RUN: rm -rf %t && split-file %s %t && cd %t3# RUN: llvm-mc -filetype=obj -triple=riscv64 -mattr=+c,+relax a.s -o ac.o4# RUN: llvm-mc -filetype=obj -triple=riscv64 -mattr=+c,+relax b.s -o bc.o5# RUN: llvm-mc -filetype=obj -triple=riscv64 -mattr=+c,+relax b1.s -o b1c.o6# RUN: llvm-mc -filetype=obj -triple=riscv64 -mattr=+c,+relax c.s -o cc.o7# RUN: llvm-mc -filetype=obj -triple=riscv64 -mattr=+c d.s -o dc.o8 9## No RELAX. Don't synthesize ALIGN.10# RUN: ld.lld -r bc.o dc.o -o bd.ro11 12# NOREL: no relocations13 14# RUN: ld.lld -r bc.o bc.o ac.o bc.o b1c.o cc.o dc.o -o out.ro15# RUN: llvm-objdump -dr -M no-aliases out.ro | FileCheck %s16# RUN: llvm-readelf -r out.ro | FileCheck %s --check-prefix=CHECK-REL17 18# RUN: llvm-mc -filetype=obj -triple=riscv32 -mattr=+relax a.s -o a.o19# RUN: llvm-mc -filetype=obj -triple=riscv32 -mattr=+relax b.s -o b.o20# RUN: llvm-mc -filetype=obj -triple=riscv32 -mattr=+relax d.s -o d.o21# RUN: ld.lld -r a.o b.o d.o -o out0.ro22# RUN: ld.lld -Ttext=0x10000 out0.ro -o out023# RUN: llvm-objdump -dr -M no-aliases out0 | FileCheck %s --check-prefix=CHECK124 25# CHECK:      <b0>:26# CHECK-NEXT:   0: 00158513             addi    a0, a1, 0x127# CHECK-NEXT:   4: 0001                 c.nop28# CHECK-NEXT:   6: 0001                 c.nop29# CHECK-EMPTY:30# CHECK-NEXT: <b0>:31# CHECK-NEXT:   8: 00158513             addi    a0, a1, 0x132# CHECK-EMPTY:33# CHECK-NEXT: <_start>:34# CHECK-NEXT:   c: 00000097             auipc   ra, 0x035# CHECK-NEXT:           000000000000000c:  R_RISCV_CALL_PLT     foo36# CHECK-NEXT:           000000000000000c:  R_RISCV_RELAX        *ABS*37# CHECK-NEXT:  10: 000080e7             jalr    ra, 0x0(ra) <_start>38# CHECK-NEXT:  14: 0001                 c.nop39# CHECK-NEXT:           0000000000000014:  R_RISCV_ALIGN        *ABS*+0x640# CHECK-NEXT:  16: 0001                 c.nop41# CHECK-NEXT:  18: 0001                 c.nop42# CHECK-EMPTY:43# CHECK-NEXT: <b0>:44# CHECK-NEXT:  1a: 00158513             addi    a0, a1, 0x145# CHECK-NEXT:  1e: 0001                 c.nop46# CHECK-NEXT:  20: 0001                 c.nop47# CHECK-NEXT:           0000000000000020:  R_RISCV_ALIGN        *ABS*+0x648# CHECK-NEXT:  22: 0001                 c.nop49# CHECK-NEXT:  24: 00000013             addi    zero, zero, 0x050# CHECK-EMPTY:51# CHECK-NEXT: <b0>:52# CHECK-NEXT:  28: 00158513             addi    a0, a1, 0x153# CHECK-EMPTY:54# CHECK-NEXT: <c0>:55# CHECK-NEXT:  2c: 00000097             auipc   ra, 0x056# CHECK-NEXT:           000000000000002c:  R_RISCV_CALL_PLT     foo57# CHECK-NEXT:           000000000000002c:  R_RISCV_RELAX        *ABS*58# CHECK-NEXT:  30: 000080e7             jalr    ra, 0x0(ra) <c0>59# CHECK-NEXT:  34: 0001                 c.nop60# CHECK-NEXT:           0000000000000034:  R_RISCV_ALIGN        *ABS*+0x261# CHECK-EMPTY:62# CHECK-NEXT: <d0>:63# CHECK-NEXT:  36: 00258513             addi    a0, a1, 0x264 65# CHECK-REL:  Relocation section '.rela.text' at offset {{.*}} contains 7 entries:66# CHECK-REL:  Relocation section '.rela.text1' at offset {{.*}} contains 3 entries:67 68# CHECK1:      <_start>:69# CHECK1-NEXT:    010000ef      jal     ra, 0x10010 <foo>70# CHECK1-NEXT:    00000013      addi zero, zero, 0x071# CHECK1-EMPTY:72# CHECK1-NEXT: <b0>:73# CHECK1-NEXT:    00158513      addi    a0, a1, 0x174# CHECK1-EMPTY:75# CHECK1-NEXT: <d0>:76# CHECK1-NEXT:    00258513      addi    a0, a1, 0x277 78## Test CREL.79# RUN: llvm-mc -filetype=obj -triple=riscv64 -mattr=+c,+relax --crel a.s -o acrel.o80# RUN: ld.lld -r acrel.o bc.o -o out1.ro81# RUN: llvm-objdump -dr -M no-aliases out1.ro | FileCheck %s --check-prefix=CHECK282 83# CHECK2:      <_start>:84# CHECK2-NEXT:   0: 00000097             auipc   ra, 0x085# CHECK2-NEXT:           0000000000000000:  R_RISCV_CALL_PLT     foo86# CHECK2-NEXT:           0000000000000000:  R_RISCV_RELAX        *ABS*87# CHECK2-NEXT:   4: 000080e7             jalr    ra, 0x0(ra) <_start>88# CHECK2-NEXT:   8: 0001                 c.nop89# CHECK2-NEXT:           0000000000000008:  R_RISCV_ALIGN        *ABS*+0x690# CHECK2-NEXT:   a: 0001                 c.nop91# CHECK2-NEXT:   c: 0001                 c.nop92# CHECK2-EMPTY:93# CHECK2-NEXT: <b0>:94# CHECK2-NEXT:   e: 00158513             addi    a0, a1, 0x195 96#--- a.s97.globl _start98_start:99  call foo100 101.section .text1,"ax"102.globl foo103foo:104  call foo105 106#--- b.s107## Needs synthesized ALIGN108.option push109.option norelax110.balign 8111b0:112  addi a0, a1, 1113 114.section .text1,"ax"115.balign 8116  addi a0, a1, 1117 118.option pop119 120#--- b1.s121.option push122.option norelax123  .reloc ., R_RISCV_ALIGN, 6124  addi x0, x0, 0125  c.nop126.balign 8127b0:128  addi a0, a1, 1129.option pop130 131#--- c.s132.balign 2133c0:134  call foo135 136#--- d.s137## Needs synthesized ALIGN138.balign 4139d0:140  addi a0, a1, 2141