[llvm-objcopy][MachO] Support LC_LINKER_OPTIMIZATION_HINT load command
authorFangrui Song <i@maskray.me>
Wed, 30 Jun 2021 01:47:55 +0000 (18:47 -0700)
committerFangrui Song <i@maskray.me>
Wed, 30 Jun 2021 01:47:55 +0000 (18:47 -0700)
commit814dffa4b7edb36d3b05c6b96591330e33a82204
tree228554c24ba9b946113a15b1c6b5f73d60ad97e6
parent43f6dad2344247976d5777f56a1fc29e39c6c717
[llvm-objcopy][MachO] Support LC_LINKER_OPTIMIZATION_HINT load command

The load command is currently specific to arm64 and holds information
for instruction rewriting, e.g.  converting a GOT load to an ADR to
compute a local address.
(On ELF the information is usually conveyed by relocations, e.g.
R_X86_64_REX_GOTPCRELX, R_PPC64_TOC16_HA)

Reviewed By: alexander-shaposhnikov

Differential Revision: https://reviews.llvm.org/D104968
llvm/test/tools/llvm-objcopy/MachO/lc-linker-optimization-hint.s [new file with mode: 0644]
llvm/tools/llvm-objcopy/MachO/MachOLayoutBuilder.cpp
llvm/tools/llvm-objcopy/MachO/MachOReader.cpp
llvm/tools/llvm-objcopy/MachO/MachOReader.h
llvm/tools/llvm-objcopy/MachO/MachOWriter.cpp
llvm/tools/llvm-objcopy/MachO/MachOWriter.h
llvm/tools/llvm-objcopy/MachO/Object.cpp
llvm/tools/llvm-objcopy/MachO/Object.h