mirror of
https://github.com/intel/compute-runtime.git
synced 2026-01-03 06:49:52 +08:00
fix: correct loading L0 loader functions
on Windows use getModuleHandleA with proper module name don't load ze_loader.dll from file system Signed-off-by: Mateusz Jablonski <mateusz.jablonski@intel.com>
This commit is contained in:
committed by
Compute-Runtime-Automation
parent
deb27d0363
commit
9c7b3c5e19
@@ -34,14 +34,14 @@ TEST(OsLibraryTest, GivenValidNameWhenGettingFullPathAndDlinfoFailsThenPathIsEmp
|
||||
}
|
||||
return 0;
|
||||
});
|
||||
std::unique_ptr<OsLibrary> library(OsLibrary::loadFunc(Os::testDllName));
|
||||
std::unique_ptr<OsLibrary> library(OsLibrary::loadFunc({Os::testDllName}));
|
||||
EXPECT_NE(nullptr, library);
|
||||
std::string path = library->getFullPath();
|
||||
EXPECT_EQ(0u, path.size());
|
||||
}
|
||||
|
||||
TEST(OsLibraryTest, GivenValidLibNameWhenGettingFullPathThenPathIsNotEmpty) {
|
||||
std::unique_ptr<OsLibrary> library(OsLibrary::loadFunc(Os::testDllName));
|
||||
std::unique_ptr<OsLibrary> library(OsLibrary::loadFunc({Os::testDllName}));
|
||||
EXPECT_NE(nullptr, library);
|
||||
std::string path = library->getFullPath();
|
||||
EXPECT_NE(0u, path.size());
|
||||
@@ -59,7 +59,8 @@ TEST(OsLibraryTest, GivenDisableDeepBindFlagWhenOpeningLibraryThenRtldDeepBindFl
|
||||
VariableBackup<bool> dlOpenCalledBackup{&NEO::SysCalls::dlOpenCalled, false};
|
||||
|
||||
debugManager.flags.DisableDeepBind.set(1);
|
||||
auto lib = std::make_unique<Linux::OsLibrary>("_abc.so", nullptr);
|
||||
OsLibraryCreateProperties properties("_abc.so");
|
||||
auto lib = std::make_unique<Linux::OsLibrary>(properties);
|
||||
EXPECT_TRUE(NEO::SysCalls::dlOpenCalled);
|
||||
EXPECT_EQ(0, NEO::SysCalls::dlOpenFlags & RTLD_DEEPBIND);
|
||||
}
|
||||
@@ -68,7 +69,9 @@ TEST(OsLibraryTest, GivenInvalidLibraryWhenOpeningLibraryThenDlopenErrorIsReturn
|
||||
VariableBackup<bool> dlOpenCalledBackup{&NEO::SysCalls::dlOpenCalled, false};
|
||||
|
||||
std::string errorValue;
|
||||
auto lib = std::make_unique<Linux::OsLibrary>("_abc.so", &errorValue);
|
||||
OsLibraryCreateProperties properties("_abc.so");
|
||||
properties.errorValue = &errorValue;
|
||||
auto lib = std::make_unique<Linux::OsLibrary>(properties);
|
||||
EXPECT_FALSE(errorValue.empty());
|
||||
EXPECT_TRUE(NEO::SysCalls::dlOpenCalled);
|
||||
}
|
||||
@@ -76,12 +79,33 @@ TEST(OsLibraryTest, GivenInvalidLibraryWhenOpeningLibraryThenDlopenErrorIsReturn
|
||||
TEST(OsLibraryTest, GivenLoadFlagsOverwriteWhenOpeningLibraryThenDlOpenIsCalledWithExpectedFlags) {
|
||||
VariableBackup<int> dlOpenFlagsBackup{&NEO::SysCalls::dlOpenFlags, 0};
|
||||
VariableBackup<bool> dlOpenCalledBackup{&NEO::SysCalls::dlOpenCalled, false};
|
||||
VariableBackup<bool> dlOpenCaptureFileNameBackup{&NEO::SysCalls::captureDlOpenFilePath, true};
|
||||
|
||||
auto expectedFlag = RTLD_LAZY | RTLD_GLOBAL;
|
||||
NEO::OsLibrary::loadFlagsOverwrite = &expectedFlag;
|
||||
auto lib = std::make_unique<Linux::OsLibrary>("_abc.so", nullptr);
|
||||
OsLibraryCreateProperties properties("_abc.so");
|
||||
properties.customLoadFlags = &expectedFlag;
|
||||
auto lib = std::make_unique<Linux::OsLibrary>(properties);
|
||||
EXPECT_TRUE(NEO::SysCalls::dlOpenCalled);
|
||||
EXPECT_EQ(NEO::SysCalls::dlOpenFlags, expectedFlag);
|
||||
EXPECT_EQ(properties.libraryName, NEO::SysCalls::dlOpenFilePathPassed);
|
||||
}
|
||||
|
||||
TEST(OsLibraryTest, WhenPerformSelfOpenThenIgnoreFileNameForDlOpenCall) {
|
||||
VariableBackup<bool> dlOpenCalledBackup{&NEO::SysCalls::dlOpenCalled, false};
|
||||
VariableBackup<bool> dlOpenCaptureFileNameBackup{&NEO::SysCalls::captureDlOpenFilePath, true};
|
||||
|
||||
OsLibraryCreateProperties properties("_abc.so");
|
||||
properties.performSelfLoad = false;
|
||||
auto lib = std::make_unique<Linux::OsLibrary>(properties);
|
||||
EXPECT_TRUE(NEO::SysCalls::dlOpenCalled);
|
||||
EXPECT_EQ(properties.libraryName, NEO::SysCalls::dlOpenFilePathPassed);
|
||||
NEO::SysCalls::dlOpenCalled = false;
|
||||
|
||||
properties.performSelfLoad = true;
|
||||
lib = std::make_unique<Linux::OsLibrary>(properties);
|
||||
EXPECT_TRUE(NEO::SysCalls::dlOpenCalled);
|
||||
EXPECT_NE(properties.libraryName, NEO::SysCalls::dlOpenFilePathPassed);
|
||||
EXPECT_TRUE(NEO::SysCalls::dlOpenFilePathPassed.empty());
|
||||
}
|
||||
|
||||
} // namespace NEO
|
||||
|
||||
Reference in New Issue
Block a user