[clang][ifs] Clang Interface Stubs ToolChain plumbing.

Authored by plotfi on Oct 8 2019, 8:23 AM.


[clang][ifs] Clang Interface Stubs ToolChain plumbing.

Second Landing Attempt:

This patch enables end to end support for generating ELF interface stubs
directly from clang. Now the following:

clang -emit-interface-stubs -o libfoo.so a.cpp b.cpp c.cpp

will product an ELF binary with visible symbols populated. Visibility attributes
and -fvisibility can be used to control what gets populated.

  • Adding ToolChain support for clang Driver IFS Merge Phase
  • Implementing a default InterfaceStubs Merge clang Tool, used by ToolChain
  • Adds support for the clang Driver to involve llvm-ifs on ifs files.
  • Adds -emit-merged-ifs flag, to tell llvm-ifs to emit a merged ifs text file instead of the final object format (normally ELF)

Differential Revision: https://reviews.llvm.org/D63978

llvm-svn: 374061