llvm/test/MC/MachO/debug_frame.s
Quentin Colombet 67ed710684 [MC] Emit an error if cfi_startproc is used before a symbol is defined.
Currently, we bind those directives with the last symbol, so if none
has been defined, this would lead to a crash of the compiler.

<rdar://problem/15939159>


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@206236 91177308-0d34-0410-b5e6-96231b3b80d8
2014-04-15 01:17:45 +00:00

49 lines
1.4 KiB
ArmAsm

// RUN: llvm-mc -triple i386-apple-darwin %s -filetype=obj -o - | macho-dump | FileCheck %s
// Make sure MC can handle file level .cfi_startproc and .cfi_endproc that creates
// an empty frame.
// rdar://10017184
_proc:
.cfi_startproc
.cfi_endproc
// Check that we don't produce a relocation for the CIE pointer and therefore
// we have only one relocation in __debug_frame.
.section __TEXT,__text,regular,pure_instructions
.globl _f
.align 4, 0x90
_f: ## @f
Ltmp0:
.cfi_startproc
## BB#0: ## %entry
movl $42, %eax
ret
Ltmp1:
.cfi_endproc
Leh_func_end0:
.cfi_sections .debug_frame
Ltext_end:
// CHECK: (('section_name', '__debug_frame\x00\x00\x00')
// CHECK-NEXT: ('segment_name', '__DWARF\x00\x00\x00\x00\x00\x00\x00\x00\x00')
// CHECK-NEXT: ('address', 8)
// CHECK-NEXT: ('size', 52)
// CHECK-NEXT: ('offset', 332)
// CHECK-NEXT: ('alignment', 2)
// CHECK-NEXT: ('reloc_offset', 384)
// CHECK-NEXT: ('num_reloc', 2)
// CHECK-NEXT: ('flags', 0x2000000)
// CHECK-NEXT: ('reserved1', 0)
// CHECK-NEXT: ('reserved2', 0)
// CHECK-NEXT: ),
// CHECK-NEXT: ('_relocations', [
// CHECK-NEXT: # Relocation 0
// CHECK-NEXT: (('word-0', 0x2c),
// CHECK-NEXT: ('word-1', 0x4000001)),
// CHECK-NEXT: # Relocation 1
// CHECK-NEXT: (('word-0', 0x1c),
// CHECK-NEXT: ('word-1', 0x4000001)),
// CHECK-NEXT: ])