[lld][RISCV] Use an e_flags of 0 if there are only binary input files.

Summary:
If none of the input files are ELF object files (for example, when
generating an object file from a single binary input file via
"-b binary"), use a fallback value for the ELF header flags instead
of crashing with an assertion failure.

Reviewers: MaskRay, ruiu, espindola

Reviewed By: MaskRay, ruiu

Subscribers: kevans, grimar, emaste, arichardson, asb, rbar, johnrusso, simoncook, sabuasal, niosHD, kito-cheng, shiva0217, zzheng, edward-jones, rogfer01, MartinMosbeck, brucehoult, the_o, rkruppe, PkmX, jocewei, psnobl, benna, Jim, lenary, s.egerton, pzheng, sameer.abuasal, apazos, luismarques, llvm-commits, jrtc27

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D71101
This commit is contained in:
John Baldwin 2019-12-21 17:59:37 +00:00 committed by James Clarke
parent 6945d383b9
commit 189b7393d5
2 changed files with 12 additions and 1 deletions

View File

@ -108,7 +108,10 @@ static uint32_t getEFlags(InputFile *f) {
}
uint32_t RISCV::calcEFlags() const {
assert(!objectFiles.empty());
// If there are only binary input files (from -b binary), use a
// value of 0 for the ELF header flags.
if (objectFiles.empty())
return 0;
uint32_t target = getEFlags(objectFiles.front());

View File

@ -0,0 +1,8 @@
# REQUIRES: riscv
# RUN: echo -n "BLOB" > %t.binary
# RUN: ld.lld -m elf64lriscv -b binary %t.binary -o %t.out
# RUN: llvm-readobj -h %t.out | FileCheck %s
# CHECK: Flags [
# CHECK-NEXT: ]