]> granicus.if.org Git - clang/commit
[clang-ifs] Clang Interface Stubs, first version.
authorPuyan Lotfi <puyan@puyan.org>
Mon, 17 Jun 2019 22:46:54 +0000 (22:46 +0000)
committerPuyan Lotfi <puyan@puyan.org>
Mon, 17 Jun 2019 22:46:54 +0000 (22:46 +0000)
commitd9cb70af7cf60498423d776efcca80e30a3e233a
tree47d179841d7311fb2bbf4df8a6bb9088c0aa54f7
parentd8450eac7b8a65d2332a074d4fdafbf4738a0b6b
[clang-ifs] Clang Interface Stubs, first version.

Clang interface stubs (previously referred to as clang-ifsos) is a new frontend
action in clang that allows the generation of stub files that contain mangled
name info that can be used to produce a stub library. These stub libraries can
be useful for breaking up build dependencies and controlling access to a
library's internal symbols. Generation of these stubs can be invoked by:

clang -fvisibility=<visibility> -emit-interface-stubs \
                                -interface-stub-version=<interface format>

Notice that -fvisibility (along with use of visibility attributes) can be used
to control what symbols get generated. Currently the interface format is
experimental but there are a wide range of possibilities here.

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

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@363626 91177308-0d34-0410-b5e6-96231b3b80d8
23 files changed:
include/clang/Basic/DiagnosticFrontendKinds.td
include/clang/Driver/Options.td
include/clang/Driver/Types.def
include/clang/Frontend/FrontendActions.h
include/clang/Frontend/FrontendOptions.h
lib/Driver/Driver.cpp
lib/Driver/ToolChains/Clang.cpp
lib/Frontend/CMakeLists.txt
lib/Frontend/CompilerInvocation.cpp
lib/Frontend/InterfaceStubFunctionsConsumer.cpp [new file with mode: 0644]
lib/FrontendTool/ExecuteCompilerInvocation.cpp
test/InterfaceStubs/bad-format.cpp [new file with mode: 0644]
test/InterfaceStubs/class-template-specialization.cpp [new file with mode: 0644]
test/InterfaceStubs/externstatic.c [new file with mode: 0644]
test/InterfaceStubs/function-template-specialization.cpp [new file with mode: 0644]
test/InterfaceStubs/hidden-class-inheritance.cpp [new file with mode: 0644]
test/InterfaceStubs/inline.c [new file with mode: 0644]
test/InterfaceStubs/inline.h [new file with mode: 0644]
test/InterfaceStubs/object.cpp [new file with mode: 0644]
test/InterfaceStubs/template-namespace-function.cpp [new file with mode: 0644]
test/InterfaceStubs/virtual.cpp [new file with mode: 0644]
test/InterfaceStubs/visibility.cpp [new file with mode: 0644]
test/InterfaceStubs/weak.cpp [new file with mode: 0644]