# 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