Set ERROR in retValForCrash in SafetyGuard.call()
- allows to print ocloc command line after crash in compilation Signed-off-by: Mateusz Hoppe <mateusz.hoppe@intel.com>
This commit is contained in:
parent
8540aaff1c
commit
31a61a16c0
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright (C) 2018-2020 Intel Corporation
|
||||
* Copyright (C) 2018-2022 Intel Corporation
|
||||
*
|
||||
* SPDX-License-Identifier: MIT
|
||||
*
|
||||
|
@ -9,10 +9,10 @@
|
|||
|
||||
#include "../segfault_helper.h"
|
||||
|
||||
void generateSegfaultWithSafetyGuard(SegfaultHelper *segfaultHelper) {
|
||||
int generateSegfaultWithSafetyGuard(SegfaultHelper *segfaultHelper) {
|
||||
SafetyGuardLinux safetyGuard;
|
||||
safetyGuard.onSigSegv = segfaultHelper->segfaultHandlerCallback;
|
||||
int retVal = 0;
|
||||
int retVal = -60;
|
||||
|
||||
safetyGuard.call<int, SegfaultHelper, decltype(&SegfaultHelper::generateSegfault)>(segfaultHelper, &SegfaultHelper::generateSegfault, retVal);
|
||||
return safetyGuard.call<int, SegfaultHelper, decltype(&SegfaultHelper::generateSegfault)>(segfaultHelper, &SegfaultHelper::generateSegfault, retVal);
|
||||
}
|
||||
|
|
|
@ -13,7 +13,7 @@
|
|||
|
||||
#include <string>
|
||||
|
||||
extern void generateSegfaultWithSafetyGuard(SegfaultHelper *segfaultHelper);
|
||||
extern int generateSegfaultWithSafetyGuard(SegfaultHelper *segfaultHelper);
|
||||
|
||||
int main(int argc, char **argv) {
|
||||
int retVal = 0;
|
||||
|
@ -49,6 +49,7 @@ TEST(SegFault, givenCallWithSafetyGuardWhenSegfaultHappensThenCallstackIsPrinted
|
|||
SegfaultHelper segfault;
|
||||
segfault.segfaultHandlerCallback = captureAndCheckStdOut;
|
||||
|
||||
generateSegfaultWithSafetyGuard(&segfault);
|
||||
auto retVal = generateSegfaultWithSafetyGuard(&segfault);
|
||||
EXPECT_EQ(-60, retVal);
|
||||
#endif
|
||||
}
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright (C) 2018-2020 Intel Corporation
|
||||
* Copyright (C) 2018-2022 Intel Corporation
|
||||
*
|
||||
* SPDX-License-Identifier: MIT
|
||||
*
|
||||
|
@ -9,10 +9,10 @@
|
|||
|
||||
#include "opencl/test/unit_test/offline_compiler/segfault_test/segfault_helper.h"
|
||||
|
||||
void generateSegfaultWithSafetyGuard(SegfaultHelper *segfaultHelper) {
|
||||
int generateSegfaultWithSafetyGuard(SegfaultHelper *segfaultHelper) {
|
||||
SafetyGuardWindows safetyGuard;
|
||||
safetyGuard.onExcept = segfaultHelper->segfaultHandlerCallback;
|
||||
int retVal = 0;
|
||||
int retVal = -60;
|
||||
|
||||
safetyGuard.call<int, SegfaultHelper, decltype(&SegfaultHelper::generateSegfault)>(segfaultHelper, &SegfaultHelper::generateSegfault, retVal);
|
||||
return safetyGuard.call<int, SegfaultHelper, decltype(&SegfaultHelper::generateSegfault)>(segfaultHelper, &SegfaultHelper::generateSegfault, retVal);
|
||||
}
|
||||
|
|
|
@ -17,6 +17,7 @@ enum {
|
|||
INVALID_PROGRAM = -44,
|
||||
INVALID_COMMAND_LINE = -5150,
|
||||
INVALID_FILE = -5151,
|
||||
COMPILATION_CRASH = -5152,
|
||||
};
|
||||
|
||||
} // namespace NEO::OclocErrorCode
|
|
@ -5,6 +5,7 @@
|
|||
*
|
||||
*/
|
||||
|
||||
#include "shared/offline_compiler/source/ocloc_error_code.h"
|
||||
#include "shared/offline_compiler/source/offline_compiler.h"
|
||||
#include "shared/offline_compiler/source/offline_linker.h"
|
||||
#include "shared/offline_compiler/source/utilities/linux/safety_guard_linux.h"
|
||||
|
@ -14,14 +15,14 @@ using namespace NEO;
|
|||
|
||||
int buildWithSafetyGuard(OfflineCompiler *compiler) {
|
||||
SafetyGuardLinux safetyGuard;
|
||||
int retVal = 0;
|
||||
int retVal = NEO::OclocErrorCode::COMPILATION_CRASH;
|
||||
|
||||
return safetyGuard.call<int, OfflineCompiler, decltype(&OfflineCompiler::build)>(compiler, &OfflineCompiler::build, retVal);
|
||||
}
|
||||
|
||||
int linkWithSafetyGuard(OfflineLinker *linker) {
|
||||
SafetyGuardLinux safetyGuard{};
|
||||
int returnValueOnCrash{-1};
|
||||
int returnValueOnCrash{NEO::OclocErrorCode::COMPILATION_CRASH};
|
||||
|
||||
return safetyGuard.call(linker, &OfflineLinker::execute, returnValueOnCrash);
|
||||
}
|
||||
|
|
|
@ -5,6 +5,7 @@
|
|||
*
|
||||
*/
|
||||
|
||||
#include "shared/offline_compiler/source/ocloc_error_code.h"
|
||||
#include "shared/offline_compiler/source/offline_compiler.h"
|
||||
#include "shared/offline_compiler/source/offline_linker.h"
|
||||
#include "shared/offline_compiler/source/utilities/windows/safety_guard_windows.h"
|
||||
|
@ -13,13 +14,13 @@ using namespace NEO;
|
|||
|
||||
int buildWithSafetyGuard(OfflineCompiler *compiler) {
|
||||
SafetyGuardWindows safetyGuard;
|
||||
int retVal = 0;
|
||||
int retVal = NEO::OclocErrorCode::COMPILATION_CRASH;
|
||||
return safetyGuard.call<int, OfflineCompiler, decltype(&OfflineCompiler::build)>(compiler, &OfflineCompiler::build, retVal);
|
||||
}
|
||||
|
||||
int linkWithSafetyGuard(OfflineLinker *linker) {
|
||||
SafetyGuardWindows safetyGuard{};
|
||||
int returnValueOnCrash{-1};
|
||||
int returnValueOnCrash{NEO::OclocErrorCode::COMPILATION_CRASH};
|
||||
|
||||
return safetyGuard.call(linker, &OfflineLinker::execute, returnValueOnCrash);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue