llvm-project/lld/MachO
Jez Ng fd3669c256 [lld-macho] Improve hiding of unnamed_addr symbols
Symbols for which `canBeOmittedFromSymbolTable()` is true should be
treated as private externs. This diff tries to do that by unsetting the
ExportDynamic bit. It seems to mostly work with the FullLTO backend, but
with the ThinLTO backend, the `local_unnamed_addr` symbols still fail to
be properly hidden. Nonetheless, this is a step in the right direction.

I've documented all the remaining differences between our behavior and
LD64's in the lto-internalized-unnamed-addr.ll test.

See also https://discourse.llvm.org/t/mach-o-lto-handling-of-linkonce-odr-unnamed-addr/60015

Reviewed By: #lld-macho, thevinster

Differential Revision: https://reviews.llvm.org/D119767
2022-02-18 12:09:38 -05:00
..
Arch Use true/false instead of 1/0 (NFC) 2022-01-09 12:21:06 -08: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 Replace PlatformKind with PlatformType. 2022-01-13 09:23:49 -08:00
Driver.cpp [lld-macho] Allow order files and call graph sorting to be used together 2022-02-17 14:19:34 -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] Don't include CommandFlags.h in CommonLinkerContext.h 2022-02-16 20:05:07 -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] Improve hiding of unnamed_addr symbols 2022-02-18 12:09:38 -05:00
InputFiles.h [lld-macho][nfc] Factor out callgraph parsing code 2022-02-15 21:13:55 -05:00
InputSection.cpp [lld-macho] Include address offsets in error messages 2022-02-07 21:06:18 -05:00
InputSection.h [lld-macho][nfc] Factor out callgraph parsing code 2022-02-15 21:13:55 -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][nfc] Factor-out NFC changes from main __eh_frame diff 2021-11-17 15:16:44 -07: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] Add -pagezero_size 2022-02-06 13:15:16 -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] Include address offsets in error messages 2022-02-07 21:06:18 -05:00
Relocations.h [MachO] Move type size asserts to source files. NFC 2021-11-16 17:14:16 -08: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] Add --start-lib --end-lib 2022-01-19 10:14:49 -08:00
SyntheticSections.cpp [lld-macho][nfc] Eliminate InputSection::Shared 2022-02-03 19:55:42 -05:00
SyntheticSections.h [lld-macho] Add -pagezero_size 2022-02-06 13:15:16 -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][nfc] Eliminate InputSection::Shared 2022-02-03 19:55:42 -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