mirror of
https://github.com/intel/compute-runtime.git
synced 2025-12-27 07:44:16 +08:00
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:
committed by
sys_ocldev
parent
a39660de92
commit
3d35bf4291
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user