[lld][mach-o] Avoid segfaulting when handling an empty section list.
authorMatt Davis <nullptr@fb.com>
Thu, 26 Sep 2019 17:03:20 +0000 (17:03 +0000)
committerMatt Davis <nullptr@fb.com>
Thu, 26 Sep 2019 17:03:20 +0000 (17:03 +0000)
commit4d17cdc704db1da4da9f76adb301db88d8e7bdf4
tree4bef18d1086e84acd5d3a6b689ddde44fe7fdf6b
parent01ba7d5efe18b9dd14a5c2bb1f692702513d66f7
[lld][mach-o] Avoid segfaulting when handling an empty section list.

Summary:
The following patch avoids segfaulting if the section list is empty when writing a mach-o MH_OBJECT.  I ran into this case from a more complicated example trying to dead_strip while using '-r' in lld.

I'm not sure if having empty sections is a legal mach-o, but it does seem that other llvm-binutils tools can ingest such a boring object with out issue.  Would it be better to emit an error, emit a warning, or do nothing?  It seems that adding a warning diagnostic might be helpful to users, as I did not expect to have a section-less object when the linker was done.

Reviewers: kledzik, ruiu

Subscribers: llvm-commits, jrm

Tags: #lld, #llvm

Differential Revision: https://reviews.llvm.org/D67735

llvm-svn: 372995
lld/lib/ReaderWriter/MachO/MachONormalizedFileBinaryWriter.cpp
lld/test/mach-o/empty-sections.yaml [new file with mode: 0644]