llvm-project/lld/MachO
Jez Ng ce2ae38124 [lld-macho] Deduplicate the `__objc_classrefs` section contents
ld64 breaks down `__objc_classrefs` on a per-word level and deduplicates
them. This greatly reduces the number of bind entries emitted (and
therefore the amount of work `dyld` has to do at runtime). For
chromium_framework, this change to LLD cuts the number of (non-lazy)
binds from 912 to 190, getting us to parity with ld64 in this aspect.

Reviewed By: #lld-macho, thakis

Differential Revision: https://reviews.llvm.org/D121053
2022-03-08 08:34:04 -05:00
..
Arch [lld-macho] Have relocation address included in range-check error message 2022-02-28 21:56:38 -05:00
CMakeLists.txt [lld-macho] Rename CallGraphSort.{h,cpp} to SectionPriorities 2022-01-25 12:15:14 -05:00
ConcatOutputSection.cpp [lld-macho][nfc] Eliminate InputSection::Shared 2022-02-03 19:55:42 -05: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] Implement -why_live (without perf overhead) 2022-02-24 15:49:36 -05:00
Driver.cpp [lld-macho] Implement -why_live (without perf overhead) 2022-02-24 15:49:36 -05:00
Driver.h [lld-macho][nfc] Comments and style fixes 2022-02-01 13:45:59 -05:00
DriverUtils.cpp Re-land [LLD] Remove global state in lldCommon 2022-01-20 14:53:26 -05: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] Deduplicate the `__objc_classrefs` section contents 2022-03-08 08:34:04 -05:00
ICF.h [lld-macho] Move ICF earlier to avoid emitting redundant binds 2021-07-01 21:22:38 -04:00
InputFiles.cpp [lld-macho] Deduplicate the `__objc_classrefs` section contents 2022-03-08 08:34:04 -05:00
InputFiles.h [lld-macho][nfc] Factor out callgraph parsing code 2022-02-15 21:13:55 -05:00
InputSection.cpp [lld-macho] Deduplicate the `__objc_classrefs` section contents 2022-03-08 08:34:04 -05:00
InputSection.h [lld-macho] Deduplicate the `__objc_classrefs` section contents 2022-03-08 08:34:04 -05:00
LTO.cpp [lld-macho] Unset ExportDynamic where possible for LTO 2022-02-11 22:26:19 -05: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 Print C-string literals in mapfile 2022-02-11 19:42:20 -05:00
MapFile.h [lld-macho] implement options -map 2021-03-18 10:39:19 -04:00
MarkLive.cpp [lld/MachO] Fix +asserts build after recent change 2022-02-24 13:12:48 -08:00
MarkLive.h [lld/mac] Implement -dead_strip 2021-06-02 11:09:26 -04:00
ObjC.cpp [lld-macho][nfc] rename parsed-section types & variables 2021-11-16 07:06:41 -07:00
ObjC.h [lld-macho] Implement -ObjC 2020-08-26 19:20:55 -07:00
Options.td [lld-macho] Implement -why_live (without perf overhead) 2022-02-24 15:49:36 -05:00
OutputSection.cpp [lld/mac] Implement support for section$start and section$ end symbols 2021-07-23 16:01:09 -04:00
OutputSection.h [lld-macho][nfc] Comments and style fixes 2022-02-01 13:45:59 -05:00
OutputSegment.cpp [MachO] Properly reset global state 2021-10-31 16:14:29 -07:00
OutputSegment.h [MachO] Properly reset global state 2021-10-31 16:14:29 -07:00
Relocations.cpp [lld-macho] Have relocation address included in range-check error message 2022-02-28 21:56:38 -05:00
Relocations.h [lld-macho] Have relocation address included in range-check error message 2022-02-28 21:56:38 -05:00
SectionPriorities.cpp [lld-macho] Allow order files and call graph sorting to be used together 2022-02-17 14:19:34 -05:00
SectionPriorities.h [lld-macho] Allow order files and call graph sorting to be used together 2022-02-17 14:19:34 -05:00
SymbolTable.cpp [lld-macho][nfc] Eliminate InputSection::Shared 2022-02-03 19:55:42 -05:00
SymbolTable.h [lld-macho] Add --start-lib --end-lib 2022-01-19 10:14:49 -08:00
Symbols.cpp [lld-macho] Rename LazySymbol to LazyArchive. NFC 2022-01-11 16:49:06 -08:00
Symbols.h [lld-macho] Implement -why_live (without perf overhead) 2022-02-24 15:49:36 -05:00
SyntheticSections.cpp [lld-macho][nfc] Eliminate InputSection::Shared 2022-02-03 19:55:42 -05:00
SyntheticSections.h [lld-macho] Have relocation address included in range-check error message 2022-02-28 21:56:38 -05: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/mac] Set branchRange a bit more carefully 2021-08-30 12:36:06 -04:00
UnwindInfoSection.cpp [lld-macho] Include address offsets in error messages 2022-02-07 21:06:18 -05:00
UnwindInfoSection.h [lld-macho] Support renaming of LSDA section 2021-11-10 19:31:54 -05:00
Writer.cpp [lld-macho] Have relocation address included in range-check error message 2022-02-28 21:56:38 -05:00
Writer.h [MachO] Properly reset global state 2021-10-31 16:14:29 -07:00
ld64-vs-lld.rst [lld-macho] Fix grammar in doc 2022-01-19 23:59:35 -08:00