mirror of
https://github.com/Gericom/teak-llvm.git
synced 2025-06-19 11:35:51 -04:00

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
29 lines
962 B
Plaintext
29 lines
962 B
Plaintext
# RUN: %clang -emit-interface-stubs -o - -emit-merged-ifs %s | \
|
|
# RUN: FileCheck %s --check-prefixes=CHECK-IFS
|
|
|
|
# RUN: %clang -emit-interface-stubs -o - %s | llvm-readelf --all | \
|
|
# RUN: FileCheck %s --check-prefixes=CHECK-ELF
|
|
|
|
# CHECK-IFS: --- !experimental-ifs-v1
|
|
# CHECK-IFS-NEXT: IfsVersion: 1.0
|
|
# CHECK-IFS-NEXT: Triple: x86_64-linux-gnu
|
|
# CHECK-IFS-NEXT: ObjectFileFormat: ELF
|
|
# CHECK-IFS-NEXT: Symbols:
|
|
# CHECK-IFS-NEXT: b: { Type: Object, Size: 4 }
|
|
# CHECK-IFS-NEXT: ...
|
|
|
|
# CHECK-ELF: ELF Header:
|
|
# CHECK-ELF: Class: ELF64
|
|
# CHECK-ELF: Data: 2's complement, little endian
|
|
# CHECK-ELF: Type: DYN (Shared object file)
|
|
# CHECK-ELF-NOT: FUNC GLOBAL DEFAULT 1 a
|
|
# CHECK-ELF: OBJECT GLOBAL DEFAULT 1 b
|
|
|
|
--- !experimental-ifs-v1
|
|
IfsVersion: 1.0
|
|
Triple: x86_64-linux-gnu
|
|
ObjectFileFormat: ELF
|
|
Symbols:
|
|
b: { Type: Object, Size: 4 }
|
|
...
|