[mach-o] Support missing MH_SUBSECTIONS_VIA_SYMBOLS
authorNick Kledzik <kledzik@apple.com>
Tue, 21 Oct 2014 23:45:37 +0000 (23:45 +0000)
committerNick Kledzik <kledzik@apple.com>
Tue, 21 Oct 2014 23:45:37 +0000 (23:45 +0000)
commit9133f8c76d27c350bfc625319558f2f9cd2f8c03
tree853506ab3a411944516ddae784a11f7dd54f49cc
parent41d95947cfc4b143cd0ca922e93cc582a6d10e96
[mach-o] Support missing MH_SUBSECTIONS_VIA_SYMBOLS

All compiler generated mach-o object files are marked with MH_SUBSECTIONS_VIA_SYMBOLS.
But hand written assembly files need to opt-in if they are written correctly.
The flag means the linker can break up a sections at symbol addresses and
dead strip or re-order functions.

This change recognizes object files without the flag and marks its atoms as
not dead strippable and adds a layout-after chain of references so that the
atoms cannot be re-ordered.

llvm-svn: 220348
lld/lib/ReaderWriter/MachO/ArchHandler.h
lld/lib/ReaderWriter/MachO/ArchHandler_arm.cpp
lld/lib/ReaderWriter/MachO/ArchHandler_arm64.cpp
lld/lib/ReaderWriter/MachO/ArchHandler_x86.cpp
lld/lib/ReaderWriter/MachO/ArchHandler_x86_64.cpp
lld/lib/ReaderWriter/MachO/MachONormalizedFileToAtoms.cpp
lld/test/mach-o/arm-subsections-via-symbols.yaml [new file with mode: 0644]
lld/test/mach-o/parse-data-relocs-x86_64.yaml