-
Notifications
You must be signed in to change notification settings - Fork 10.8k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[ORC][LLJIT] Move enable-debugger-support utility out of LLJITBuilder.
This change means that debugger support only needs to be linked in if it's used. The code size of debugger support is expected to increase as we improve it (e.g. pulling in DWARF parsing), so making it an optional extra is useful for controlling final binary sizes.
- Loading branch information
Showing
10 changed files
with
118 additions
and
75 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,28 @@ | ||
//===-- DebugerSupport.h - Utils for enabling debugger support --*- C++ -*-===// | ||
// | ||
// 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 | ||
// | ||
//===----------------------------------------------------------------------===// | ||
// | ||
// Utilities for enabling debugger support. | ||
// | ||
//===----------------------------------------------------------------------===// | ||
|
||
#ifndef LLVM_EXECUTIONENGINE_ORC_DEBUGGERSUPPORT_H | ||
#define LLVM_EXECUTIONENGINE_ORC_DEBUGGERSUPPORT_H | ||
|
||
#include "llvm/Support/Error.h" | ||
|
||
namespace llvm { | ||
namespace orc { | ||
|
||
class LLJIT; | ||
|
||
Error enableDebuggerSupport(LLJIT &J); | ||
|
||
} // namespace orc | ||
} // namespace llvm | ||
|
||
#endif // LLVM_EXECUTIONENGINE_ORC_DEBUGGERSUPPORT_H |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,61 @@ | ||
//===------ DebuggerSupport.cpp - Utils for enabling debugger support -----===// | ||
// | ||
// 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 "llvm/ExecutionEngine/Orc/DebuggerSupport.h" | ||
#include "llvm/ExecutionEngine/Orc/DebugObjectManagerPlugin.h" | ||
#include "llvm/ExecutionEngine/Orc/DebuggerSupportPlugin.h" | ||
#include "llvm/ExecutionEngine/Orc/LLJIT.h" | ||
|
||
#define DEBUG_TYPE "orc" | ||
|
||
using namespace llvm; | ||
using namespace llvm::orc; | ||
|
||
namespace llvm::orc { | ||
|
||
Error enableDebuggerSupport(LLJIT &J) { | ||
auto *ObjLinkingLayer = dyn_cast<ObjectLinkingLayer>(&J.getObjLinkingLayer()); | ||
if (!ObjLinkingLayer) | ||
return make_error<StringError>("Cannot enable LLJIT debugger support: " | ||
"Debugger support requires JITLink", | ||
inconvertibleErrorCode()); | ||
auto ProcessSymsJD = J.getProcessSymbolsJITDylib(); | ||
if (!ProcessSymsJD) | ||
return make_error<StringError>("Cannot enable LLJIT debugger support: " | ||
"Process symbols are not available", | ||
inconvertibleErrorCode()); | ||
|
||
auto &ES = J.getExecutionSession(); | ||
const auto &TT = J.getTargetTriple(); | ||
|
||
switch (TT.getObjectFormat()) { | ||
case Triple::ELF: { | ||
auto Registrar = createJITLoaderGDBRegistrar(ES); | ||
if (!Registrar) | ||
return Registrar.takeError(); | ||
ObjLinkingLayer->addPlugin(std::make_unique<DebugObjectManagerPlugin>( | ||
ES, std::move(*Registrar), true, true)); | ||
return Error::success(); | ||
} | ||
case Triple::MachO: { | ||
auto DS = GDBJITDebugInfoRegistrationPlugin::Create(ES, *ProcessSymsJD, TT); | ||
if (!DS) | ||
return DS.takeError(); | ||
ObjLinkingLayer->addPlugin(std::move(*DS)); | ||
return Error::success(); | ||
} | ||
default: | ||
return make_error<StringError>( | ||
"Cannot enable LLJIT debugger support: " + | ||
Triple::getObjectFormatTypeName(TT.getObjectFormat()) + | ||
" is not supported", | ||
inconvertibleErrorCode()); | ||
} | ||
} | ||
|
||
} // namespace llvm::orc |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
e1a5bb5
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@lhames
Some of your recent patches breaks https://lab.llvm.org/buildbot/#/builders/168/builds/15831
Not sure if it works fixing, or just disable these tests with asan/hwasan
e1a5bb5
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.