llvm-project/lld/MachO
Vincent Lee 33ab995617 Recommit "[lld-macho] Use DO_BIND_ADD_ADDR_IMM_SCALED for bind opcodes"
Implement pass 3 of bind opcodes from ld64 (which supports both 32-bit and 64-bit).
Pass 3 implementation condenses BIND_OPCODE_DO_BIND_ADD_ADDR_ULEB opcode
to BIND_OPCODE_DO_BIND_ADD_ADDR_IMM_SCALED.  This change is already behind an
O2 flag so it shouldn't impact current performance. I verified ld64's output with x86_64 LLD
and they were both emitting the same optimized bind opcodes (although in a slightly different
order). Tested with arm64_32 LLD and compared that with x86 LLD that the order of the bind
opcodes are the same (offset values are different which should be expected).

Reviewed By: int3, #lld-macho, MaskRay

Differential Revision: https://reviews.llvm.org/D106128
2021-07-20 13:45:24 -07:00
..
Arch [lld-macho] Implement branch-range-extension thunks 2021-05-12 09:44:58 -07:00
CMakeLists.txt [lld-macho] Implement ICF 2021-06-17 10:07:44 -07:00
ConcatOutputSection.cpp [lld-macho] Have ICF operate on all sections at once 2021-07-17 13:42:51 -04:00
ConcatOutputSection.h [lld-macho] Have ICF operate on all sections at once 2021-07-17 13:42:51 -04:00
Config.h [lld-macho] Optimize bind opcodes with multiple passes 2021-07-15 20:52:46 -07:00
Driver.cpp [lld-macho] Have ICF operate on all sections at once 2021-07-17 13:42:51 -04:00
Driver.h [lld-macho][nfc] Avoid using std::map for PlatformKinds 2021-07-11 18:24:53 -04:00
DriverUtils.cpp [lld-macho][nfc] Remove unnecessary llvm:: namespace prefixes 2021-07-11 18:36:53 -04:00
Dwarf.cpp [lld-macho] Factor out common InputSection members 2021-07-01 21:22:39 -04:00
Dwarf.h [lld-macho] Emit STABS symbols for debugging, and drop debug sections 2020-12-01 15:05:20 -08:00
ExportTrie.cpp [lld-macho][NFC] add const to pointer/reference induction variables of range-based for loops 2021-03-10 12:07:31 -08:00
ExportTrie.h [lld-macho] Export trie addresses should be relative to the image base 2020-09-20 20:43:15 -07:00
ICF.cpp [lld-macho] Have ICF operate on all sections at once 2021-07-17 13:42:51 -04:00
ICF.h [lld-macho] Move ICF earlier to avoid emitting redundant binds 2021-07-01 21:22:38 -04:00
InputFiles.cpp [lld/mac] Resolve defined symbols before undefined symbols 2021-07-19 16:37:41 -04:00
InputFiles.h [lld/mac] Implement -application_extension 2021-07-12 13:42:16 -04:00
InputSection.cpp [lld-macho] Have ICF operate on all sections at once 2021-07-17 13:42:51 -04:00
InputSection.h [lld-macho] Factor out common InputSection members 2021-07-01 21:22:39 -04:00
LTO.cpp [lld-macho] Add LTO cache support 2021-07-15 12:56:13 -04:00
LTO.h [lld-macho] Add LTO cache support 2021-07-15 12:56:13 -04:00
MachOStructs.h [lld-macho] Add support for arm64_32 2021-04-15 21:16:33 -04:00
MapFile.cpp [lld][MachO] Sort symbols in parallel in -map 2021-06-17 10:19:59 +08:00
MapFile.h [lld-macho] implement options -map 2021-03-18 10:39:19 -04:00
MarkLive.cpp [lld/mac] Partially implement -export_dynamic 2021-07-06 11:22:18 -04:00
MarkLive.h [lld/mac] Implement -dead_strip 2021-06-02 11:09:26 -04:00
ObjC.cpp [lld-macho] De-templatize mach_header operations 2021-05-03 18:31:23 -04:00
ObjC.h [lld-macho] Implement -ObjC 2020-08-26 19:20:55 -07:00
Options.td [lld-macho] Optimize bind opcodes with multiple passes 2021-07-15 20:52:46 -07:00
OutputSection.cpp [lld-macho] Refactor segment/section creation, sorting, and merging 2020-06-21 17:13:59 -07:00
OutputSection.h [lld-macho] Have inputOrder default to less than INT_MAX 2021-06-20 19:49:27 -04:00
OutputSegment.cpp [lld/mac] Fix nondeterminism in output section ordering 2021-06-28 18:41:33 -04:00
OutputSegment.h [lld-macho] Have inputOrder default to less than INT_MAX 2021-06-20 19:49:27 -04:00
Relocations.cpp [lld-macho][nfc] Remove DYSYM8 reloc attribute 2021-04-09 19:48:08 -04:00
Relocations.h [lld-macho] Add 32-bit compact unwind support 2021-04-15 21:16:33 -04:00
SymbolTable.cpp [lld/mac] Implement -arch_multiple 2021-07-06 00:25:18 -04:00
SymbolTable.h [lld/mac] Implement -dead_strip 2021-06-02 11:09:26 -04:00
Symbols.cpp [lld-macho] Implement ICF 2021-06-17 10:07:44 -07:00
Symbols.h [lld-macho] Factor out common InputSection members 2021-07-01 21:22:39 -04:00
SyntheticSections.cpp Recommit "[lld-macho] Use DO_BIND_ADD_ADDR_IMM_SCALED for bind opcodes" 2021-07-20 13:45:24 -07:00
SyntheticSections.h [lld-macho] Have ICF operate on all sections at once 2021-07-17 13:42:51 -04:00
Target.cpp [lld-macho][nfc] Create Relocations.{h,cpp} for relocation-specific code 2021-03-11 13:28:09 -05:00
Target.h [lld-macho] Implement branch-range-extension thunks 2021-05-12 09:44:58 -07:00
UnwindInfoSection.cpp [lld-macho] Have ICF operate on all sections at once 2021-07-17 13:42:51 -04:00
UnwindInfoSection.h [lld/mac] Don't crash when dead-stripping removes all unwind info 2021-07-07 13:05:40 -04:00
Writer.cpp [lld/mac] Change load command order to be more like ld64 2021-07-19 15:04:32 -04:00
Writer.h [lld-macho] Have ICF operate on all sections at once 2021-07-17 13:42:51 -04:00