mirror of
https://github.com/llvm/llvm-project.git
synced 2025-04-26 02:46:08 +00: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
28 lines
857 B
C++
28 lines
857 B
C++
//===--- Phases.cpp - Transformations on Driver Types ---------------------===//
|
|
//
|
|
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
|
|
// See https://llvm.org/LICENSE.txt for license information.
|
|
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#include "clang/Driver/Phases.h"
|
|
#include "llvm/Support/ErrorHandling.h"
|
|
#include <cassert>
|
|
|
|
using namespace clang::driver;
|
|
|
|
const char *phases::getPhaseName(ID Id) {
|
|
switch (Id) {
|
|
case Preprocess: return "preprocessor";
|
|
case Precompile: return "precompiler";
|
|
case Compile: return "compiler";
|
|
case Backend: return "backend";
|
|
case Assemble: return "assembler";
|
|
case Link: return "linker";
|
|
case IfsMerge: return "ifsmerger";
|
|
}
|
|
|
|
llvm_unreachable("Invalid phase id.");
|
|
}
|