llvm-project/llvm/test/tools/llvm-objcopy/ELF/binary-output-empty.test
Jordan Rupprecht b2702d6a45 [llvm-objcopy] Fix crash when writing empty binary output
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
2019-01-28 15:02:40 +00:00

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