SWDEV-258808 - OCLSeparateCompile subtest of oclcompiler error

[PAL to KFD/ROCr][ROCr_Runtime][Vega10] OCLSeparateCompile subtest of
oclcompiler from ocltst test package is encountering clLinkProgram()
failed (chksum 0x00000001) error

If runtime does not provide a file name as dump file to ELF library,
ELF library use a temp file in current folder.
The current folder can be not writable for several reasons:
1. The application current folder might be system folder, the user
  does not have write permission.
2. The current folder is under a readonly file system. This happens for
embedded customers.

Tested in VEGA10. Issue was fixed.

Change-Id: Ic0e9f040b7c7583914301673cce237ab28b0c0cb
This commit is contained in:
Alex Xie
2020-11-13 14:39:10 -05:00
committed by AlexBin Xie
vanhempi 7c7e36dd44
commit 6327dbc4cc
3 muutettua tiedostoa jossa 19 lisäystä ja 3 poistoa
+9 -1
Näytä tiedosto
@@ -749,6 +749,10 @@ bool ClBinary::createElfBinary(bool doencrypt, Program::type_t type) {
return false;
}
if (tempFile_) {
std::remove(fname_.c_str());
}
#if defined(HAVE_BLOWFISH_H)
if (doencrypt) {
// Increase the size by 64 to accomodate extra headers
@@ -863,7 +867,8 @@ void ClBinary::resetElfIn() {
}
}
bool ClBinary::setElfOut(unsigned char eclass, const char* outFile) {
bool ClBinary::setElfOut(unsigned char eclass,
const char* outFile, bool tempFile) {
elfOut_ = new amd::Elf(eclass, nullptr, 0, outFile, amd::Elf::ELF_C_WRITE);
if ((elfOut_ == nullptr) || !elfOut_->isSuccessful()) {
if (elfOut_) {
@@ -874,6 +879,9 @@ bool ClBinary::setElfOut(unsigned char eclass, const char* outFile) {
return false;
}
fname_ = outFile;
tempFile_ = tempFile;
return setElfTarget();
}