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
17 lines
601 B
C++
17 lines
601 B
C++
// REQUIRES: x86-registered-target
|
|
// RUN: %clang -target x86_64-linux-gnu -o - -emit-interface-stubs -emit-merged-ifs \
|
|
// RUN: -interface-stub-version=experimental-ifs-v1 %s | \
|
|
// RUN: FileCheck %s
|
|
|
|
// RUN: %clang -target x86_64-unknown-linux-gnu -o - -c %s | llvm-nm - 2>&1 | \
|
|
// RUN: FileCheck -check-prefix=CHECK-SYMBOLS %s
|
|
|
|
// CHECK: Symbols:
|
|
// CHECK-DAG: _Z8weakFuncv: { Type: Func, Weak: true }
|
|
// CHECK-DAG: _Z10strongFuncv: { Type: Func }
|
|
|
|
// CHECK-SYMBOLS-DAG: _Z10strongFuncv
|
|
// CHECK-SYMBOLS-DAG: _Z8weakFuncv
|
|
__attribute__((weak)) void weakFunc() {}
|
|
int strongFunc() { return 42; }
|