# RUN: llvm-mc -triple x86_64 %s | FileCheck %s --check-prefix=ASM # RUN: llvm-mc -filetype=obj -triple=x86_64 %s -o %t # RUN: llvm-readelf -sX %t | FileCheck %s --check-prefix=SYMTAB # RUN: llvm-dwarfdump --eh-frame %t | FileCheck %s # RUN: not llvm-mc -filetype=obj -triple=x86_64 --defsym ERR=1 %s -o /dev/null 2>&1 | \ # RUN: FileCheck %s --check-prefix=ERR --implicit-check-not=error: # ASM: nop # ASM-NEXT: .cfi_label cfi1 # ASM-NEXT: .cfi_escape 0x00 # ASM: .globl cfi2 # ASM-NEXT: .cfi_label cfi2 # ASM: nop # ASM-NEXT: .cfi_label .Lcfi3 # SYMTAB: 000000000000002b 0 NOTYPE LOCAL DEFAULT 3 (.eh_frame) cfi1 # SYMTAB: 000000000000002d 0 NOTYPE GLOBAL DEFAULT 3 (.eh_frame) cfi2 # SYMTAB-NOT: {{.}} # CHECK: DW_CFA_remember_state: # CHECK-NEXT: DW_CFA_advance_loc: 1 to 0x1 # CHECK-NEXT: DW_CFA_nop: # CHECK-NEXT: DW_CFA_advance_loc: 1 to 0x2 # CHECK-NEXT: DW_CFA_nop: # CHECK-NEXT: DW_CFA_nop: # CHECK-NEXT: DW_CFA_advance_loc: 1 to 0x3 # CHECK-NEXT: DW_CFA_nop: # CHECK-NEXT: DW_CFA_nop: # CHECK-NEXT: DW_CFA_nop: # CHECK-NEXT: DW_CFA_restore_state: .globl foo foo: .cfi_startproc .cfi_remember_state nop .cfi_label cfi1 .cfi_escape 0 nop .globl cfi2 .cfi_label cfi2 .cfi_escape 0, 0 nop .cfi_label .Lcfi3 .cfi_escape 0, 0, 0 .cfi_restore_state ret # ERR: [[#@LINE+10]]:1: error: this directive must appear between .cfi_startproc and .cfi_endproc directives .ifdef ERR # ERR: [[#@LINE+1]]:12: error: symbol 'foo' is already defined .cfi_label foo # ERR: [[#@LINE+1]]:12: error: symbol '.Lcfi3' is already defined .cfi_label .Lcfi3 .endif .cfi_endproc .ifdef ERR .cfi_label after_endproc .endif