From 4731a734bd6788839e97fde5cb3836c690cd71b2 Mon Sep 17 00:00:00 2001 From: foreman Date: Fri, 31 May 2019 10:55:14 -0400 Subject: [PATCH] P4 to Git Change 1790162 by wchau@wchau_OCL_boltzmann on 2019/05/31 10:46:27 SWDEV-162389 - OpenCL Support for COMgr - direct the COMgr log to buildLog_ buffer Affected files ... ... //depot/stg/opencl/drivers/opencl/runtime/device/devprogram.cpp#43 edit --- rocclr/runtime/device/devprogram.cpp | 42 ++++++++-------------------- 1 file changed, 11 insertions(+), 31 deletions(-) diff --git a/rocclr/runtime/device/devprogram.cpp b/rocclr/runtime/device/devprogram.cpp index 6881d275f3..b87626f868 100644 --- a/rocclr/runtime/device/devprogram.cpp +++ b/rocclr/runtime/device/devprogram.cpp @@ -200,8 +200,11 @@ void Program::extractBuildLog(const char* buildLog, amd_comgr_data_set_t dataSet status = amd::Comgr::action_data_count(dataSet, AMD_COMGR_DATA_KIND_LOG, &count); if (status == AMD_COMGR_STATUS_SUCCESS && count > 0) { - const std::string logName(buildLog); - status = extractByteCodeBinary(dataSet, AMD_COMGR_DATA_KIND_LOG, logName); + char* logData = nullptr; + size_t logSize; + status = extractByteCodeBinary(dataSet, AMD_COMGR_DATA_KIND_LOG, "", &logData, &logSize); + buildLog_ += logData; + free(logData); } } if (status != AMD_COMGR_STATUS_SUCCESS) { @@ -254,36 +257,13 @@ amd_comgr_status_t Program::extractByteCodeBinary(const amd_comgr_data_set_t inD } // save the binary to the file as output file name is specified - // For log dataset, outputs are directed to stdout and stderr if - // the file name is "stdout" and "stderr", respectively. if (!outFileName.empty()) { - std::ios_base::openmode mode = std::ios::trunc | std::ios::binary; - - bool done = false; - // handle the log outputs - if (dataKind == AMD_COMGR_DATA_KIND_LOG) { - if (binarySize == 0) { // nothing to output - done = true; - } else if (outFileName.compare("stdout") == 0) { - std::cout << binary << std::endl; - done = true; - } else if (outFileName.compare("stderr") == 0) { - std::cerr << binary << std::endl; - done = true; - } else { - mode = std::ios::app; // use append mode for the log outputs - } - } - - // output to file - if (!done) { - std::ofstream f(outFileName.c_str(), mode); - if (f.is_open()) { - f.write(binary, binarySize); - f.close(); - } else { - buildLog_ += "Warning: opening the file to dump the code failed.\n"; - } + std::ofstream f(outFileName.c_str(), std::ios::trunc); + if (f.is_open()) { + f.write(binary, binarySize); + f.close(); + } else { + buildLog_ += "Warning: opening the file to dump the code failed.\n"; } }