xref: /llvm-project/llvm/test/MC/RISCV/cfi-advance.s (revision cd68532e37e2671e9f35fad2fd1078451d1d8a38)
1# RUN: llvm-mc -filetype=obj -triple riscv32 -mattr=-relax %s -o %t.o
2# RUN: llvm-readelf -sr %t.o | FileCheck %s --check-prefix=NORELAX
3# RUN: llvm-dwarfdump --debug-frame %t.o 2>&1 \
4# RUN:     | FileCheck -check-prefix=CHECK-DWARFDUMP %s
5# RUN: llvm-mc -filetype=obj -triple riscv32 -mattr=+relax %s -o %t.relax.o
6# RUN: llvm-readelf -sr %t.relax.o | FileCheck %s --check-prefix=RELAX
7
8# NORELAX:      Relocation section '.rela.text1' at offset {{.*}} contains 1 entries:
9# NORELAX-NEXT:  Offset     Info    Type                Sym. Value  Symbol's Name + Addend
10# NORELAX-NEXT: 00000000  00000313 R_RISCV_CALL_PLT       00000004   .L0 + 0
11# NORELAX-EMPTY:
12# NORELAX-NEXT: Relocation section '.rela.eh_frame' at offset {{.*}} contains 1 entries:
13# NORELAX:       Offset     Info    Type                Sym. Value  Symbol's Name + Addend
14# NORELAX-NEXT: 0000001c  00000139 R_RISCV_32_PCREL       00000000   .L0 + 0
15# NORELAX-EMPTY:
16# NORELAX:      Symbol table '.symtab' contains 13 entries:
17# NORELAX-NEXT:    Num:    Value  Size Type    Bind   Vis       Ndx Name
18# NORELAX-NEXT:      0: 00000000     0 NOTYPE  LOCAL  DEFAULT   UND
19# NORELAX-NEXT:      1: 00000000     0 NOTYPE  LOCAL  DEFAULT     2 .L0 {{$}}
20# NORELAX:           3: 00000004     0 NOTYPE  LOCAL  DEFAULT     2 .L0{{$}}
21# NORELAX-NOT: .L0
22
23# RELAX:        Relocation section '.rela.eh_frame' at offset {{.*}} contains 5 entries:
24# RELAX-NEXT:    Offset     Info    Type                Sym. Value  Symbol's Name + Addend
25# RELAX-NEXT:   0000001c  00000139 R_RISCV_32_PCREL       00000000   .L0 + 0
26# RELAX-NEXT:   00000020  00000c23 R_RISCV_ADD32          0001017a   .L0 + 0
27# RELAX-NEXT:   00000020  00000127 R_RISCV_SUB32          00000000   .L0 + 0
28# RELAX-NEXT:   00000035  00000b35 R_RISCV_SET6           00010176   .L0 + 0
29# RELAX-NEXT:   00000035  00000934 R_RISCV_SUB6           0001016e   .L0 + 0
30# RELAX-EMPTY:
31# RELAX:        Symbol table '.symtab' contains 16 entries:
32# RELAX-NEXT:      Num:    Value  Size Type    Bind   Vis       Ndx Name
33# RELAX-NEXT:        0: 00000000     0 NOTYPE  LOCAL  DEFAULT   UND
34# RELAX-NEXT:        1: 00000000     0 NOTYPE  LOCAL  DEFAULT     2 .L0 {{$}}
35# RELAX:             3: 00000004     0 NOTYPE  LOCAL  DEFAULT     2 .L0{{$}}
36# RELAX:             9: 0001016e     0 NOTYPE  LOCAL  DEFAULT     2 .L0 {{$}}
37# RELAX:            11: 00010176     0 NOTYPE  LOCAL  DEFAULT     2 .L0 {{$}}
38# RELAX:            12: 0001017a     0 NOTYPE  LOCAL  DEFAULT     2 .L0 {{$}}
39
40# CHECK-DWARFDUMP: DW_CFA_advance_loc1: 104
41# CHECK-DWARFDUMP-NEXT: DW_CFA_def_cfa_offset: +8
42# CHECK-DWARFDUMP-NEXT: DW_CFA_advance_loc2: 259
43# CHECK-DWARFDUMP-NEXT: DW_CFA_def_cfa_offset: +8
44# CHECK-DWARFDUMP-NEXT: DW_CFA_advance_loc4: 65539
45# CHECK-DWARFDUMP-NEXT: DW_CFA_def_cfa_offset: +8
46# CHECK-DWARFDUMP-NEXT: DW_CFA_advance_loc: 10
47# CHECK-DWARFDUMP-NEXT: DW_CFA_def_cfa_offset: +8
48        .text
49        .globl  test                            # -- Begin function test
50        .p2align        1
51        .type   test,@function
52test:
53        .cfi_startproc
54        nop
55## This looks similar to fake label names ".L0 ". Even if this is ".L0 ",
56## the assembler will not conflate it with fake labels.
57.L0:
58        .zero 100, 0x90
59        .cfi_def_cfa_offset 8
60        nop
61        .zero 255, 0x90
62        .cfi_def_cfa_offset 8
63        nop
64        .zero 65535, 0x90
65        .cfi_def_cfa_offset 8
66        nop
67        .p2align 3
68        .cfi_def_cfa_offset 8
69        nop
70        .cfi_endproc
71
72.section .text1,"ax"
73call .L0
74