## 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