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