1*9880d681SAndroid Build Coastguard Worker// RUN: llvm-mc -triple i386-apple-darwin %s -filetype=obj -o - | llvm-readobj -s -sd -r | FileCheck %s 2*9880d681SAndroid Build Coastguard Worker 3*9880d681SAndroid Build Coastguard Worker// Make sure MC can handle file level .cfi_startproc and .cfi_endproc that creates 4*9880d681SAndroid Build Coastguard Worker// an empty frame. 5*9880d681SAndroid Build Coastguard Worker// rdar://10017184 6*9880d681SAndroid Build Coastguard Worker_proc: 7*9880d681SAndroid Build Coastguard Worker.cfi_startproc 8*9880d681SAndroid Build Coastguard Worker.cfi_endproc 9*9880d681SAndroid Build Coastguard Worker 10*9880d681SAndroid Build Coastguard Worker// Check that we don't produce a relocation for the CIE pointer and therefore 11*9880d681SAndroid Build Coastguard Worker// we have only one relocation in __debug_frame. 12*9880d681SAndroid Build Coastguard Worker 13*9880d681SAndroid Build Coastguard Worker .section __TEXT,__text,regular,pure_instructions 14*9880d681SAndroid Build Coastguard Worker .globl _f 15*9880d681SAndroid Build Coastguard Worker .align 4, 0x90 16*9880d681SAndroid Build Coastguard Worker_f: ## @f 17*9880d681SAndroid Build Coastguard WorkerLtmp0: 18*9880d681SAndroid Build Coastguard Worker .cfi_startproc 19*9880d681SAndroid Build Coastguard Worker## BB#0: ## %entry 20*9880d681SAndroid Build Coastguard Worker movl $42, %eax 21*9880d681SAndroid Build Coastguard Worker ret 22*9880d681SAndroid Build Coastguard WorkerLtmp1: 23*9880d681SAndroid Build Coastguard Worker .cfi_endproc 24*9880d681SAndroid Build Coastguard WorkerLeh_func_end0: 25*9880d681SAndroid Build Coastguard Worker 26*9880d681SAndroid Build Coastguard Worker .cfi_sections .debug_frame 27*9880d681SAndroid Build Coastguard WorkerLtext_end: 28*9880d681SAndroid Build Coastguard Worker 29*9880d681SAndroid Build Coastguard Worker// CHECK: Section { 30*9880d681SAndroid Build Coastguard Worker// CHECK: Index: 1 31*9880d681SAndroid Build Coastguard Worker// CHECK: Name: __debug_frame (5F 5F 64 65 62 75 67 5F 66 72 61 6D 65 00 00 00) 32*9880d681SAndroid Build Coastguard Worker// CHECK: Segment: __DWARF (5F 5F 44 57 41 52 46 00 00 00 00 00 00 00 00 00) 33*9880d681SAndroid Build Coastguard Worker// CHECK: Address: 0x8 34*9880d681SAndroid Build Coastguard Worker// CHECK: Size: 0x34 35*9880d681SAndroid Build Coastguard Worker// CHECK: Offset: 332 36*9880d681SAndroid Build Coastguard Worker// CHECK: Alignment: 2 37*9880d681SAndroid Build Coastguard Worker// CHECK: RelocationOffset: 0x180 38*9880d681SAndroid Build Coastguard Worker// CHECK: RelocationCount: 2 39*9880d681SAndroid Build Coastguard Worker// CHECK: Type: 0x0 40*9880d681SAndroid Build Coastguard Worker// CHECK: Attributes [ (0x20000) 41*9880d681SAndroid Build Coastguard Worker// CHECK: Debug (0x20000) 42*9880d681SAndroid Build Coastguard Worker// CHECK: ] 43*9880d681SAndroid Build Coastguard Worker// CHECK: Reserved1: 0x0 44*9880d681SAndroid Build Coastguard Worker// CHECK: Reserved2: 0x0 45*9880d681SAndroid Build Coastguard Worker// CHECK: SectionData ( 46*9880d681SAndroid Build Coastguard Worker// CHECK: 0000: 10000000 FFFFFFFF 04000400 017C080C |.............|..| 47*9880d681SAndroid Build Coastguard Worker// CHECK: 0010: 04048801 0C000000 00000000 00000000 |................| 48*9880d681SAndroid Build Coastguard Worker// CHECK: 0020: 00000000 0C000000 00000000 00000000 |................| 49*9880d681SAndroid Build Coastguard Worker// CHECK: 0030: 06000000 |....| 50*9880d681SAndroid Build Coastguard Worker// CHECK: ) 51*9880d681SAndroid Build Coastguard Worker// CHECK: } 52*9880d681SAndroid Build Coastguard Worker// CHECK: ] 53*9880d681SAndroid Build Coastguard Worker// CHECK: Relocations [ 54*9880d681SAndroid Build Coastguard Worker// CHECK: Section __debug_frame { 55*9880d681SAndroid Build Coastguard Worker// CHECK: 0x2C 0 2 0 GENERIC_RELOC_VANILLA 0 __text 56*9880d681SAndroid Build Coastguard Worker// CHECK: 0x1C 0 2 0 GENERIC_RELOC_VANILLA 0 __text 57*9880d681SAndroid Build Coastguard Worker// CHECK: } 58*9880d681SAndroid Build Coastguard Worker// CHECK: ] 59