| # RUN: yaml2obj %s > %t |
| # RUN: llvm-objcopy -O binary -j .test2 %t %t.sec |
| # RUN: llvm-objcopy -R .test2 %t %t2 |
| # RUN: llvm-objcopy --add-section=.test2=%t.sec %t2 %t3 |
| # RUN: llvm-readobj --file-headers --sections --section-data %t3 | FileCheck %s |
| |
| !ELF |
| FileHeader: |
| Class: ELFCLASS64 |
| Data: ELFDATA2LSB |
| Type: ET_REL |
| Machine: EM_X86_64 |
| Sections: |
| - Name: .test1 |
| Type: SHT_PROGBITS |
| Flags: [ SHF_ALLOC ] |
| Content: "c3c3c3c3" |
| - Name: .test2 |
| Type: SHT_PROGBITS |
| Flags: [ SHF_ALLOC ] |
| Content: "DEADBEEF" |
| - Name: .test3 |
| Type: SHT_PROGBITS |
| Flags: [ SHF_ALLOC ] |
| Content: "32323232" |
| |
| # CHECK: SectionHeaderCount: 6 |
| |
| # CHECK: Name: .test1 |
| # CHECK: Name: .test3 |
| # CHECK: Name: .strtab |
| # CHECK: Name: .shstrtab |
| # CHECK: Name: .test2 |
| # CHECK: SectionData ( |
| # CHECK-NEXT: 0000: DEADBEEF |
| # CHECK-NEXT: ) |
| |
| ## Test that llvm-objcopy produces an error if the file with section contents |
| ## to be added does not exist. |
| # RUN: not llvm-objcopy --add-section=.section.name=%t.missing %t %t.out 2>&1 | FileCheck -DFILE1=%t -DFILE2=%t.missing %s --check-prefixes=ERR1 |
| |
| # ERR1: error: '[[FILE1]]': '[[FILE2]]': {{[Nn]}}o such file or directory |
| |
| ## Negative test for invalid --add-sections argument - missing '='. |
| # RUN: not llvm-objcopy --add-section=.section.name %t %t.out 2>&1 | FileCheck %s --check-prefixes=ERR2 |
| |
| # ERR2: error: bad format for --add-section: missing '=' |
| |
| ## Negative test for invalid --add-sections argument - missing file name. |
| # RUN: not llvm-objcopy --add-section=.section.name= %t %t.out 2>&1 | FileCheck %s --check-prefixes=ERR3 |
| |
| # ERR3: error: bad format for --add-section: missing file name |