cling/lib/Interpreter/RequiredSymbols.cpp
2016-12-19 13:59:11 +01:00

46 lines
1.8 KiB
C++

//------------------------------------------------------------------------------
// CLING - the C++ LLVM-based InterpreterG :)
// author: Axel Naumann <axel@cern.ch>
//
// This file is dual-licensed: you can choose to license it under the University
// of Illinois Open Source License or the GNU Lesser General Public License. See
// LICENSE.TXT for details.
//------------------------------------------------------------------------------
#include "cling/Interpreter/Interpreter.h"
//#include "cling/Interpreter/CValuePrinter.h"
#include "cling/Interpreter/DynamicExprInfo.h"
#include "cling/Interpreter/InterpreterCallbacks.h"
#include "cling/Interpreter/LookupHelper.h"
#include "cling/Utils/Output.h"
#include "clang/AST/Type.h"
extern "C"
void* cling_runtime_internal_throwIfInvalidPointer(void* Sema, void* Expr,
const void* Arg);
namespace cling {
namespace internal {
void symbol_requester() {
const char* const argv[] = {"libcling__symbol_requester", 0};
Interpreter I(1, argv);
//cling_PrintValue(0);
// sharedPtr is needed for SLC6 with devtoolset2:
// Redhat re-uses libstdc++ from GCC 4.4 and patches missing symbols into
// the binary through an archive. We need to pull more symbols from the
// archive to make them available to cling. This list will possibly need to
// grow...
std::shared_ptr<int> sp;
Interpreter* SLC6DevToolSet = (Interpreter*)(void*)&sp;
LookupHelper h(0,SLC6DevToolSet);
h.findType("", LookupHelper::NoDiagnostics);
h.findScope("", LookupHelper::NoDiagnostics);
h.findFunctionProto(0, "", "", LookupHelper::NoDiagnostics);
h.findFunctionArgs(0, "", "", LookupHelper::NoDiagnostics);
runtime::internal::DynamicExprInfo DEI(0,0,false);
DEI.getExpr();
cling_runtime_internal_throwIfInvalidPointer(nullptr, nullptr, nullptr);
}
}
}