# RUN: llvm-mc --filetype=obj --gsframe -triple x86_64 %s -o %t.o # RUN: llvm-readelf --sframe %t.o | FileCheck %s .cfi_sections .sframe f0: .cfi_startproc # FRE 0 nop .cfi_def_cfa_offset 16 # FRE 1 .cfi_def_cfa_offset 8 # location didn't change. No new FRE, but new offset. nop .cfi_def_cfa_offset 8 # offset didn't change. No new FRE. nop .cfi_def_cfa_offset 16 # FRE 2. new location, new offset. nop .cfi_register 0, 1 # Uninteresting register. No new FRE. nop .cfi_endproc f1: .cfi_startproc nop nop .cfi_endproc f2: .cfi_startproc .cfi_endproc f3: .cfi_startproc simple .cfi_endproc # CHECK: SFrame section '.sframe' { # CHECK-NEXT: Header { # CHECK-NEXT: Magic: 0xDEE2 # CHECK-NEXT: Version: V2 (0x2) # CHECK-NEXT: Flags [ (0x4) # CHECK: ABI: AMD64EndianLittle (0x3) # CHECK-NEXT: CFA fixed FP offset (unused): 0 # CHECK-NEXT: CFA fixed RA offset: -8 # CHECK-NEXT: Auxiliary header length: 0 # CHECK-NEXT: Num FDEs: 2 # CHECK-NEXT: Num FREs: 4 # CHECK-NEXT: FRE subsection length: 12 # CHECK-NEXT: FDE subsection offset: 0 # CHECK-NEXT: FRE subsection offset: 40 # CHECK: Function Index [ # CHECK-NEXT: FuncDescEntry [0] { # CHECK-NEXT: PC { # CHECK-NEXT: Relocation: {{.*}}PC32{{.*}} # CHECK-NEXT: Symbol Name: .text # CHECK-NEXT: Start Address: {{.*}} # CHECK-NEXT: } # CHECK-NEXT: Size: 0x5 # CHECK-NEXT: Start FRE Offset: 0x0 # CHECK-NEXT: Num FREs: 3 # CHECK-NEXT: Info { # CHECK-NEXT: FRE Type: Addr1 (0x0) # CHECK-NEXT: FDE Type: PCInc (0x0) # CHECK-NEXT: Raw: 0x0 # CHECK-NEXT: } # CHECK-NEXT: Repetitive block size (unused): 0x0 # CHECK-NEXT: Padding2: 0x0 # Contents of FREs are tested elsewhere # CHECK: FuncDescEntry [1] { # CHECK-NEXT: PC { # CHECK-NEXT: Relocation: {{.*}}PC32{{.*}} # CHECK-NEXT: Symbol Name: .text # CHECK-NEXT: Start Address: {{.*}} # CHECK-NEXT: } # CHECK-NEXT: Size: 0x2 # CHECK-NEXT: Start FRE Offset: 0x9 # CHECK-NEXT: Num FREs: 1 # CHECK-NEXT: Info { # CHECK-NEXT: FRE Type: Addr1 (0x0) # CHECK-NEXT: FDE Type: PCInc (0x0) # CHECK-NEXT: Raw: 0x0 # CHECK-NEXT: } # CHECK-NEXT: Repetitive block size (unused): 0x0 # CHECK-NEXT: Padding2: 0x0