| # RUN: yaml2obj %s -o %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: Offset: 0x[[#%x,OFFSET:]] |
| # CHECK: Size: [[#%u,SIZE:]] |
| # CHECK: Name: .test2 |
| # CHECK-NEXT: Type: SHT_PROGBITS |
| # CHECK-NEXT: Flags [ (0x0) |
| # CHECK-NEXT: ] |
| # CHECK-NEXT: Address: 0x0 |
| # CHECK-NEXT: Offset: 0x[[#%x,OFFSET+SIZE]] |
| # CHECK-NEXT: Size: 4 |
| # CHECK-NEXT: Link: 0 |
| # CHECK-NEXT: Info: 0 |
| # CHECK-NEXT: AddressAlignment: 1 |
| # CHECK-NEXT: EntrySize: 0 |
| # CHECK-NEXT: 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 -DFILE=%t.missing -DMSG=%errc_ENOENT %s --check-prefixes=ERR1 |
| |
| # ERR1: error: '[[FILE]]': [[MSG]] |
| |
| ## 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 |