| @ RUN: llvm-mc %s -triple=armv7-unknown-linux-gnueabi -filetype=obj -o - \ | 
 | @ RUN:   | llvm-readobj -s -sd -sr -t > %t | 
 | @ RUN: FileCheck %s < %t | 
 | @ RUN: FileCheck --check-prefix=RELOC %s < %t | 
 |  | 
 | @ Check the combination of .section, .fnstart, and .fnend directives. | 
 |  | 
 | @ For the functions in .text section, the exception handling index (EXIDX) | 
 | @ should be generated in .ARM.exidx, and the exception handling table (EXTAB) | 
 | @ should be generated in .ARM.extab. | 
 |  | 
 | @ For the functions in custom section specified by .section directives, | 
 | @ the EXIDX should be generated in ".ARM.exidx[[SECTION_NAME]]", and the EXTAB | 
 | @ should be generated in ".ARM.extab[[SECTION_NAME]]". | 
 |  | 
 | 	.syntax	unified | 
 |  | 
 | @------------------------------------------------------------------------------- | 
 | @ .TEST1 section | 
 | @------------------------------------------------------------------------------- | 
 | 	.section	.TEST1 | 
 | 	.globl	func1 | 
 | 	.align	2 | 
 | 	.type	func1,%function | 
 | 	.fnstart | 
 | func1: | 
 | 	bx	lr | 
 | 	.personality	__gxx_personality_v0 | 
 | 	.handlerdata | 
 | 	.fnend | 
 |  | 
 |  | 
 | @------------------------------------------------------------------------------- | 
 | @ TEST2 section (without the dot in the beginning) | 
 | @------------------------------------------------------------------------------- | 
 | 	.section	TEST2 | 
 | 	.globl	func2 | 
 | 	.align	2 | 
 | 	.type	func2,%function | 
 | 	.fnstart | 
 | func2: | 
 | 	bx	lr | 
 | 	.personality	__gxx_personality_v0 | 
 | 	.handlerdata | 
 | 	.fnend | 
 |  | 
 |  | 
 | @------------------------------------------------------------------------------- | 
 | @ Check the .TEST1 section. | 
 | @------------------------------------------------------------------------------- | 
 | @ CHECK: Sections [ | 
 | @ CHECK:   Section { | 
 | @ CHECK:     Index: 3 | 
 | @ CHECK-NEXT:     Name: .TEST1 | 
 | @ CHECK:     SectionData ( | 
 | @ CHECK:       0000: 1EFF2FE1                             |../.| | 
 | @ CHECK:     ) | 
 | @ CHECK:   } | 
 |  | 
 | @------------------------------------------------------------------------------- | 
 | @ Check the .ARM.extab.TEST1 section, the EXTAB of .TEST1 section. | 
 | @------------------------------------------------------------------------------- | 
 | @ CHECK:   Section { | 
 | @ CHECK:     Name: .ARM.extab.TEST1 | 
 | @ CHECK:     SectionData ( | 
 | @ CHECK:       0000: 00000000 B0B0B000                    |........| | 
 | @ CHECK:     ) | 
 | @ CHECK:   } | 
 |  | 
 | @ RELOC:   Section { | 
 | @ RELOC:     Name: .rel.ARM.extab.TEST1 | 
 | @ RELOC:     Relocations [ | 
 | @ RELOC:       0x0 R_ARM_PREL31 __gxx_personality_v0 0x0 | 
 | @ RELOC:     ] | 
 | @ RELOC:   } | 
 |  | 
 |  | 
 | @------------------------------------------------------------------------------- | 
 | @ Check the.ARM.exidx.TEST1 section, the EXIDX of .TEST1 section. | 
 | @------------------------------------------------------------------------------- | 
 | @ CHECK:   Section { | 
 | @ CHECK:     Name: .ARM.exidx.TEST1 | 
 |  | 
 | @------------------------------------------------------------------------------- | 
 | @ This section should linked with .TEST1 section. | 
 | @------------------------------------------------------------------------------- | 
 | @ CHECK:     Link: 3 | 
 |  | 
 | @------------------------------------------------------------------------------- | 
 | @ The first word should be relocated to the code address in .TEST1 section. | 
 | @ The second word should be relocated to the EHTAB entry in .ARM.extab.TEST1 | 
 | @ section. | 
 | @------------------------------------------------------------------------------- | 
 | @ CHECK:     SectionData ( | 
 | @ CHECK:       0000: 00000000 00000000                    |........| | 
 | @ CHECK:     ) | 
 | @ CHECK:   } | 
 |  | 
 | @ RELOC:   Section { | 
 | @ RELOC:     Name: .rel.ARM.exidx.TEST1 | 
 | @ RELOC:     Relocations [ | 
 | @ RELOC:       0x0 R_ARM_PREL31 .TEST1 0x0 | 
 | @ RELOC:       0x4 R_ARM_PREL31 .ARM.extab.TEST1 0x0 | 
 | @ RELOC:     ] | 
 | @ RELOC:   } | 
 |  | 
 |  | 
 | @------------------------------------------------------------------------------- | 
 | @ Check the TEST2 section (without the dot in the beginning) | 
 | @------------------------------------------------------------------------------- | 
 | @ CHECK:   Section { | 
 | @ CHECK:     Index: 8 | 
 | @ CHECK-NEXT:     Name: TEST2 | 
 | @ CHECK:     SectionData ( | 
 | @ CHECK:       0000: 1EFF2FE1                             |../.| | 
 | @ CHECK:     ) | 
 | @ CHECK:   } | 
 |  | 
 | @------------------------------------------------------------------------------- | 
 | @ Check the .ARM.extabTEST2 section, the EXTAB of TEST2 section. | 
 | @------------------------------------------------------------------------------- | 
 | @ CHECK:   Section { | 
 | @ CHECK:     Name: .ARM.extabTEST2 | 
 | @ CHECK:     SectionData ( | 
 | @ CHECK:       0000: 00000000 B0B0B000                    |........| | 
 | @ CHECK:     ) | 
 | @ CHECK:   } | 
 |  | 
 | @ RELOC:   Section { | 
 | @ RELOC:     Name: .rel.ARM.extabTEST2 | 
 | @ RELOC:     Relocations [ | 
 | @ RELOC:       0x0 R_ARM_PREL31 __gxx_personality_v0 0x0 | 
 | @ RELOC:     ] | 
 | @ RELOC:   } | 
 |  | 
 |  | 
 | @------------------------------------------------------------------------------- | 
 | @ Check the .ARM.exidxTEST2 section, the EXIDX of TEST2 section. | 
 | @------------------------------------------------------------------------------- | 
 | @ CHECK:   Section { | 
 | @ CHECK:     Name: .ARM.exidxTEST2 | 
 |  | 
 | @------------------------------------------------------------------------------- | 
 | @ This section should linked with TEST2 section. | 
 | @------------------------------------------------------------------------------- | 
 | @ CHECK:     Link: 8 | 
 |  | 
 | @------------------------------------------------------------------------------- | 
 | @ The first word should be relocated to the code address in TEST2 section. | 
 | @ The second word should be relocated to the EHTAB entry in .ARM.extabTEST2 | 
 | @ section. | 
 | @------------------------------------------------------------------------------- | 
 | @ CHECK:     SectionData ( | 
 | @ CHECK:       0000: 00000000 00000000                    |........| | 
 | @ CHECK:     ) | 
 | @ CHECK:   } | 
 |  | 
 | @ RELOC:   Section { | 
 | @ RELOC:     Name: .rel.ARM.exidxTEST2 | 
 | @ RELOC:     Relocations [ | 
 | @ RELOC:       0x0 R_ARM_PREL31 TEST2 0x0 | 
 | @ RELOC:       0x4 R_ARM_PREL31 .ARM.extabTEST2 0x0 | 
 | @ RELOC:     ] | 
 | @ RELOC:   } | 
 |  | 
 |  | 
 |  | 
 | @------------------------------------------------------------------------------- | 
 | @ Check the symbols and the sections they belong to | 
 | @------------------------------------------------------------------------------- | 
 | @ CHECK: Symbols [ | 
 | @ CHECK:   Symbol { | 
 | @ CHECK:     Name: func1 | 
 | @ CHECK:     Section: .TEST1 | 
 | @ CHECK:   } | 
 | @ CHECK:   Symbol { | 
 | @ CHECK:     Name: func2 | 
 | @ CHECK:     Section: TEST2 | 
 | @ CHECK:   } | 
 | @ CHECK: ] |