Fix Source Level Debugger scenario

- when Program is compiled and linked, kernel debug options must be
added when linking
- when linking by CompilerInterface, store debugData in Program

Change-Id: Ie93a8fa7586681b94307a30c109c103f78ec861a
This commit is contained in:
Hoppe, Mateusz
2018-12-05 10:58:08 +01:00
committed by sys_ocldev
parent a39660de92
commit 3d35bf4291
9 changed files with 142 additions and 61 deletions

View File

@@ -65,24 +65,19 @@ cl_int Program::build(
}
TranslationArgs inputArgs = {};
if (strcmp(sourceCode.c_str(), "") == 0) {
retVal = CL_INVALID_PROGRAM;
break;
}
if (isKernelDebugEnabled()) {
internalOptions.append(CompilerOptions::debugKernelEnable);
options.append(" -g ");
if (pDevice->getSourceLevelDebugger()) {
if (pDevice->getSourceLevelDebugger()->isOptimizationDisabled()) {
options.append("-cl-opt-disable ");
}
std::string filename;
pDevice->getSourceLevelDebugger()->notifySourceCode(sourceCode.c_str(), sourceCode.size(), filename);
if (!filename.empty()) {
// Add "-s" flag first so it will be ignored by clang in case the options already have this flag set.
options = std::string("-s ") + filename + " " + options;
}
std::string filename;
appendKernelDebugOptions();
notifyDebuggerWithSourceCode(filename);
if (!filename.empty()) {
// Add "-s" flag first so it will be ignored by clang in case the options already have this flag set.
options = std::string("-s ") + filename + " " + options;
}
}
@@ -143,6 +138,23 @@ cl_int Program::build(
return retVal;
}
bool Program::appendKernelDebugOptions() {
internalOptions.append(CompilerOptions::debugKernelEnable);
options.append(" -g ");
if (pDevice->getSourceLevelDebugger()) {
if (pDevice->getSourceLevelDebugger()->isOptimizationDisabled()) {
options.append("-cl-opt-disable ");
}
}
return true;
}
void Program::notifyDebuggerWithSourceCode(std::string &filename) {
if (pDevice->getSourceLevelDebugger()) {
pDevice->getSourceLevelDebugger()->notifySourceCode(sourceCode.c_str(), sourceCode.size(), filename);
}
}
cl_int Program::build(const cl_device_id device, const char *buildOptions, bool enableCaching,
std::unordered_map<std::string, BuiltinDispatchInfoBuilder *> &builtinsMap) {
auto ret = this->build(1, &device, buildOptions, nullptr, nullptr, enableCaching);