155c81d42SFangrui Song# RUN: yaml2obj %s -o %t 26e4dc6f2SAlexander Shaposhnikov# RUN: llvm-objcopy -O binary -j .test2 %t %t.sec 36e4dc6f2SAlexander Shaposhnikov# RUN: llvm-objcopy -R .test2 %t %t2 4298ea3f5SJordan Rupprecht# RUN: llvm-objcopy --add-section=.test2=%t.sec %t2 %t3 5298ea3f5SJordan Rupprecht# RUN: llvm-readobj --file-headers --sections --section-data %t3 | FileCheck %s 66e4dc6f2SAlexander Shaposhnikov 76e4dc6f2SAlexander Shaposhnikov!ELF 86e4dc6f2SAlexander ShaposhnikovFileHeader: 96e4dc6f2SAlexander Shaposhnikov Class: ELFCLASS64 106e4dc6f2SAlexander Shaposhnikov Data: ELFDATA2LSB 116e4dc6f2SAlexander Shaposhnikov Type: ET_REL 126e4dc6f2SAlexander Shaposhnikov Machine: EM_X86_64 136e4dc6f2SAlexander ShaposhnikovSections: 146e4dc6f2SAlexander Shaposhnikov - Name: .test1 156e4dc6f2SAlexander Shaposhnikov Type: SHT_PROGBITS 166e4dc6f2SAlexander Shaposhnikov Flags: [ SHF_ALLOC ] 176e4dc6f2SAlexander Shaposhnikov Content: "c3c3c3c3" 186e4dc6f2SAlexander Shaposhnikov - Name: .test2 196e4dc6f2SAlexander Shaposhnikov Type: SHT_PROGBITS 206e4dc6f2SAlexander Shaposhnikov Flags: [ SHF_ALLOC ] 216e4dc6f2SAlexander Shaposhnikov Content: "DEADBEEF" 226e4dc6f2SAlexander Shaposhnikov - Name: .test3 236e4dc6f2SAlexander Shaposhnikov Type: SHT_PROGBITS 246e4dc6f2SAlexander Shaposhnikov Flags: [ SHF_ALLOC ] 256e4dc6f2SAlexander Shaposhnikov Content: "32323232" 266e4dc6f2SAlexander Shaposhnikov 272779987dSGeorge Rimar# CHECK: SectionHeaderCount: 6 286e4dc6f2SAlexander Shaposhnikov 296e4dc6f2SAlexander Shaposhnikov# CHECK: Name: .test1 306e4dc6f2SAlexander Shaposhnikov# CHECK: Name: .test3 316e4dc6f2SAlexander Shaposhnikov# CHECK: Name: .strtab 326e4dc6f2SAlexander Shaposhnikov# CHECK: Name: .shstrtab 331562e455SJames Henderson# CHECK: Offset: 0x[[#%x,OFFSET:]] 341562e455SJames Henderson# CHECK: Size: [[#%u,SIZE:]] 356e4dc6f2SAlexander Shaposhnikov# CHECK: Name: .test2 361562e455SJames Henderson# CHECK-NEXT: Type: SHT_PROGBITS 371562e455SJames Henderson# CHECK-NEXT: Flags [ (0x0) 381562e455SJames Henderson# CHECK-NEXT: ] 391562e455SJames Henderson# CHECK-NEXT: Address: 0x0 401562e455SJames Henderson# CHECK-NEXT: Offset: 0x[[#%x,OFFSET+SIZE]] 411562e455SJames Henderson# CHECK-NEXT: Size: 4 421562e455SJames Henderson# CHECK-NEXT: Link: 0 431562e455SJames Henderson# CHECK-NEXT: Info: 0 441562e455SJames Henderson# CHECK-NEXT: AddressAlignment: 1 451562e455SJames Henderson# CHECK-NEXT: EntrySize: 0 461562e455SJames Henderson# CHECK-NEXT: SectionData ( 476e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: 0000: DEADBEEF 486e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: ) 49899bdaa8SSergey Dmitriev 50899bdaa8SSergey Dmitriev## Test that llvm-objcopy produces an error if the file with section contents 51899bdaa8SSergey Dmitriev## to be added does not exist. 52*a6f3fedcSAlexey Lapshin# 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 53899bdaa8SSergey Dmitriev 54*a6f3fedcSAlexey Lapshin# ERR1: error: '[[FILE]]': [[MSG]] 55899bdaa8SSergey Dmitriev 56899bdaa8SSergey Dmitriev## Negative test for invalid --add-sections argument - missing '='. 57899bdaa8SSergey Dmitriev# RUN: not llvm-objcopy --add-section=.section.name %t %t.out 2>&1 | FileCheck %s --check-prefixes=ERR2 58899bdaa8SSergey Dmitriev 59899bdaa8SSergey Dmitriev# ERR2: error: bad format for --add-section: missing '=' 60899bdaa8SSergey Dmitriev 61899bdaa8SSergey Dmitriev## Negative test for invalid --add-sections argument - missing file name. 62899bdaa8SSergey Dmitriev# RUN: not llvm-objcopy --add-section=.section.name= %t %t.out 2>&1 | FileCheck %s --check-prefixes=ERR3 63899bdaa8SSergey Dmitriev 64899bdaa8SSergey Dmitriev# ERR3: error: bad format for --add-section: missing file name 65