This starts adding dso_local to clang.
The hope is to eventually have TargetMachine::shouldAssumeDsoLocal go away. My objective for now is to move enough of it to clang to remove the need for the TargetMachine one to handle PIE copy relocations and -fno-plt. With that it should then be easy to implement a -fno-copy-reloc in clang.
This patch just adds the cases where we assume a symbol to be local based on the file being compiled for an executable or a shared library.
Future patches will add the rest of the ELF logic (visibility mostly) and the other file formats.
I don't think this is the case. I think this would break ppc, where we need to restore the toc pointer after the plt stubs returns to the original call site.