plotfi created this revision. plotfi added a reviewer: compnerd. Herald added a project: clang. Herald added a subscriber: cfe-commits.
Working on a new tool, llvm-ifs, for merging interface stub files generated by clang and I've iterated on my derivative format of TBE to a newer format. This format is pretty straight forward and mainly has two fields which are the LLVM triple and the object format (since the triple doesn't encode that). For instance, you may want PE/COFF on Linux or something like that so a triple like x86_64-linux-gnu can't really tell you what the object is. Anyways, I think this format is more straight forward than something derived from objyaml and more intended for merging than TBE (also more platform agnostic). Repository: rG LLVM Github Monorepo https://reviews.llvm.org/D66573 Files: clang/include/clang/Frontend/FrontendActions.h clang/include/clang/Frontend/FrontendOptions.h clang/lib/Driver/ToolChains/Clang.cpp clang/lib/Frontend/CompilerInvocation.cpp clang/lib/Frontend/InterfaceStubFunctionsConsumer.cpp clang/lib/FrontendTool/ExecuteCompilerInvocation.cpp clang/test/InterfaceStubs/bad-format.cpp clang/test/InterfaceStubs/class-template-specialization.cpp clang/test/InterfaceStubs/externstatic.c clang/test/InterfaceStubs/function-template-specialization.cpp clang/test/InterfaceStubs/hidden-class-inheritance.cpp clang/test/InterfaceStubs/inline.c clang/test/InterfaceStubs/object.cpp clang/test/InterfaceStubs/template-namespace-function.cpp clang/test/InterfaceStubs/virtual.cpp clang/test/InterfaceStubs/visibility.cpp clang/test/InterfaceStubs/weak.cpp
Index: clang/test/InterfaceStubs/weak.cpp =================================================================== --- clang/test/InterfaceStubs/weak.cpp +++ clang/test/InterfaceStubs/weak.cpp @@ -1,12 +1,8 @@ // REQUIRES: x86-registered-target // RUN: %clang -target x86_64-linux-gnu -o - -emit-interface-stubs \ -// RUN: -interface-stub-version=experimental-tapi-elf-v1 %s | \ +// RUN: -interface-stub-version=experimental-ifs-v1 %s | \ // RUN: FileCheck %s -// RUN: %clang -target x86_64-linux-gnu -o - -emit-interface-stubs \ -// RUN: -interface-stub-version=experimental-yaml-elf-v1 %s | \ -// RUN: FileCheck --check-prefix=CHECK-YAML %s - // RUN: %clang -target x86_64-unknown-linux-gnu -o - -c %s | llvm-nm - 2>&1 | \ // RUN: FileCheck -check-prefix=CHECK-SYMBOLS %s @@ -14,14 +10,6 @@ // CHECK-DAG: _Z8weakFuncv: { Type: Func, Weak: true } // CHECK-DAG: _Z10strongFuncv: { Type: Func } -// CHECK-YAML: Symbols: -// CHECK-YAML-DAG: - Name: _Z8weakFuncv -// CHECK-YAML-DAG: Type: STT_FUNC -// CHECK-YAML-DAG: Binding: STB_WEAK -// CHECK-YAML-DAG: - Name: _Z10strongFuncv -// CHECK-YAML-DAG: Type: STT_FUNC -// CHECK-YAML-DAG: Binding: STB_GLOBAL - // CHECK-SYMBOLS-DAG: _Z10strongFuncv // CHECK-SYMBOLS-DAG: _Z8weakFuncv __attribute__((weak)) void weakFunc() {} Index: clang/test/InterfaceStubs/visibility.cpp =================================================================== --- clang/test/InterfaceStubs/visibility.cpp +++ clang/test/InterfaceStubs/visibility.cpp @@ -1,26 +1,26 @@ // REQUIRES: x86-registered-target // RUN: %clang -target x86_64-unknown-linux-gnu -o - -emit-interface-stubs \ -// RUN: -interface-stub-version=experimental-tapi-elf-v1 -fvisibility=hidden \ +// RUN: -interface-stub-version=experimental-ifs-v1 -fvisibility=hidden \ // RUN: %s | FileCheck --check-prefix=CHECK-CMD-HIDDEN %s // RUN: %clang -target x86_64-unknown-linux-gnu -o - -emit-interface-stubs \ -// RUN: -interface-stub-version=experimental-yaml-elf-v1 -fvisibility=hidden \ +// RUN: -interface-stub-version=experimental-ifs-v1 -fvisibility=hidden \ // RUN: %s | FileCheck --check-prefix=CHECK-CMD-HIDDEN %s // RUN: %clang -target x86_64-unknown-linux-gnu -o - -emit-interface-stubs \ -// RUN: -interface-stub-version=experimental-tapi-elf-v1 %s | \ +// RUN: -interface-stub-version=experimental-ifs-v1 %s | \ // RUN: FileCheck --check-prefix=CHECK-CMD %s // RUN: %clang -target x86_64-unknown-linux-gnu -o - -emit-interface-stubs \ -// RUN: -interface-stub-version=experimental-yaml-elf-v1 %s | \ +// RUN: -interface-stub-version=experimental-ifs-v1 %s | \ // RUN: FileCheck --check-prefix=CHECK-CMD %s // RUN: %clang -target x86_64-unknown-linux-gnu -o - -emit-interface-stubs \ -// RUN: -interface-stub-version=experimental-tapi-elf-v1 %s | \ +// RUN: -interface-stub-version=experimental-ifs-v1 %s | \ // RUN: FileCheck --check-prefix=CHECK-CMD2 %s // RUN: %clang -target x86_64-unknown-linux-gnu -o - -emit-interface-stubs \ -// RUN: -interface-stub-version=experimental-yaml-elf-v1 %s | \ +// RUN: -interface-stub-version=experimental-ifs-v1 %s | \ // RUN: FileCheck --check-prefix=CHECK-CMD2 %s // RUN: %clang -target x86_64-unknown-linux-gnu -o - -c %s | llvm-readelf -s - 2>&1 | \ Index: clang/test/InterfaceStubs/virtual.cpp =================================================================== --- clang/test/InterfaceStubs/virtual.cpp +++ clang/test/InterfaceStubs/virtual.cpp @@ -1,9 +1,9 @@ // REQUIRES: x86-registered-target // RUN: %clang -target x86_64-unknown-linux-gnu -o - -emit-interface-stubs \ -// RUN: -interface-stub-version=experimental-tapi-elf-v1 %s | \ +// RUN: -interface-stub-version=experimental-ifs-v1 %s | \ // RUN: FileCheck -check-prefix=CHECK-TAPI %s // RUN: %clang -target x86_64-unknown-linux-gnu -o - -emit-interface-stubs \ -// RUN: -interface-stub-version=experimental-tapi-elf-v1 %s | \ +// RUN: -interface-stub-version=experimental-ifs-v1 %s | \ // RUN: FileCheck -check-prefix=CHECK-TAPI2 %s // RUN: %clang -target x86_64-unknown-linux-gnu -o - -c %s | \ // RUN: llvm-readelf -s - 2>&1 | FileCheck -check-prefix=CHECK-SYMBOLS %s Index: clang/test/InterfaceStubs/template-namespace-function.cpp =================================================================== --- clang/test/InterfaceStubs/template-namespace-function.cpp +++ clang/test/InterfaceStubs/template-namespace-function.cpp @@ -1,6 +1,6 @@ // REQUIRES: x86-registered-target // RUN: %clang -target x86_64-unknown-linux-gnu -o - -emit-interface-stubs \ -// RUN: -interface-stub-version=experimental-tapi-elf-v1 %s | \ +// 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 | \ Index: clang/test/InterfaceStubs/object.cpp =================================================================== --- clang/test/InterfaceStubs/object.cpp +++ clang/test/InterfaceStubs/object.cpp @@ -1,10 +1,10 @@ // REQUIRES: x86-registered-target // RUN: %clang -target x86_64-unknown-linux-gnu -o - -emit-interface-stubs \ -// RUN: -interface-stub-version=experimental-tapi-elf-v1 %s | \ +// RUN: -interface-stub-version=experimental-ifs-v1 %s | \ // RUN: FileCheck -check-prefix=CHECK-TAPI %s // RUN: %clang -target x86_64-unknown-linux-gnu -o - -emit-interface-stubs \ -// RUN: -interface-stub-version=experimental-tapi-elf-v1 %s | \ +// RUN: -interface-stub-version=experimental-ifs-v1 %s | \ // RUN: FileCheck -check-prefix=CHECK-SYMBOLS %s // RUN: %clang -target x86_64-unknown-linux-gnu -o - -c %s | llvm-nm - 2>&1 | \ // RUN: FileCheck -check-prefix=CHECK-SYMBOLS %s Index: clang/test/InterfaceStubs/inline.c =================================================================== --- clang/test/InterfaceStubs/inline.c +++ clang/test/InterfaceStubs/inline.c @@ -1,14 +1,14 @@ // REQUIRES: x86-registered-target // RUN: %clang -DINLINE=inline -target x86_64-unknown-linux-gnu -o - \ // RUN: -emit-interface-stubs \ -// RUN: -interface-stub-version=experimental-yaml-elf-v1 -std=gnu89 -xc %s | \ +// RUN: -interface-stub-version=experimental-ifs-v1 -std=gnu89 -xc %s | \ // RUN: FileCheck -check-prefix=CHECK-GNU %s // RUN: %clang -DINLINE=inline -target x86_64-linux-gnu -O0 -o - -c \ // RUN: -std=gnu89 -xc %s | llvm-nm - | FileCheck -check-prefix=CHECK-GNU %s // RUN: %clang -DINLINE="__attribute__((always_inline))" \ // RUN: -target x86_64-unknown-linux-gnu -o - -emit-interface-stubs \ -// RUN: -interface-stub-version=experimental-yaml-elf-v1 -xc %s | \ +// RUN: -interface-stub-version=experimental-ifs-v1 -xc %s | \ // RUN: FileCheck -check-prefix=CHECK-GNU %s // RUN: %clang -DINLINE="__attribute__((always_inline))" \ // RUN: -target x86_64-linux-gnu -O0 -o - -c -xc %s | \ @@ -16,14 +16,14 @@ // RUN: %clang -DINLINE=inline -target x86_64-unknown-linux-gnu -o - \ // RUN: -emit-interface-stubs \ -// RUN: -interface-stub-version=experimental-yaml-elf-v1 -std=c99 -xc %s | \ +// RUN: -interface-stub-version=experimental-ifs-v1 -std=c99 -xc %s | \ // RUN: FileCheck -check-prefix=CHECK-STD %s // RUN: %clang -DINLINE=inline -target x86_64-linux-gnu -O0 -o - -c -std=c99 \ // RUN: -xc %s | llvm-nm - 2>&1 | FileCheck -check-prefix=CHECK-STD %s // RUN: %clang -DINLINE="__attribute__((noinline))" \ // RUN: -target x86_64-unknown-linux-gnu -o - -emit-interface-stubs \ -// RUN: -interface-stub-version=experimental-yaml-elf-v1 -std=c99 -xc %s | \ +// RUN: -interface-stub-version=experimental-ifs-v1 -std=c99 -xc %s | \ // RUN: FileCheck -check-prefix=CHECK-NOINLINE %s // RUN: %clang -DINLINE="__attribute__((noinline))" -target x86_64-linux-gnu \ // RUN: -O0 -o - -c -std=c99 -xc %s | llvm-nm - 2>&1 | \ @@ -31,7 +31,7 @@ // RUN: %clang -DINLINE="static" -target x86_64-unknown-linux-gnu -o - \ // RUN: -emit-interface-stubs \ -// RUN: -interface-stub-version=experimental-yaml-elf-v1 -std=c99 -xc %s | \ +// RUN: -interface-stub-version=experimental-ifs-v1 -std=c99 -xc %s | \ // RUN: FileCheck -check-prefix=CHECK-STATIC %s // RUN: %clang -DINLINE="static" -target x86_64-linux-gnu -O0 -o - -c \ // RUN: -std=c99 -xc %s | llvm-nm - 2>&1 | \ @@ -51,11 +51,11 @@ } // RUN: %clang -DINLINE=inline -target x86_64-linux-gnu -o - \ -// RUN: -emit-interface-stubs -interface-stub-version=experimental-tapi-elf-v1 \ +// RUN: -emit-interface-stubs -interface-stub-version=experimental-ifs-v1 \ // RUN: -std=gnu89 -xc %s | FileCheck -check-prefix=CHECK-TAPI %s // RUN: %clang -DINLINE=inline -target x86_64-linux-gnu -o - \ -// RUN: -emit-interface-stubs -interface-stub-version=experimental-tapi-elf-v1 \ +// RUN: -emit-interface-stubs -interface-stub-version=experimental-ifs-v1 \ // RUN: -std=gnu89 -xc %s | FileCheck -check-prefix=CHECK-SYMBOLS %s // RUN: %clang -DINLINE=inline -target x86_64-linux-gnu -o - \ // RUN: -c -std=gnu89 -xc %s | llvm-nm - 2>&1 | \ Index: clang/test/InterfaceStubs/hidden-class-inheritance.cpp =================================================================== --- clang/test/InterfaceStubs/hidden-class-inheritance.cpp +++ clang/test/InterfaceStubs/hidden-class-inheritance.cpp @@ -1,6 +1,6 @@ // REQUIRES: x86-registered-target // RUN: %clang -target x86_64-unknown-linux-gnu -o - -emit-interface-stubs \ -// RUN: -interface-stub-version=experimental-tapi-elf-v1 \ +// RUN: -interface-stub-version=experimental-ifs-v1 \ // RUN: -DPARENT_CLASS_VISIBILITY="" -DCHILD_CLASS_VISIBILITY="" \ // RUN: -DPARENT_METHOD_VISIBILITY="" -DCHILD_METHOD_VISIBILITY="" %s | \ // RUN: FileCheck -check-prefix=CHECK-X %s @@ -11,12 +11,12 @@ // RUN: FileCheck -check-prefix=CHECK-X-RE %s // RUN: %clang -target x86_64-unknown-linux-gnu -o - -emit-interface-stubs \ -// RUN: -interface-stub-version=experimental-tapi-elf-v1 \ +// RUN: -interface-stub-version=experimental-ifs-v1 \ // RUN: -DPARENT_CLASS_VISIBILITY=HIDDEN -DCHILD_CLASS_VISIBILITY="" \ // RUN: -DPARENT_METHOD_VISIBILITY="" -DCHILD_METHOD_VISIBILITY="" %s | \ // RUN: FileCheck -check-prefix=CHECK-HP %s // RUN: %clang -target x86_64-unknown-linux-gnu -o - -emit-interface-stubs \ -// RUN: -interface-stub-version=experimental-tapi-elf-v1 \ +// RUN: -interface-stub-version=experimental-ifs-v1 \ // RUN: -DPARENT_CLASS_VISIBILITY=HIDDEN -DCHILD_CLASS_VISIBILITY="" \ // RUN: -DPARENT_METHOD_VISIBILITY="" -DCHILD_METHOD_VISIBILITY="" %s | \ // RUN: FileCheck -check-prefix=CHECK-HP2 %s @@ -27,12 +27,12 @@ // RUN: FileCheck -check-prefix=CHECK-HP-RE %s // RUN: %clang -target x86_64-unknown-linux-gnu -o - -emit-interface-stubs \ -// RUN: -interface-stub-version=experimental-tapi-elf-v1 \ +// RUN: -interface-stub-version=experimental-ifs-v1 \ // RUN: -DPARENT_CLASS_VISIBILITY="" -DCHILD_CLASS_VISIBILITY=HIDDEN \ // RUN: -DPARENT_METHOD_VISIBILITY="" -DCHILD_METHOD_VISIBILITY="" %s | \ // RUN: FileCheck -check-prefix=CHECK-HC %s // RUN: %clang -target x86_64-unknown-linux-gnu -o - -emit-interface-stubs \ -// RUN: -interface-stub-version=experimental-tapi-elf-v1 \ +// RUN: -interface-stub-version=experimental-ifs-v1 \ // RUN: -DPARENT_CLASS_VISIBILITY="" -DCHILD_CLASS_VISIBILITY=HIDDEN \ // RUN: -DPARENT_METHOD_VISIBILITY="" -DCHILD_METHOD_VISIBILITY="" %s | \ // RUN: FileCheck -check-prefix=CHECK-HC2 %s @@ -43,7 +43,7 @@ // RUN: FileCheck -check-prefix=CHECK-HC-RE %s // RUN: %clang -target x86_64-unknown-linux-gnu -o - -emit-interface-stubs \ -// RUN: -interface-stub-version=experimental-tapi-elf-v1 \ +// RUN: -interface-stub-version=experimental-ifs-v1 \ // RUN: -DPARENT_CLASS_VISIBILITY=HIDDEN -DCHILD_CLASS_VISIBILITY=HIDDEN \ // RUN: -DPARENT_METHOD_VISIBILITY="" -DCHILD_METHOD_VISIBILITY="" %s | \ // RUN: FileCheck -check-prefix=CHECK-HP-HC %s Index: clang/test/InterfaceStubs/function-template-specialization.cpp =================================================================== --- clang/test/InterfaceStubs/function-template-specialization.cpp +++ clang/test/InterfaceStubs/function-template-specialization.cpp @@ -1,14 +1,14 @@ // REQUIRES: x86-registered-target // RUN: %clang -target x86_64-unknown-linux-gnu -o - -emit-interface-stubs \ -// RUN: -interface-stub-version=experimental-tapi-elf-v1 %s | FileCheck %s +// RUN: -interface-stub-version=experimental-ifs-v1 %s | FileCheck %s // RUN: %clang -target x86_64-unknown-linux-gnu -o - -emit-interface-stubs \ -// RUN: -interface-stub-version=experimental-tapi-elf-v1 \ +// RUN: -interface-stub-version=experimental-ifs-v1 \ // RUN: -DUSE_TEMPLATE_FUNCTION=1 %s | \ // RUN: FileCheck -check-prefix=CHECK-USES-TEMPLATE-FUNCTION %s // RUN: %clang -target x86_64-unknown-linux-gnu -o - -emit-interface-stubs \ -// RUN: -interface-stub-version=experimental-tapi-elf-v1 \ +// RUN: -interface-stub-version=experimental-ifs-v1 \ // RUN: -DSPECIALIZE_TEMPLATE_FUNCTION=1 %s | \ // RUN: FileCheck -check-prefix=CHECK-SPECIALIZES-TEMPLATE-FUNCTION %s Index: clang/test/InterfaceStubs/externstatic.c =================================================================== --- clang/test/InterfaceStubs/externstatic.c +++ clang/test/InterfaceStubs/externstatic.c @@ -1,21 +1,21 @@ // REQUIRES: x86-registered-target // RUN: %clang -DSTORAGE="extern" -target x86_64-unknown-linux-gnu -o - \ // RUN: -emit-interface-stubs \ -// RUN: -interface-stub-version=experimental-yaml-elf-v1 -std=c99 -xc %s | \ +// RUN: -interface-stub-version=experimental-ifs-v1 -std=c99 -xc %s | \ // RUN: FileCheck -check-prefix=CHECK-EXTERN %s // RUN: %clang -DSTORAGE="extern" -target x86_64-linux-gnu -O0 -o - -c -std=c99 \ // RUN: -xc %s | llvm-nm - 2>&1 | FileCheck -check-prefix=CHECK-EXTERN %s // RUN: %clang -DSTORAGE="extern" -target x86_64-unknown-linux-gnu -o - \ // RUN: -emit-interface-stubs \ -// RUN: -interface-stub-version=experimental-yaml-elf-v1 -std=c99 -xc %s | \ +// RUN: -interface-stub-version=experimental-ifs-v1 -std=c99 -xc %s | \ // RUN: FileCheck -check-prefix=CHECK-EXTERN2 %s // RUN: %clang -DSTORAGE="extern" -target x86_64-linux-gnu -O0 -o - -c -std=c99 \ // RUN: -xc %s | llvm-nm - 2>&1 | FileCheck -check-prefix=CHECK-EXTERN2 %s // RUN: %clang -DSTORAGE="static" -target x86_64-unknown-linux-gnu -o - \ // RUN: -emit-interface-stubs \ -// RUN: -interface-stub-version=experimental-yaml-elf-v1 -std=c99 -xc %s | \ +// RUN: -interface-stub-version=experimental-ifs-v1 -std=c99 -xc %s | \ // RUN: FileCheck -check-prefix=CHECK-STATIC %s // RUN: %clang -DSTORAGE="static" -target x86_64-linux-gnu -O0 -o - -c -std=c99 \ // RUN: -xc %s | llvm-nm - 2>&1 | FileCheck -check-prefix=CHECK-STATIC %s Index: clang/test/InterfaceStubs/class-template-specialization.cpp =================================================================== --- clang/test/InterfaceStubs/class-template-specialization.cpp +++ clang/test/InterfaceStubs/class-template-specialization.cpp @@ -1,10 +1,10 @@ // REQUIRES: x86-registered-target // RUN: %clang -target x86_64-unknown-linux-gnu -o - -emit-interface-stubs \ -// RUN: -interface-stub-version=experimental-tapi-elf-v1 %s | \ +// RUN: -interface-stub-version=experimental-ifs-v1 %s | \ // RUN: FileCheck -check-prefix=CHECK-TAPI %s // RUN: %clang -target x86_64-unknown-linux-gnu -o - -emit-interface-stubs \ -// RUN: -interface-stub-version=experimental-tapi-elf-v1 %s | \ +// RUN: -interface-stub-version=experimental-ifs-v1 %s | \ // RUN: FileCheck -check-prefix=CHECK-TAPI2 %s // RUN: %clang -target x86_64-unknown-linux-gnu -o - -c %s | \ // RUN: llvm-readelf -s - 2>&1 | \ Index: clang/test/InterfaceStubs/bad-format.cpp =================================================================== --- clang/test/InterfaceStubs/bad-format.cpp +++ clang/test/InterfaceStubs/bad-format.cpp @@ -3,6 +3,6 @@ // RUN: -interface-stub-version=bar-format %s 2>&1 | FileCheck %s // CHECK: error: invalid value -// CHECK: '-interface-stub-version=<experimental-tapi-elf-v1 | -// CHECK: experimental-yaml-elf-v1>' in 'Must specify a valid interface +// CHECK: '-interface-stub-version=<experimental-ifs-v1>' in 'Must specify a +// CHECK: valid interface // CHECK: stub format type using Index: clang/lib/FrontendTool/ExecuteCompilerInvocation.cpp =================================================================== --- clang/lib/FrontendTool/ExecuteCompilerInvocation.cpp +++ clang/lib/FrontendTool/ExecuteCompilerInvocation.cpp @@ -64,10 +64,6 @@ case GenerateHeaderModule: return std::make_unique<GenerateHeaderModuleAction>(); case GeneratePCH: return std::make_unique<GeneratePCHAction>(); - case GenerateInterfaceYAMLExpV1: - return std::make_unique<GenerateInterfaceYAMLExpV1Action>(); - case GenerateInterfaceTBEExpV1: - return std::make_unique<GenerateInterfaceTBEExpV1Action>(); case GenerateInterfaceIfsExpV1: return std::make_unique<GenerateInterfaceIfsExpV1Action>(); case InitOnly: return std::make_unique<InitOnlyAction>(); Index: clang/lib/Frontend/InterfaceStubFunctionsConsumer.cpp =================================================================== --- clang/lib/Frontend/InterfaceStubFunctionsConsumer.cpp +++ clang/lib/Frontend/InterfaceStubFunctionsConsumer.cpp @@ -246,114 +246,6 @@ for (const NamedDecl *ND : v.NamedDecls) HandleNamedDecl(ND, Symbols, FromTU); - auto writeIfoYaml = [this](const llvm::Triple &T, - const MangledSymbols &Symbols, - const ASTContext &context, StringRef Format, - raw_ostream &OS) -> void { - OS << "--- !" << Format << "\n"; - OS << "FileHeader:\n"; - OS << " Class: ELFCLASS"; - OS << (T.isArch64Bit() ? "64" : "32"); - OS << "\n"; - OS << " Data: ELFDATA2"; - OS << (T.isLittleEndian() ? "LSB" : "MSB"); - OS << "\n"; - OS << " Type: ET_REL\n"; - OS << " Machine: " - << llvm::StringSwitch<llvm::StringRef>(T.getArchName()) - .Case("x86_64", "EM_X86_64") - .Case("i386", "EM_386") - .Case("i686", "EM_386") - .Case("aarch64", "EM_AARCH64") - .Case("amdgcn", "EM_AMDGPU") - .Case("r600", "EM_AMDGPU") - .Case("arm", "EM_ARM") - .Case("thumb", "EM_ARM") - .Case("avr", "EM_AVR") - .Case("mips", "EM_MIPS") - .Case("mipsel", "EM_MIPS") - .Case("mips64", "EM_MIPS") - .Case("mips64el", "EM_MIPS") - .Case("msp430", "EM_MSP430") - .Case("ppc", "EM_PPC") - .Case("ppc64", "EM_PPC64") - .Case("ppc64le", "EM_PPC64") - .Case("x86", T.isOSIAMCU() ? "EM_IAMCU" : "EM_386") - .Case("x86_64", "EM_X86_64") - .Default("EM_NONE") - << "\nSymbols:\n"; - for (const auto &E : Symbols) { - const MangledSymbol &Symbol = E.second; - for (auto Name : Symbol.Names) { - OS << " - Name: " - << (Symbol.ParentName.empty() || Instance.getLangOpts().CPlusPlus - ? "" - : (Symbol.ParentName + ".")) - << Name << "\n" - << " Type: STT_"; - switch (Symbol.Type) { - default: - case llvm::ELF::STT_NOTYPE: - OS << "NOTYPE"; - break; - case llvm::ELF::STT_OBJECT: - OS << "OBJECT"; - break; - case llvm::ELF::STT_FUNC: - OS << "FUNC"; - break; - } - OS << "\n Binding: STB_" - << ((Symbol.Binding == llvm::ELF::STB_WEAK) ? "WEAK" : "GLOBAL") - << "\n"; - } - } - OS << "...\n"; - OS.flush(); - }; - - auto writeIfoElfAbiYaml = - [this](const llvm::Triple &T, const MangledSymbols &Symbols, - const ASTContext &context, StringRef Format, - raw_ostream &OS) -> void { - OS << "--- !" << Format << "\n"; - OS << "TbeVersion: 1.0\n"; - OS << "Arch: " << T.getArchName() << "\n"; - OS << "Symbols:\n"; - for (const auto &E : Symbols) { - const MangledSymbol &Symbol = E.second; - for (auto Name : Symbol.Names) { - OS << " " - << (Symbol.ParentName.empty() || Instance.getLangOpts().CPlusPlus - ? "" - : (Symbol.ParentName + ".")) - << Name << ": { Type: "; - switch (Symbol.Type) { - default: - llvm_unreachable( - "clang -emit-iterface-stubs: Unexpected symbol type."); - case llvm::ELF::STT_NOTYPE: - OS << "NoType"; - break; - case llvm::ELF::STT_OBJECT: { - auto VD = cast<ValueDecl>(E.first)->getType(); - OS << "Object, Size: " - << context.getTypeSizeInChars(VD).getQuantity(); - break; - } - case llvm::ELF::STT_FUNC: - OS << "Func"; - break; - } - if (Symbol.Binding == llvm::ELF::STB_WEAK) - OS << ", Weak: true"; - OS << " }\n"; - } - } - OS << "...\n"; - OS.flush(); - }; - auto writeIfsV1 = [this](const llvm::Triple &T, const MangledSymbols &Symbols, const ASTContext &context, StringRef Format, @@ -397,32 +289,11 @@ OS.flush(); }; - if (Format == "experimental-yaml-elf-v1") - writeIfoYaml(Instance.getTarget().getTriple(), Symbols, context, Format, - *OS); - else if (Format == "experimental-ifs-v1") - writeIfsV1(Instance.getTarget().getTriple(), Symbols, context, Format, - *OS); - else - writeIfoElfAbiYaml(Instance.getTarget().getTriple(), Symbols, context, - Format, *OS); + assert(Format == "experimental-ifs-v1" && "Unexpected IFS Format."); + writeIfsV1(Instance.getTarget().getTriple(), Symbols, context, Format, *OS); } }; -std::unique_ptr<ASTConsumer> -GenerateInterfaceYAMLExpV1Action::CreateASTConsumer(CompilerInstance &CI, - StringRef InFile) { - return std::make_unique<InterfaceStubFunctionsConsumer>( - CI, InFile, "experimental-yaml-elf-v1"); -} - -std::unique_ptr<ASTConsumer> -GenerateInterfaceTBEExpV1Action::CreateASTConsumer(CompilerInstance &CI, - StringRef InFile) { - return std::make_unique<InterfaceStubFunctionsConsumer>( - CI, InFile, "experimental-tapi-elf-v1"); -} - std::unique_ptr<ASTConsumer> GenerateInterfaceIfsExpV1Action::CreateASTConsumer(CompilerInstance &CI, StringRef InFile) { Index: clang/lib/Frontend/CompilerInvocation.cpp =================================================================== --- clang/lib/Frontend/CompilerInvocation.cpp +++ clang/lib/Frontend/CompilerInvocation.cpp @@ -1733,19 +1733,13 @@ Args.hasArg(OPT_iterface_stub_version_EQ) ? Args.getLastArgValue(OPT_iterface_stub_version_EQ) : "") - .Case("experimental-yaml-elf-v1", - frontend::GenerateInterfaceYAMLExpV1) - .Case("experimental-tapi-elf-v1", - frontend::GenerateInterfaceTBEExpV1) .Case("experimental-ifs-v1", frontend::GenerateInterfaceIfsExpV1) .Default(llvm::None); if (!ProgramAction) Diags.Report(diag::err_drv_invalid_value) << "Must specify a valid interface stub format type using " - << "-interface-stub-version=<experimental-tapi-elf-v1 | " - "experimental-ifs-v1 | " - "experimental-yaml-elf-v1>"; + << "-interface-stub-version=<experimental-ifs-v1>"; Opts.ProgramAction = *ProgramAction; break; } @@ -3186,8 +3180,6 @@ case frontend::GenerateModuleInterface: case frontend::GenerateHeaderModule: case frontend::GeneratePCH: - case frontend::GenerateInterfaceYAMLExpV1: - case frontend::GenerateInterfaceTBEExpV1: case frontend::GenerateInterfaceIfsExpV1: case frontend::ParseSyntaxOnly: case frontend::ModuleFileInfo: Index: clang/lib/Driver/ToolChains/Clang.cpp =================================================================== --- clang/lib/Driver/ToolChains/Clang.cpp +++ clang/lib/Driver/ToolChains/Clang.cpp @@ -3636,17 +3636,13 @@ Args.hasArg(options::OPT_iterface_stub_version_EQ) ? Args.getLastArgValue(options::OPT_iterface_stub_version_EQ) : "") - .Case("experimental-yaml-elf-v1", "experimental-yaml-elf-v1") - .Case("experimental-tapi-elf-v1", "experimental-tapi-elf-v1") .Case("experimental-ifs-v1", "experimental-ifs-v1") .Default(""); if (StubFormat.empty()) D.Diag(diag::err_drv_invalid_value) << "Must specify a valid interface stub format type using " - << "-interface-stub-version=<experimental-tapi-elf-v1 | " - "experimental-ifs-v1 | " - "experimental-yaml-elf-v1>"; + << "-interface-stub-version=<experimental-ifs-v1>"; CmdArgs.push_back("-emit-interface-stubs"); CmdArgs.push_back( Index: clang/include/clang/Frontend/FrontendOptions.h =================================================================== --- clang/include/clang/Frontend/FrontendOptions.h +++ clang/include/clang/Frontend/FrontendOptions.h @@ -90,8 +90,6 @@ GeneratePCH, /// Generate Interface Stub Files. - GenerateInterfaceYAMLExpV1, - GenerateInterfaceTBEExpV1, GenerateInterfaceIfsExpV1, /// Only execute frontend initialization. Index: clang/include/clang/Frontend/FrontendActions.h =================================================================== --- clang/include/clang/Frontend/FrontendActions.h +++ clang/include/clang/Frontend/FrontendActions.h @@ -126,19 +126,6 @@ bool hasASTFileSupport() const override { return false; } }; -// Support different interface stub formats this way: -class GenerateInterfaceYAMLExpV1Action : public GenerateInterfaceStubAction { -protected: - std::unique_ptr<ASTConsumer> CreateASTConsumer(CompilerInstance &CI, - StringRef InFile) override; -}; - -class GenerateInterfaceTBEExpV1Action : public GenerateInterfaceStubAction { -protected: - std::unique_ptr<ASTConsumer> CreateASTConsumer(CompilerInstance &CI, - StringRef InFile) override; -}; - class GenerateInterfaceIfsExpV1Action : public GenerateInterfaceStubAction { protected: std::unique_ptr<ASTConsumer> CreateASTConsumer(CompilerInstance &CI,
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits