Currently -fuse-init-array option is not effective when target triple does not specify os, on x86,x86_64.
i.e.
$clang -target i386 -fuse-init-array test.c -S // -fuse-init-array is not honored.
$clang -target i386-linux -fuse-init-array test.c -S // -fuse-init-array is honored.
This patch fixes first case.
And does cleanup.
I don't see how this differs in behavior in a meaningful way from X86ELFTargetObjectFile. Can you add the override there without breaking too much?