hanchenye-llvm-project/lld/test/mach-o
Matt Davis 4d17cdc704 [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
2019-09-26 17:03:20 +00:00
..
Inputs
PIE.yaml
align_text.yaml
arm-interworking-movw.yaml
arm-interworking.yaml [test] Change llvm-readobj -long-option to --long-option or well-known short options. NFC 2019-05-01 05:49:01 +00:00
arm-shims.yaml [test] Change llvm-readobj -long-option to --long-option or well-known short options. NFC 2019-05-01 05:49:01 +00:00
arm-subsections-via-symbols.yaml
arm64-reloc-negDelta32-fixup.yaml
arm64-relocs-errors-delta64-offset.yaml
arm64-section-order.yaml
bind-opcodes.yaml
cstring-sections.yaml Make YAML quote forward slashes. 2018-10-12 16:31:20 +00:00
data-in-code-load-command.yaml
data-only-dylib.yaml
dead-strip-globals.yaml
debug-syms.yaml
demangle.yaml
dependency_info.yaml [lit, python] Always add quotes around the python path in lit 2018-08-06 22:37:49 +00:00
do-not-emit-unwind-fde-arm64.yaml
dso_handle.yaml
dylib-install-names.yaml
eh-frame-relocs-arm64.yaml
empty-sections.yaml [lld][mach-o] Avoid segfaulting when handling an empty section list. 2019-09-26 17:03:20 +00:00
error-simulator-vs-macosx.yaml
exe-offsets.yaml [test] Change llvm-readobj -long-option to --long-option or well-known short options. NFC 2019-05-01 05:49:01 +00:00
exe-segment-overlap.yaml [test] Change llvm-readobj -long-option to --long-option or well-known short options. NFC 2019-05-01 05:49:01 +00:00
executable-exports.yaml [MachO] Add -macho to llvm-objdump commands 2019-04-16 03:51:53 +00:00
export-trie-order.yaml [MachO] Add -macho to llvm-objdump commands 2019-04-16 03:51:53 +00:00
exported_symbols_list-dylib.yaml
exported_symbols_list-obj.yaml
exported_symbols_list-undef.yaml
fat-archive.yaml
filelist.yaml
flat_namespace_undef_error.yaml
flat_namespace_undef_suppress.yaml
force_load-dylib.yaml
force_load-x86_64.yaml
framework-user-paths.yaml
function-starts-load-command.yaml
gcc_except_tab-got-arm64.yaml
got-order.yaml [MachO] Add -macho to llvm-objdump commands 2019-04-16 03:51:53 +00:00
hello-world-arm64.yaml
hello-world-armv6.yaml
hello-world-armv7.yaml
hello-world-x86.yaml
hello-world-x86_64.yaml
image-base.yaml [test] Change llvm-readobj -long-option to --long-option or well-known short options. NFC 2019-05-01 05:49:01 +00:00
infer-arch.yaml
interposing-section.yaml
keep_private_externs.yaml
lazy-bind-x86_64.yaml [MachO] Add -macho to llvm-objdump commands 2019-04-16 03:51:53 +00:00
lc_segment_filesize.yaml
lib-search-paths.yaml
library-order.yaml
library-rescan.yaml
libresolve-bizarre-root-override.yaml
libresolve-multiple-syslibroots.yaml
libresolve-one-syslibroot.yaml
libresolve-simple.yaml
libresolve-user-paths.yaml
libresolve-z.yaml
linker-as-ld.yaml
lit.local.cfg
load-commands-size.yaml lld: Fix initial Mach-O load commands size calculation omitting LC_FUNCTION_STARTS 2019-04-17 01:47:16 +00:00
mach_header-cpusubtype.yaml
mh_bundle_header.yaml
mh_dylib_header.yaml
objc-category-list-atom.yaml
objc-image-info-host-vs-simulator.yaml
objc-image-info-invalid-size.yaml
objc-image-info-invalid-version.yaml
objc-image-info-mismatched-swift-version.yaml
objc-image-info-pass-output.yaml
objc-image-info-simulator-vs-host.yaml
objc-image-info-unsupported-gc.yaml
objc_export_list.yaml
order_file-basic.yaml
parse-aliases.yaml
parse-arm-relocs.yaml
parse-cfstring32.yaml
parse-cfstring64.yaml
parse-compact-unwind32.yaml
parse-compact-unwind64.yaml
parse-data-in-code-armv7.yaml
parse-data-in-code-x86.yaml
parse-data-relocs-arm64.yaml
parse-data-relocs-x86_64.yaml Make YAML quote forward slashes. 2018-10-12 16:31:20 +00:00
parse-data.yaml Make YAML quote forward slashes. 2018-10-12 16:31:20 +00:00
parse-eh-frame-relocs-x86_64.yaml
parse-eh-frame-x86-anon.yaml
parse-eh-frame-x86-labeled.yaml
parse-eh-frame.yaml
parse-function.yaml
parse-initializers32.yaml
parse-initializers64.yaml
parse-literals-error.yaml
parse-literals.yaml
parse-non-lazy-pointers.yaml
parse-relocs-x86.yaml
parse-section-no-symbol.yaml
parse-tentative-defs.yaml
parse-text-relocs-arm64.yaml
parse-text-relocs-x86_64.yaml
parse-tlv-relocs-x86-64.yaml
re-exported-dylib-ordinal.yaml
rpath.yaml
run-tlv-pass-x86-64.yaml
sdk-version-error.yaml
sectalign.yaml [test] Change llvm-readobj -long-option to --long-option or well-known short options. NFC 2019-05-01 05:49:01 +00:00
sectattrs.yaml
sectcreate.yaml Make YAML quote forward slashes. 2018-10-12 16:31:20 +00:00
seg-protection-arm64.yaml
seg-protection-x86_64.yaml
source-version.yaml
stack-size.yaml
string-table.yaml
subsections-via-symbols-default.yaml [test] Change llvm-readobj -long-option to --long-option or well-known short options. NFC 2019-05-01 05:49:01 +00:00
twolevel_namespace_undef_dynamic_lookup.yaml
twolevel_namespace_undef_warning_suppress.yaml
unwind-info-simple-arm64.yaml
unwind-info-simple-x86_64.yaml
upward-dylib-load-command.yaml
upward-dylib-paths.yaml
usage.yaml
use-dylib.yaml
use-simple-dylib.yaml
version-min-load-command-object.yaml
version-min-load-command.yaml
write-final-sections.yaml [test] Change llvm-readobj -long-option to --long-option or well-known short options. NFC 2019-05-01 05:49:01 +00:00
wrong-arch-error.yaml