1 @ RUN: llvm-mc %s -triple=armv7-unknown-linux-gnueabi -filetype=obj -o - \ 2 @ RUN: | llvm-readobj -s -sd -sr -t | FileCheck %s 3 4 @ Check the .group section for the function in comdat section. 5 6 @ In C++, the instantiation of the template will come with linkonce (or 7 @ linkonce_odr) linkage, so that the linker can remove the duplicated 8 @ instantiation. When the exception handling is enabled on those function, 9 @ we have to group the corresponding .ARM.extab and .ARM.exidx with the 10 @ text section together. 11 @ 12 @ This test case will check the content of .group section. The section index 13 @ of the grouped sections should be recorded in .group section. 14 15 .syntax unified 16 .section .TEST1,"axG",%progbits,func1,comdat 17 .weak func1 18 .align 2 19 .type func1,%function 20 func1: 21 .fnstart 22 .save {r4, lr} 23 push {r4, lr} 24 .vsave {d8, d9, d10, d11, d12} 25 vpush {d8, d9, d10, d11, d12} 26 .pad #24 27 sub sp, sp, #24 28 29 add sp, sp, #24 30 vpop {d8, d9, d10, d11, d12} 31 pop {r4, pc} 32 33 .globl __gxx_personality_v0 34 .personality __gxx_personality_v0 35 .handlerdata 36 .fnend 37 38 39 40 @------------------------------------------------------------------------------- 41 @ Check the .group section 42 @------------------------------------------------------------------------------- 43 @ CHECK: Sections [ 44 @ CHECK: Section { 45 @ CHECK: Index: 1 46 @ CHECK: Name: .group 47 @ CHECK: Type: SHT_GROUP (0x11) 48 @ CHECK: Flags [ (0x0) 49 @ CHECK: ] 50 @ CHECK: SectionData ( 51 @------------------------------------------------------------------------------- 52 @ The second, third, and fourth word should correspond to the section index 53 @ of .TEST1, .ARM.extab.TEST1, and .ARM.exidx.TEST1. 54 @------------------------------------------------------------------------------- 55 @ CHECK: 0000: 01000000 05000000 06000000 08000000 |................| 56 @ CHECK: ) 57 @ CHECK: } 58 59 60 @------------------------------------------------------------------------------- 61 @ Check the .TEST1 section 62 @------------------------------------------------------------------------------- 63 @ CHECK: Section { 64 @ CHECK: Index: 5 65 @ CHECK: Name: .TEST1 66 @ CHECK: Type: SHT_PROGBITS (0x1) 67 @------------------------------------------------------------------------------- 68 @ The flags should contain SHF_GROUP. 69 @------------------------------------------------------------------------------- 70 @ CHECK: Flags [ (0x206) 71 @ CHECK: SHF_ALLOC (0x2) 72 @ CHECK: SHF_EXECINSTR (0x4) 73 @ CHECK: SHF_GROUP (0x200) 74 @ CHECK: ] 75 @ CHECK: } 76 77 78 @------------------------------------------------------------------------------- 79 @ Check the .ARM.extab.TEST1 section 80 @------------------------------------------------------------------------------- 81 @ CHECK: Section { 82 @ CHECK: Index: 6 83 @ CHECK: Name: .ARM.extab.TEST1 84 @ CHECK: Type: SHT_PROGBITS (0x1) 85 @------------------------------------------------------------------------------- 86 @ The flags should contain SHF_GROUP. 87 @------------------------------------------------------------------------------- 88 @ CHECK: Flags [ (0x202) 89 @ CHECK: SHF_ALLOC (0x2) 90 @ CHECK: SHF_GROUP (0x200) 91 @ CHECK: ] 92 @ CHECK: } 93 94 95 @------------------------------------------------------------------------------- 96 @ Check the .ARM.exidx.TEST1 section 97 @------------------------------------------------------------------------------- 98 @ CHECK: Section { 99 @ CHECK: Index: 8 100 @ CHECK: Name: .ARM.exidx.TEST1 101 @ CHECK: Type: SHT_ARM_EXIDX (0x70000001) 102 @------------------------------------------------------------------------------- 103 @ The flags should contain SHF_GROUP. 104 @------------------------------------------------------------------------------- 105 @ CHECK: Flags [ (0x282) 106 @ CHECK: SHF_ALLOC (0x2) 107 @ CHECK: SHF_GROUP (0x200) 108 @ CHECK: SHF_LINK_ORDER (0x80) 109 @ CHECK: ] 110 @ CHECK: Link: 5 111 @ CHECK: } 112 @ CHECK: ] 113 114 115 116 @------------------------------------------------------------------------------- 117 @ Check symbol func1. It should be weak binding, and belong to .TEST1 section. 118 @------------------------------------------------------------------------------- 119 @ CHECK: Symbols [ 120 @ CHECK: Symbol { 121 @ CHECK: Name: func1 122 @ CHECK: Binding: Weak (0x2) 123 @ CHECK: Type: Function (0x2) 124 @ CHECK: Section: .TEST1 (0x5) 125 @ CHECK: } 126 @ CHECK: ] 127