| ## Check how we dump regular ELF section flags. |
| |
| # RUN: yaml2obj %s -o %t.o |
| # RUN: llvm-readobj -S %t.o | FileCheck --check-prefix=LLVM %s |
| # RUN: llvm-readelf -S %t.o | FileCheck --check-prefix=GNU %s |
| |
| # LLVM: Name: allflags |
| # LLVM-NEXT: Type: SHT_PROGBITS |
| # LLVM-NEXT: Flags [ (0x80200FF7) |
| # LLVM-NEXT: SHF_ALLOC (0x2) |
| # LLVM-NEXT: SHF_COMPRESSED (0x800) |
| # LLVM-NEXT: SHF_EXCLUDE (0x80000000) |
| # LLVM-NEXT: SHF_EXECINSTR (0x4) |
| # LLVM-NEXT: SHF_GNU_RETAIN (0x200000) |
| # LLVM-NEXT: SHF_GROUP (0x200) |
| # LLVM-NEXT: SHF_INFO_LINK (0x40) |
| # LLVM-NEXT: SHF_LINK_ORDER (0x80) |
| # LLVM-NEXT: SHF_MERGE (0x10) |
| # LLVM-NEXT: SHF_OS_NONCONFORMING (0x100) |
| # LLVM-NEXT: SHF_STRINGS (0x20) |
| # LLVM-NEXT: SHF_TLS (0x400) |
| # LLVM-NEXT: SHF_WRITE (0x1) |
| # LLVM-NEXT: ] |
| |
| # LLVM: Name: noflags |
| # LLVM-NEXT: Type: SHT_PROGBITS |
| # LLVM-NEXT: Flags [ (0x0) |
| # LLVM-NEXT: ] |
| |
| # LLVM: Name: write |
| # LLVM-NEXT: Type: SHT_PROGBITS |
| # LLVM-NEXT: Flags [ (0x1) |
| # LLVM-NEXT: SHF_WRITE (0x1) |
| # LLVM-NEXT: ] |
| |
| # LLVM: Name: alloc |
| # LLVM-NEXT: Type: SHT_PROGBITS |
| # LLVM-NEXT: Flags [ (0x2) |
| # LLVM-NEXT: SHF_ALLOC (0x2) |
| # LLVM-NEXT: ] |
| |
| # LLVM: Name: exec |
| # LLVM-NEXT: Type: SHT_PROGBITS |
| # LLVM-NEXT: Flags [ (0x4) |
| # LLVM-NEXT: SHF_EXECINSTR (0x4) |
| # LLVM-NEXT: ] |
| |
| # LLVM: Name: merge |
| # LLVM-NEXT: Type: SHT_PROGBITS |
| # LLVM-NEXT: Flags [ (0x10) |
| # LLVM-NEXT: SHF_MERGE (0x10) |
| # LLVM-NEXT: ] |
| |
| # LLVM: Name: strings |
| # LLVM-NEXT: Type: SHT_PROGBITS |
| # LLVM-NEXT: Flags [ (0x20) |
| # LLVM-NEXT: SHF_STRINGS (0x20) |
| # LLVM-NEXT: ] |
| |
| # LLVM: Name: infolink |
| # LLVM-NEXT: Type: SHT_PROGBITS |
| # LLVM-NEXT: Flags [ (0x40) |
| # LLVM-NEXT: SHF_INFO_LINK (0x40) |
| # LLVM-NEXT: ] |
| |
| # LLVM: Name: linkorder |
| # LLVM-NEXT: Type: SHT_PROGBITS |
| # LLVM-NEXT: Flags [ (0x80) |
| # LLVM-NEXT: SHF_LINK_ORDER (0x80) |
| # LLVM-NEXT: ] |
| |
| # LLVM: Name: nonconforming |
| # LLVM-NEXT: Type: SHT_PROGBITS |
| # LLVM-NEXT: Flags [ (0x100) |
| # LLVM-NEXT: SHF_OS_NONCONFORMING (0x100) |
| # LLVM-NEXT: ] |
| |
| # LLVM: Name: group |
| # LLVM-NEXT: Type: SHT_PROGBITS |
| # LLVM-NEXT: Flags [ (0x200) |
| # LLVM-NEXT: SHF_GROUP (0x200) |
| # LLVM-NEXT: ] |
| |
| # LLVM: Name: tls |
| # LLVM-NEXT: Type: SHT_PROGBITS |
| # LLVM-NEXT: Flags [ (0x400) |
| # LLVM-NEXT: SHF_TLS (0x400) |
| # LLVM-NEXT: ] |
| |
| # LLVM: Name: compressed |
| # LLVM-NEXT: Type: SHT_PROGBITS |
| # LLVM-NEXT: Flags [ (0x800) |
| # LLVM-NEXT: SHF_COMPRESSED (0x800) |
| # LLVM-NEXT: ] |
| |
| ## SHF_GNU_RETAIN is defined in the OS-specific range, but we treat it generic |
| ## and allow it to be used with OSABI values other than GNU and FREEBSD. |
| # LLVM: Name: retain |
| # LLVM-NEXT: Type: SHT_PROGBITS |
| # LLVM-NEXT: Flags [ (0x200000) |
| # LLVM-NEXT: SHF_GNU_RETAIN (0x200000) |
| # LLVM-NEXT: ] |
| |
| # LLVM: Name: exclude |
| # LLVM-NEXT: Type: SHT_PROGBITS |
| # LLVM-NEXT: Flags [ (0x80000000) |
| # LLVM-NEXT: SHF_EXCLUDE (0x80000000) |
| # LLVM-NEXT: ] |
| |
| # LLVM: Name: unknown |
| # LLVM-NEXT: Type: SHT_PROGBITS |
| # LLVM-NEXT: Flags [ (0xF0000) |
| # LLVM-NEXT: ] |
| |
| # GNU: [Nr] Name Type Address Off Size ES Flg Lk Inf Al |
| # GNU: [ 1] allflags PROGBITS 0000000000000000 000040 000000 00 WAXMSILOGTCRE 0 0 0 |
| # GNU: [ 2] noflags PROGBITS 0000000000000000 000040 000000 00 0 0 0 |
| # GNU: [ 3] write PROGBITS 0000000000000000 000040 000000 00 W 0 0 0 |
| # GNU: [ 4] alloc PROGBITS 0000000000000000 000040 000000 00 A 0 0 0 |
| # GNU: [ 5] exec PROGBITS 0000000000000000 000040 000000 00 X 0 0 0 |
| # GNU: [ 6] merge PROGBITS 0000000000000000 000040 000000 00 M 0 0 0 |
| # GNU: [ 7] strings PROGBITS 0000000000000000 000040 000000 00 S 0 0 0 |
| # GNU: [ 8] infolink PROGBITS 0000000000000000 000040 000000 00 I 0 0 0 |
| # GNU: [ 9] linkorder PROGBITS 0000000000000000 000040 000000 00 L 0 0 0 |
| # GNU: [10] nonconforming PROGBITS 0000000000000000 000040 000000 00 O 0 0 0 |
| # GNU: [11] group PROGBITS 0000000000000000 000040 000000 00 G 0 0 0 |
| # GNU: [12] tls PROGBITS 0000000000000000 000040 000000 00 T 0 0 0 |
| # GNU: [13] compressed PROGBITS 0000000000000000 000040 000000 00 C 0 0 0 |
| # GNU: [14] retain PROGBITS 0000000000000000 000040 000000 00 R 0 0 0 |
| # GNU: [15] exclude PROGBITS 0000000000000000 000040 000000 00 E 0 0 0 |
| # GNU: [16] unknown PROGBITS 0000000000000000 000040 000000 00 x 0 0 0 |
| |
| --- !ELF |
| FileHeader: |
| Class: ELFCLASS64 |
| Data: ELFDATA2LSB |
| Type: ET_REL |
| Flags: [] |
| Sections: |
| - Name: allflags |
| Type: SHT_PROGBITS |
| Flags: [ SHF_WRITE, SHF_ALLOC, SHF_EXECINSTR, SHF_MERGE, |
| SHF_STRINGS, SHF_INFO_LINK, SHF_LINK_ORDER, SHF_OS_NONCONFORMING, |
| SHF_GROUP, SHF_TLS, SHF_COMPRESSED, SHF_GNU_RETAIN, SHF_EXCLUDE ] |
| - Name: noflags |
| Type: SHT_PROGBITS |
| Flags: [ ] |
| - Name: write |
| Type: SHT_PROGBITS |
| Flags: [ SHF_WRITE ] |
| - Name: alloc |
| Type: SHT_PROGBITS |
| Flags: [ SHF_ALLOC ] |
| - Name: exec |
| Type: SHT_PROGBITS |
| Flags: [ SHF_EXECINSTR ] |
| - Name: merge |
| Type: SHT_PROGBITS |
| Flags: [ SHF_MERGE ] |
| - Name: strings |
| Type: SHT_PROGBITS |
| Flags: [ SHF_STRINGS ] |
| - Name: infolink |
| Type: SHT_PROGBITS |
| Flags: [ SHF_INFO_LINK ] |
| - Name: linkorder |
| Type: SHT_PROGBITS |
| Flags: [ SHF_LINK_ORDER ] |
| - Name: nonconforming |
| Type: SHT_PROGBITS |
| Flags: [ SHF_OS_NONCONFORMING ] |
| - Name: group |
| Type: SHT_PROGBITS |
| Flags: [ SHF_GROUP ] |
| - Name: tls |
| Type: SHT_PROGBITS |
| Flags: [ SHF_TLS ] |
| - Name: compressed |
| Type: SHT_PROGBITS |
| Flags: [ SHF_COMPRESSED ] |
| - Name: retain |
| Type: SHT_PROGBITS |
| Flags: [ SHF_GNU_RETAIN ] |
| - Name: exclude |
| Type: SHT_PROGBITS |
| Flags: [ SHF_EXCLUDE ] |
| - Name: unknown |
| Type: SHT_PROGBITS |
| ShFlags: 0x000f0000 |