Builds that error out on duplicate symbols can still succeed if the symbols
will be dead stripped. Currently, this is the current behavior in ld64.
https://github.com/apple-oss-distributions/ld64/blob/main/src/ld/Resolver.cpp#L2018.
While it's strange for a linker to require `-dead_strip` in order for a link to succeed,
it's far better to align with ld64's behavior to be closer as a drop-in replacement.
Move the duplicate symbol check after mark live so we can use this information to
determine whether we should error on the specified duplicate symbol.