| # RUN: yaml2obj %s -o %t |
| |
| # RUN: llvm-objcopy --set-section-type=.foo=14 --set-section-type .bar=0xf %t %t.1 |
| # RUN: llvm-readobj --sections %t.1 | FileCheck %s |
| |
| # RUN: llvm-objcopy --set-section-type=.foo=13 --set-section-type=.foo=14 --set-section-type .bar=0xf %t %t.1 |
| # RUN: llvm-readobj --sections %t.1 | FileCheck %s |
| |
| # CHECK: Name: .foo |
| # CHECK-NEXT: Type: SHT_INIT_ARRAY (0xE) |
| # CHECK-NEXT: Flags [ |
| # CHECK-NEXT: SHF_ALLOC |
| # CHECK-NEXT: ] |
| |
| # CHECK: Name: .bar |
| # CHECK-NEXT: Type: SHT_FINI_ARRAY (0xF) |
| # CHECK-NEXT: Flags [ |
| # CHECK-NEXT: ] |
| |
| ## --set-section-flags does not specify "readonly", so the output gets SHF_WRITE. |
| ## "contents" changes SHT_NOBITS to SHT_PROGBITS, but this is overridden by --set-section-type. |
| ## sh_type is a uint32_t. There is no diagnostic for an overflow value. |
| # RUN: llvm-objcopy --set-section-flags=.foo=alloc,contents --set-section-type=.foo=0x10000000a %t %t.2 2>&1 | count 0 |
| # RUN: llvm-readobj --sections %t.2 | FileCheck %s --check-prefix=CHECK2 |
| |
| # CHECK2: Name: .foo |
| # CHECK2-NEXT: Type: SHT_SHLIB |
| # CHECK2-NEXT: Flags [ |
| # CHECK2-NEXT: SHF_ALLOC |
| # CHECK2-NEXT: SHF_WRITE |
| # CHECK2-NEXT: ] |
| |
| # RUN: not llvm-objcopy --set-section-type=.foo %t /dev/null 2>&1 | FileCheck %s --check-prefix=BAD-FORMAT |
| # BAD-FORMAT: bad format for --set-section-type: missing '=' |
| |
| # RUN: not llvm-objcopy --set-section-type==4 %t /dev/null 2>&1 | FileCheck %s --check-prefix=MISSING-SECTION |
| # MISSING-SECTION: error: bad format for --set-section-type: missing section name |
| |
| # RUN: not llvm-objcopy --set-section-type=.foo=aaa %t /dev/null 2>&1 | FileCheck %s --check-prefix=INVALID-TYPE |
| # INVALID-TYPE: error: invalid value for --set-section-type: 'aaa' |
| |
| !ELF |
| FileHeader: |
| Class: ELFCLASS64 |
| Data: ELFDATA2LSB |
| Type: ET_REL |
| Machine: EM_X86_64 |
| Sections: |
| - Name: .foo |
| Type: SHT_NOBITS |
| Flags: [ SHF_ALLOC ] |
| - Name: .bar |
| Type: SHT_PROGBITS |
| Flags: [ ] |