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