In GNU ld and ld.lld, -dc is used with -r to allocate space to COMMON symbols.
It is presumably to work around legacy code which cannot handle COMMON symbols
in relocatable output. -dc has no effect if -fno-common is used.
See https://maskray.me/blog/2022-02-06-all-about-common-symbols for detail.
ld.lld may remove -dc or make it a no-op for the 15.0.0 release.
See emaste's comment: -dc is just not needed, for both -fcommon and
-fno-common code.
Hope that someone tests this for me.
Note: -nostdlib can be removed if FreeBSD Clang picks https://reviews.llvm.org/D117388