1# Test that cpu/processor-specific SHF_* flags are preserved. 2 3# ===== x86_64 ===== 4 5# RUN: yaml2obj --docnum 1 %s > %t-x86_64.o 6# RUN: llvm-objcopy --rename-section=.foo=.bar,alloc %t-x86_64.o 7# RUN: llvm-readobj --sections %t-x86_64.o | FileCheck %s --check-prefix=X86_64 8 9--- !ELF 10FileHeader: 11 Class: ELFCLASS64 12 Data: ELFDATA2LSB 13 Type: ET_REL 14 Machine: EM_X86_64 15Sections: 16 - Name: .foo 17 Type: SHT_PROGBITS 18 Flags: [ SHF_X86_64_LARGE ] 19 20# X86_64: Name: .bar 21# X86_64-NEXT: Type: SHT_PROGBITS 22# X86_64-NEXT: Flags [ 23# X86_64-NEXT: SHF_ALLOC (0x2) 24# X86_64-NEXT: SHF_WRITE (0x1) 25# X86_64-NEXT: SHF_X86_64_LARGE (0x10000000) 26# X86_64-NEXT: ] 27 28# ===== hex ===== 29 30# RUN: yaml2obj --docnum 2 %s > %t-hex.o 31# RUN: llvm-objcopy --rename-section=.foo=.bar,alloc %t-hex.o 32# RUN: llvm-readobj --sections %t-hex.o | FileCheck %s --check-prefix=HEX 33 34--- !ELF 35FileHeader: 36 Class: ELFCLASS64 37 Data: ELFDATA2LSB 38 Type: ET_REL 39 Machine: EM_HEXAGON 40Sections: 41 - Name: .foo 42 Type: SHT_PROGBITS 43 Flags: [ SHF_HEX_GPREL ] 44 45# HEX: Name: .bar 46# HEX-NEXT: Type: SHT_PROGBITS 47# HEX-NEXT: Flags [ 48# HEX-NEXT: SHF_ALLOC (0x2) 49# HEX-NEXT: SHF_HEX_GPREL (0x10000000) 50# HEX-NEXT: SHF_WRITE (0x1) 51# HEX-NEXT: ] 52 53# ===== mips ===== 54 55# RUN: yaml2obj --docnum 3 %s > %t-mips.o 56# RUN: llvm-objcopy --rename-section=.foo=.bar,alloc %t-mips.o 57# RUN: llvm-readobj --sections %t-mips.o | FileCheck %s --check-prefix=MIPS 58 59--- !ELF 60FileHeader: 61 Class: ELFCLASS64 62 Data: ELFDATA2LSB 63 Type: ET_REL 64 Machine: EM_MIPS 65Sections: 66 - Name: .foo 67 Type: SHT_PROGBITS 68 Flags: [ SHF_MIPS_NODUPES, SHF_MIPS_NAMES, SHF_MIPS_LOCAL, 69 SHF_MIPS_NOSTRIP, SHF_MIPS_GPREL, SHF_MIPS_MERGE, 70 SHF_MIPS_ADDR, SHF_MIPS_STRING ] 71 72# Note: llvm-readobj prints SHF_EXCLUDE/SHF_MASKPROC since specifying all 73# SHF_MIPS_* flags covers the same bitset. 74 75# MIPS: Name: .bar 76# MIPS-NEXT: Type: SHT_PROGBITS 77# MIPS-NEXT: Flags [ 78# MIPS-NEXT: SHF_ALLOC (0x2) 79# MIPS-NEXT: SHF_EXCLUDE (0x80000000) 80# MIPS-NEXT: SHF_MIPS_ADDR (0x40000000) 81# MIPS-NEXT: SHF_MIPS_GPREL (0x10000000) 82# MIPS-NEXT: SHF_MIPS_LOCAL (0x4000000) 83# MIPS-NEXT: SHF_MIPS_MERGE (0x20000000) 84# MIPS-NEXT: SHF_MIPS_NAMES (0x2000000) 85# MIPS-NEXT: SHF_MIPS_NODUPES (0x1000000) 86# MIPS-NEXT: SHF_MIPS_NOSTRIP (0x8000000) 87# MIPS-NEXT: SHF_MIPS_STRING (0x80000000) 88# MIPS-NEXT: SHF_WRITE (0x1) 89# MIPS-NEXT: ] 90 91# ===== arm ===== 92 93# RUN: yaml2obj --docnum 4 %s > %t-arm.o 94# RUN: llvm-objcopy --rename-section=.foo=.bar,alloc %t-arm.o 95# RUN: llvm-readobj --sections %t-arm.o | FileCheck %s --check-prefix=ARM 96 97--- !ELF 98FileHeader: 99 Class: ELFCLASS64 100 Data: ELFDATA2LSB 101 Type: ET_REL 102 Machine: EM_ARM 103Sections: 104 - Name: .foo 105 Type: SHT_PROGBITS 106 Flags: [ SHF_ARM_PURECODE ] 107 108# ARM: Name: .bar 109# ARM-NEXT: Type: SHT_PROGBITS 110# ARM-NEXT: Flags [ 111# ARM-NEXT: SHF_ALLOC (0x2) 112# ARM-NEXT: SHF_ARM_PURECODE (0x20000000) 113# ARM-NEXT: SHF_WRITE (0x1) 114# ARM-NEXT: ] 115