1## Check how we dump regular ELF section flags. 2 3# RUN: yaml2obj %s -o %t.o 4# RUN: llvm-readobj -S %t.o | FileCheck --check-prefix=LLVM %s 5# RUN: llvm-readelf -S %t.o | FileCheck --check-prefix=GNU %s 6 7# LLVM: Name: allflags 8# LLVM-NEXT: Type: SHT_PROGBITS 9# LLVM-NEXT: Flags [ (0x80200FF7) 10# LLVM-NEXT: SHF_ALLOC (0x2) 11# LLVM-NEXT: SHF_COMPRESSED (0x800) 12# LLVM-NEXT: SHF_EXCLUDE (0x80000000) 13# LLVM-NEXT: SHF_EXECINSTR (0x4) 14# LLVM-NEXT: SHF_GNU_RETAIN (0x200000) 15# LLVM-NEXT: SHF_GROUP (0x200) 16# LLVM-NEXT: SHF_INFO_LINK (0x40) 17# LLVM-NEXT: SHF_LINK_ORDER (0x80) 18# LLVM-NEXT: SHF_MERGE (0x10) 19# LLVM-NEXT: SHF_OS_NONCONFORMING (0x100) 20# LLVM-NEXT: SHF_STRINGS (0x20) 21# LLVM-NEXT: SHF_TLS (0x400) 22# LLVM-NEXT: SHF_WRITE (0x1) 23# LLVM-NEXT: ] 24 25# LLVM: Name: noflags 26# LLVM-NEXT: Type: SHT_PROGBITS 27# LLVM-NEXT: Flags [ (0x0) 28# LLVM-NEXT: ] 29 30# LLVM: Name: write 31# LLVM-NEXT: Type: SHT_PROGBITS 32# LLVM-NEXT: Flags [ (0x1) 33# LLVM-NEXT: SHF_WRITE (0x1) 34# LLVM-NEXT: ] 35 36# LLVM: Name: alloc 37# LLVM-NEXT: Type: SHT_PROGBITS 38# LLVM-NEXT: Flags [ (0x2) 39# LLVM-NEXT: SHF_ALLOC (0x2) 40# LLVM-NEXT: ] 41 42# LLVM: Name: exec 43# LLVM-NEXT: Type: SHT_PROGBITS 44# LLVM-NEXT: Flags [ (0x4) 45# LLVM-NEXT: SHF_EXECINSTR (0x4) 46# LLVM-NEXT: ] 47 48# LLVM: Name: merge 49# LLVM-NEXT: Type: SHT_PROGBITS 50# LLVM-NEXT: Flags [ (0x10) 51# LLVM-NEXT: SHF_MERGE (0x10) 52# LLVM-NEXT: ] 53 54# LLVM: Name: strings 55# LLVM-NEXT: Type: SHT_PROGBITS 56# LLVM-NEXT: Flags [ (0x20) 57# LLVM-NEXT: SHF_STRINGS (0x20) 58# LLVM-NEXT: ] 59 60# LLVM: Name: infolink 61# LLVM-NEXT: Type: SHT_PROGBITS 62# LLVM-NEXT: Flags [ (0x40) 63# LLVM-NEXT: SHF_INFO_LINK (0x40) 64# LLVM-NEXT: ] 65 66# LLVM: Name: linkorder 67# LLVM-NEXT: Type: SHT_PROGBITS 68# LLVM-NEXT: Flags [ (0x80) 69# LLVM-NEXT: SHF_LINK_ORDER (0x80) 70# LLVM-NEXT: ] 71 72# LLVM: Name: nonconforming 73# LLVM-NEXT: Type: SHT_PROGBITS 74# LLVM-NEXT: Flags [ (0x100) 75# LLVM-NEXT: SHF_OS_NONCONFORMING (0x100) 76# LLVM-NEXT: ] 77 78# LLVM: Name: group 79# LLVM-NEXT: Type: SHT_PROGBITS 80# LLVM-NEXT: Flags [ (0x200) 81# LLVM-NEXT: SHF_GROUP (0x200) 82# LLVM-NEXT: ] 83 84# LLVM: Name: tls 85# LLVM-NEXT: Type: SHT_PROGBITS 86# LLVM-NEXT: Flags [ (0x400) 87# LLVM-NEXT: SHF_TLS (0x400) 88# LLVM-NEXT: ] 89 90# LLVM: Name: compressed 91# LLVM-NEXT: Type: SHT_PROGBITS 92# LLVM-NEXT: Flags [ (0x800) 93# LLVM-NEXT: SHF_COMPRESSED (0x800) 94# LLVM-NEXT: ] 95 96## SHF_GNU_RETAIN is defined in the OS-specific range, but we treat it generic 97## and allow it to be used with OSABI values other than GNU and FREEBSD. 98# LLVM: Name: retain 99# LLVM-NEXT: Type: SHT_PROGBITS 100# LLVM-NEXT: Flags [ (0x200000) 101# LLVM-NEXT: SHF_GNU_RETAIN (0x200000) 102# LLVM-NEXT: ] 103 104# LLVM: Name: exclude 105# LLVM-NEXT: Type: SHT_PROGBITS 106# LLVM-NEXT: Flags [ (0x80000000) 107# LLVM-NEXT: SHF_EXCLUDE (0x80000000) 108# LLVM-NEXT: ] 109 110# LLVM: Name: unknown 111# LLVM-NEXT: Type: SHT_PROGBITS 112# LLVM-NEXT: Flags [ (0xF0000) 113# LLVM-NEXT: ] 114 115# GNU: [Nr] Name Type Address Off Size ES Flg Lk Inf Al 116# GNU: [ 1] allflags PROGBITS 0000000000000000 000040 000000 00 WAXMSILOGTCRE 0 0 0 117# GNU: [ 2] noflags PROGBITS 0000000000000000 000040 000000 00 0 0 0 118# GNU: [ 3] write PROGBITS 0000000000000000 000040 000000 00 W 0 0 0 119# GNU: [ 4] alloc PROGBITS 0000000000000000 000040 000000 00 A 0 0 0 120# GNU: [ 5] exec PROGBITS 0000000000000000 000040 000000 00 X 0 0 0 121# GNU: [ 6] merge PROGBITS 0000000000000000 000040 000000 00 M 0 0 0 122# GNU: [ 7] strings PROGBITS 0000000000000000 000040 000000 00 S 0 0 0 123# GNU: [ 8] infolink PROGBITS 0000000000000000 000040 000000 00 I 0 0 0 124# GNU: [ 9] linkorder PROGBITS 0000000000000000 000040 000000 00 L 0 0 0 125# GNU: [10] nonconforming PROGBITS 0000000000000000 000040 000000 00 O 0 0 0 126# GNU: [11] group PROGBITS 0000000000000000 000040 000000 00 G 0 0 0 127# GNU: [12] tls PROGBITS 0000000000000000 000040 000000 00 T 0 0 0 128# GNU: [13] compressed PROGBITS 0000000000000000 000040 000000 00 C 0 0 0 129# GNU: [14] retain PROGBITS 0000000000000000 000040 000000 00 R 0 0 0 130# GNU: [15] exclude PROGBITS 0000000000000000 000040 000000 00 E 0 0 0 131# GNU: [16] unknown PROGBITS 0000000000000000 000040 000000 00 x 0 0 0 132 133--- !ELF 134FileHeader: 135 Class: ELFCLASS64 136 Data: ELFDATA2LSB 137 Type: ET_REL 138 Flags: [] 139Sections: 140 - Name: allflags 141 Type: SHT_PROGBITS 142 Flags: [ SHF_WRITE, SHF_ALLOC, SHF_EXECINSTR, SHF_MERGE, 143 SHF_STRINGS, SHF_INFO_LINK, SHF_LINK_ORDER, SHF_OS_NONCONFORMING, 144 SHF_GROUP, SHF_TLS, SHF_COMPRESSED, SHF_GNU_RETAIN, SHF_EXCLUDE ] 145 - Name: noflags 146 Type: SHT_PROGBITS 147 Flags: [ ] 148 - Name: write 149 Type: SHT_PROGBITS 150 Flags: [ SHF_WRITE ] 151 - Name: alloc 152 Type: SHT_PROGBITS 153 Flags: [ SHF_ALLOC ] 154 - Name: exec 155 Type: SHT_PROGBITS 156 Flags: [ SHF_EXECINSTR ] 157 - Name: merge 158 Type: SHT_PROGBITS 159 Flags: [ SHF_MERGE ] 160 - Name: strings 161 Type: SHT_PROGBITS 162 Flags: [ SHF_STRINGS ] 163 - Name: infolink 164 Type: SHT_PROGBITS 165 Flags: [ SHF_INFO_LINK ] 166 - Name: linkorder 167 Type: SHT_PROGBITS 168 Flags: [ SHF_LINK_ORDER ] 169 - Name: nonconforming 170 Type: SHT_PROGBITS 171 Flags: [ SHF_OS_NONCONFORMING ] 172 - Name: group 173 Type: SHT_PROGBITS 174 Flags: [ SHF_GROUP ] 175 - Name: tls 176 Type: SHT_PROGBITS 177 Flags: [ SHF_TLS ] 178 - Name: compressed 179 Type: SHT_PROGBITS 180 Flags: [ SHF_COMPRESSED ] 181 - Name: retain 182 Type: SHT_PROGBITS 183 Flags: [ SHF_GNU_RETAIN ] 184 - Name: exclude 185 Type: SHT_PROGBITS 186 Flags: [ SHF_EXCLUDE ] 187 - Name: unknown 188 Type: SHT_PROGBITS 189 ShFlags: 0x000f0000 190