|  | ## Check how we dump arch specific ELF section flags. | 
|  |  | 
|  | # RUN: yaml2obj --docnum 1 %s -o %t-hex.o | 
|  | # RUN: llvm-readobj -S %t-hex.o | FileCheck --check-prefix=HEX-LLVM %s | 
|  | # RUN: llvm-readelf -S %t-hex.o | FileCheck --check-prefix=HEX-GNU %s | 
|  |  | 
|  | # HEX-LLVM:      Flags [ (0x10000000) | 
|  | # HEX-LLVM-NEXT:   SHF_HEX_GPREL (0x10000000) | 
|  | # HEX-LLVM-NEXT: ] | 
|  |  | 
|  | # HEX-GNU: [Nr] Name Type     Address  Off    Size   ES Flg Lk Inf Al | 
|  | # HEX-GNU: [ 1] .hex PROGBITS 00000000 000034 000000 00   p  0   0  0 | 
|  |  | 
|  | --- !ELF | 
|  | FileHeader: | 
|  | Class:   ELFCLASS32 | 
|  | Data:    ELFDATA2LSB | 
|  | Type:    ET_REL | 
|  | Machine: EM_HEXAGON | 
|  | Sections: | 
|  | - Name:  .hex | 
|  | Type:  SHT_PROGBITS | 
|  | Flags: [ SHF_HEX_GPREL ] | 
|  |  | 
|  | # RUN: yaml2obj --docnum 2 %s -o %t-mips.o | 
|  | # RUN: llvm-readobj -S %t-mips.o | FileCheck --check-prefix=MIPS-LLVM %s | 
|  | # RUN: llvm-readelf -S %t-mips.o | FileCheck --check-prefix=MIPS-GNU %s | 
|  |  | 
|  | # MIPS-GNU: [Nr] Name  Type     Address  Off    Size   ES Flg Lk Inf Al | 
|  | # MIPS-GNU: [ 1] .mips PROGBITS 00000000 000034 000000 00  op  0   0  0 | 
|  |  | 
|  | # MIPS-LLVM:      Flags [ (0xFF000000) | 
|  | # MIPS-LLVM-NEXT:   SHF_EXCLUDE (0x80000000) | 
|  | # MIPS-LLVM-NEXT:   SHF_MIPS_ADDR (0x40000000) | 
|  | # MIPS-LLVM-NEXT:   SHF_MIPS_GPREL (0x10000000) | 
|  | # MIPS-LLVM-NEXT:   SHF_MIPS_LOCAL (0x4000000) | 
|  | # MIPS-LLVM-NEXT:   SHF_MIPS_MERGE (0x20000000) | 
|  | # MIPS-LLVM-NEXT:   SHF_MIPS_NAMES (0x2000000) | 
|  | # MIPS-LLVM-NEXT:   SHF_MIPS_NODUPES (0x1000000) | 
|  | # MIPS-LLVM-NEXT:   SHF_MIPS_NOSTRIP (0x8000000) | 
|  | # MIPS-LLVM-NEXT:   SHF_MIPS_STRING (0x80000000) | 
|  | # MIPS-LLVM-NEXT: ] | 
|  |  | 
|  | --- !ELF | 
|  | FileHeader: | 
|  | Class:   ELFCLASS32 | 
|  | Data:    ELFDATA2LSB | 
|  | Type:    ET_REL | 
|  | Machine: EM_MIPS | 
|  | Sections: | 
|  | - Name:  .mips | 
|  | Type:  SHT_PROGBITS | 
|  | Flags: [ SHF_MIPS_NODUPES, SHF_MIPS_NAMES, SHF_MIPS_LOCAL, SHF_MIPS_NOSTRIP, | 
|  | SHF_MIPS_GPREL, SHF_MIPS_MERGE, SHF_MIPS_ADDR, SHF_MIPS_STRING ] | 
|  |  | 
|  | ## Test what we print when a MIPS object has the SHF_MIPS_STRING flag. | 
|  | ## SHF_MIPS_STRING has a value of 0x80000000, which matches the value of SHF_EXCLUDE. | 
|  |  | 
|  | # RUN: yaml2obj --docnum 3 %s -o %t-mips-exclude.o | 
|  | # RUN: llvm-readobj -S %t-mips-exclude.o | FileCheck --check-prefix=MIPS-EXCLUDE-LLVM %s | 
|  | # RUN: llvm-readelf -S %t-mips-exclude.o | FileCheck --check-prefix=MIPS-EXCLUDE-GNU %s | 
|  |  | 
|  | # MIPS-EXCLUDE-LLVM:      Name: .mips | 
|  | # MIPS-EXCLUDE-LLVM-NEXT: Type: SHT_PROGBITS | 
|  | # MIPS-EXCLUDE-LLVM-NEXT: Flags [ (0x80000000) | 
|  | # MIPS-EXCLUDE-LLVM-NEXT:  SHF_EXCLUDE (0x80000000) | 
|  | # MIPS-EXCLUDE-LLVM-NEXT:  SHF_MIPS_STRING (0x80000000) | 
|  | # MIPS-EXCLUDE-LLVM-NEXT: ] | 
|  |  | 
|  | # MIPS-EXCLUDE-GNU: [Nr] Name  Type     Address  Off    Size   ES Flg Lk Inf Al | 
|  | # MIPS-EXCLUDE-GNU: [ 1] .mips PROGBITS 00000000 000034 000000 00   E  0   0  0 | 
|  |  | 
|  | --- !ELF | 
|  | FileHeader: | 
|  | Class:   ELFCLASS32 | 
|  | Data:    ELFDATA2LSB | 
|  | Type:    ET_REL | 
|  | Machine: EM_MIPS | 
|  | Sections: | 
|  | - Name:  .mips | 
|  | Type:  SHT_PROGBITS | 
|  | Flags: [ SHF_MIPS_STRING ] | 
|  |  | 
|  | # RUN: yaml2obj --docnum 4 %s -o %t-x86_64.o | 
|  | # RUN: llvm-readobj -S %t-x86_64.o | FileCheck --check-prefix=X86_64-LLVM %s | 
|  | # RUN: llvm-readelf -S %t-x86_64.o | FileCheck --check-prefix=X86_64-GNU %s | 
|  |  | 
|  | # X86_64-LLVM:      Name: .x86_64 | 
|  | # X86_64-LLVM-NEXT: Type: SHT_PROGBITS | 
|  | # X86_64-LLVM-NEXT: Flags [ (0x10000000) | 
|  | # X86_64-LLVM-NEXT:   SHF_X86_64_LARGE (0x10000000) | 
|  | # X86_64-LLVM-NEXT: ] | 
|  |  | 
|  | # X86_64-LLVM:      Name: .with.exclude | 
|  | # X86_64-LLVM-NEXT: Type: SHT_PROGBITS | 
|  | # X86_64-LLVM-NEXT: Flags [ (0x90000000) | 
|  | # X86_64-LLVM-NEXT:   SHF_EXCLUDE (0x80000000) | 
|  | # X86_64-LLVM-NEXT:   SHF_X86_64_LARGE (0x10000000) | 
|  | # X86_64-LLVM-NEXT: ] | 
|  |  | 
|  | ## GNU prints 'l' before 'E', despite otherwise printing upper-case letters first. | 
|  | # X86_64-GNU: [Nr] Name          Type     Address          Off    Size   ES Flg Lk Inf Al | 
|  | # X86_64-GNU: [ 1] .x86_64       PROGBITS 0000000000000000 000040 000000 00   l 0   0  0 | 
|  | # X86_64-GNU: [ 2] .with.exclude PROGBITS 0000000000000000 000040 000000 00  lE 0   0  0 | 
|  |  | 
|  | --- !ELF | 
|  | FileHeader: | 
|  | Class:   ELFCLASS64 | 
|  | Data:    ELFDATA2LSB | 
|  | Type:    ET_REL | 
|  | Machine: EM_X86_64 | 
|  | Sections: | 
|  | - Name:  .x86_64 | 
|  | Type:  SHT_PROGBITS | 
|  | Flags: [ SHF_X86_64_LARGE ] | 
|  | - Name:  .with.exclude | 
|  | Type:  SHT_PROGBITS | 
|  | Flags: [ SHF_X86_64_LARGE, SHF_EXCLUDE ] | 
|  |  | 
|  | # RUN: yaml2obj --docnum 5 -DARCH=ARM %s -o %t-arm.o | 
|  | # RUN: llvm-readobj -S %t-arm.o | FileCheck --check-prefix=ARM-LLVM %s | 
|  | # RUN: llvm-readelf -S %t-arm.o | FileCheck --check-prefix=ARM-GNU %s | 
|  |  | 
|  | # ARM-LLVM:      Flags [ (0x20000000) | 
|  | # ARM-LLVM-NEXT:   SHF_ARM_PURECODE (0x20000000) | 
|  | # ARM-LLVM-NEXT: ] | 
|  |  | 
|  | # ARM-GNU: [Nr] Name Type     Address          Off    Size   ES Flg Lk Inf Al | 
|  | # ARM-GNU: [ 1] foo  PROGBITS 0000000000000000 000040 000000 00   y 0   0  0 | 
|  |  | 
|  | # RUN: yaml2obj --docnum 5 -DARCH=AARCH64 %s -o %t-aarch64.o | 
|  | # RUN: llvm-readobj -S %t-aarch64.o | FileCheck --check-prefix=AARCH64-LLVM %s | 
|  | # RUN: llvm-readelf -S %t-aarch64.o | FileCheck --check-prefix=AARCH64-GNU %s | 
|  |  | 
|  | # AARCH64-LLVM:      Flags [ (0x20000000) | 
|  | # AARCH64-LLVM-NEXT:   SHF_AARCH64_PURECODE (0x20000000) | 
|  | # AARCH64-LLVM-NEXT: ] | 
|  |  | 
|  | # AARCH64-GNU: [Nr] Name Type     Address          Off    Size   ES Flg Lk Inf Al | 
|  | # AARCH64-GNU: [ 1] foo  PROGBITS 0000000000000000 000040 000000 00   y 0   0  0 | 
|  |  | 
|  | --- !ELF | 
|  | FileHeader: | 
|  | Class:   ELFCLASS64 | 
|  | Data:    ELFDATA2LSB | 
|  | Type:    ET_REL | 
|  | Machine: EM_[[ARCH]] | 
|  | Sections: | 
|  | - Name:  foo | 
|  | Type:  SHT_PROGBITS | 
|  | Flags: [ SHF_[[ARCH]]_PURECODE ] |