
Summary: When using llvm-objcopy -O binary and the resulting file will be empty (e.g. removing the only section that would be written, or using --only-keep with a section that doesn't exist/isn't SHF_ALLOC), we crash because FileOutputBuffer expects Size > 0. Add a regression test, and change Buffer to open/truncate the output file in this case. Reviewers: alexshap, jhenderson, jakehehrlich, espindola Reviewed By: alexshap, jhenderson Subscribers: jfb, llvm-commits, emaste, arichardson Differential Revision: https://reviews.llvm.org/D56806 llvm-svn: 352371
28 lines
792 B
Plaintext
28 lines
792 B
Plaintext
# RUN: yaml2obj %s -o %t.o
|
|
|
|
# Writing an empty output to a non-existent file will still create it.
|
|
# RUN: rm -f %t-new.txt
|
|
# RUN: llvm-objcopy -R .text -O binary %t.o %t-new.txt
|
|
# RUN: wc -c %t-new.txt | FileCheck %s
|
|
|
|
# Writing an empty output to an existing file will truncate it.
|
|
# RUN: echo abcd > %t-existing.txt
|
|
# RUN: llvm-objcopy -R .text -O binary %t.o %t-existing.txt
|
|
# RUN: wc -c %t-existing.txt | FileCheck %s
|
|
|
|
# In both cases, the file should be empty.
|
|
# CHECK: 0
|
|
|
|
!ELF
|
|
FileHeader:
|
|
Class: ELFCLASS64
|
|
Data: ELFDATA2LSB
|
|
Type: ET_EXEC
|
|
Machine: EM_X86_64
|
|
Sections:
|
|
- Name: .text
|
|
Type: SHT_PROGBITS
|
|
Flags: [ SHF_ALLOC, SHF_EXECINSTR ]
|
|
Content: "c3c3c3c3"
|
|
Size: 0x1000
|