A symbol can end up both with hidden visibility and a dllexport
attribute (in builds that set global flags like -fvisibility=hidden
or similar). In such cases, the hidden visibility doesn't have any
effect, as the dllexport directives take precedence, and no
autoexporting of all eligible symbols take place.
Therefore, it's entirely redundant to produce both -export: and
-exclude-symbols: for such a symbol - only produce export.
Even if an object file does contain one or more -export: directives,
it's relevant to include -exclude-symbols: for all other hidden
symbols though, because the linker could be invoked with
--export-all-symbols.