This doc lists all significant deliberate differences in behavior between LD64 and LLD-MachO.
-String literal deduplication
+String Literal Deduplication
****************************
-LD64 always deduplicates string literals. LLD only does it when the `--icf=` or
-the `--deduplicate-literals` flag is passed. Omitting deduplication by default
-ensures that our link is as fast as possible. However, it may also break some
-programs which have (incorrectly) relied on string deduplication always
+LD64 always deduplicates string literals. LLD only does it when the ``--icf=``
+or the ``--deduplicate-literals`` flag is passed. Omitting deduplication by
+default ensures that our link is as fast as possible. However, it may also break
+some programs which have (incorrectly) relied on string deduplication always
occurring. In particular, programs which compare string literals via pointer
equality must be fixed to use value equality instead.
difference.
``-no_deduplicate`` Flag
-**********************
+************************
- LD64:
* This turns off ICF (deduplication pass) in the linker.
- LLD
* This turns off ICF and string merging in the linker.
-ObjC symbols treatment
+ObjC Symbols Treatment
**********************
There are differences in how LLD and LD64 handle ObjC symbols loaded from archives.