xref: /llvm-project/llvm/test/MC/ELF/cfi-offset.s (revision 67bd3c58c0c7389e39c5a2f4d3b1a30459ccf5b7)
1// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o %t
2// RUN: llvm-readobj -S --sr --sd %t | FileCheck %s
3// RUN: llvm-objdump --dwarf=frames %t | FileCheck %s --check-prefix=FRAMES
4
5f:
6    .cfi_startproc
7        nop
8    .cfi_offset %rbp, -24
9    .cfi_offset %rflags, -16
10    .cfi_offset %gs.base, -8
11    .cfi_offset %fs.base, 0
12        nop
13    .cfi_endproc
14
15// CHECK:        Section {
16// CHECK:          Name: .eh_frame
17// CHECK-NEXT:     Type: SHT_X86_64_UNWIND
18// CHECK-NEXT:     Flags [
19// CHECK-NEXT:       SHF_ALLOC
20// CHECK-NEXT:     ]
21// CHECK-NEXT:     Address: 0x0
22// CHECK-NEXT:     Offset: 0x48
23// CHECK-NEXT:     Size: 56
24// CHECK-NEXT:     Link: 0
25// CHECK-NEXT:     Info: 0
26// CHECK-NEXT:     AddressAlignment: 8
27// CHECK-NEXT:     EntrySize: 0
28// CHECK-NEXT:     Relocations [
29// CHECK-NEXT:     ]
30// CHECK-NEXT:     SectionData (
31// CHECK-NEXT:       0000: 14000000 00000000 017A5200 01781001
32// CHECK-NEXT:       0010: 1B0C0708 90010000 1C000000 1C000000
33// CHECK-NEXT:       0020: 00000000 02000000 00418603 B102BB01
34// CHECK-NEXT:       0030: BA000000 00000000
35// CHECK-NEXT:     )
36// CHECK-NEXT:   }
37
38// CHECK:        Section {
39// CHECK:          Name: .rela.eh_frame
40// CHECK-NEXT:     Type: SHT_RELA
41// CHECK-NEXT:     Flags [
42// CHECK-NEXT:       SHF_INFO_LINK
43// CHECK-NEXT:     ]
44// CHECK-NEXT:     Address: 0x0
45// CHECK-NEXT:     Offset:
46// CHECK-NEXT:     Size: 24
47// CHECK-NEXT:     Link:
48// CHECK-NEXT:     Info:
49// CHECK-NEXT:     AddressAlignment: 8
50// CHECK-NEXT:     EntrySize: 24
51// CHECK-NEXT:     Relocations [
52// CHECK-NEXT:       0x20 R_X86_64_PC32 .text 0x0
53// CHECK-NEXT:     ]
54// CHECK:        }
55
56// FRAMES:      DW_CFA_offset: reg6 -24
57// FRAMES-NEXT: DW_CFA_offset: reg49 -16
58// FRAMES-NEXT: DW_CFA_offset: reg59 -8
59// FRAMES-NEXT: DW_CFA_offset: reg58 0
60