ld(1) string table merging could be much faster
The string table merging in ld is currently quadratic in the number of sections and relocations in the input objects. This is usually not noticeable, but objects produced with -fdata-sections (or equivalent) can quickly cause this to be meaningfully problematic.
We should store affected relocations and symbols per output section to speed this up considerably.
Similarly, if a given output section has only one mergable input section, we can skip processing entirely and trust in whatever produced the object to have merged already.
illumos builds and checking the results, checking that strings remain in data sections (though not necessarily in the same places). Soaking on my own systems, which includes building various 3rd party things and having them work. Coincidentally to another bug fix, also build/compare of the llvm/clang test suites with no new additional failures.