From 77223cb3db759fea1b6ff9286173c1c9037bfd57 Mon Sep 17 00:00:00 2001 From: "Galantsev, Dmitrii" Date: Mon, 12 Dec 2022 14:07:44 -0600 Subject: [PATCH 1/2] CMAKE: Resolve lib dependencies for tests amdsmitst was failing and not finding libgtest and libamd_smi. This change resolves the issue by 1. Installing gtest into tests directory 2. Modifying RUNPATH variable to point to libamd_smi.so Change-Id: I126d01c88116d37c5f2b55b9ecb2c9f1313f26fe Signed-off-by: Galantsev, Dmitrii [ROCm/amdsmi commit: 0c52236abd4d99d9621400b9837bda1f20147260] --- projects/amdsmi/tests/amd_smi_test/CMakeLists.txt | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/projects/amdsmi/tests/amd_smi_test/CMakeLists.txt b/projects/amdsmi/tests/amd_smi_test/CMakeLists.txt index 87766c521a..c5be99ae21 100644 --- a/projects/amdsmi/tests/amd_smi_test/CMakeLists.txt +++ b/projects/amdsmi/tests/amd_smi_test/CMakeLists.txt @@ -1,6 +1,12 @@ # Required Defines first: option(INSTALL_GTEST "Install GTest (only useful if GTest is not already installed)" OFF) +# Help tests find libraries at runtime +set(CMAKE_EXE_LINKER_FLAGS "-Wl,--enable-new-dtags") +set(CMAKE_INSTALL_RPATH + "\$ORIGIN:\$ORIGIN/../../../lib" + CACHE STRING "RUNPATH for tests. Helps find libgtest.so and libamd_smi.so") + # Try to find googletest find_package(GTest 1.11.0) @@ -58,7 +64,9 @@ add_executable(${TEST} ${tstSources} ${functionalSources}) target_link_libraries(${TEST} amd_smi c stdc++ pthread GTest::gtest_main) +# Install tests and gtest +# TODO: Remove GTest from here in the future and rely on INSTALL_GTEST? install( - TARGETS ${TEST} + TARGETS ${TEST} gtest gtest_main DESTINATION ${SHARE_INSTALL_PREFIX}/tests/amd_smi COMPONENT tests) From 00c054475d7a319c4989be79b3573b7f864d09f2 Mon Sep 17 00:00:00 2001 From: "Galantsev, Dmitrii" Date: Mon, 12 Dec 2022 15:19:14 -0600 Subject: [PATCH 2/2] SWDEV-372949 - Resolve ASAN failure Change-Id: I622ba5e8fc4d30d98dae365a67a0b0e99ffae3a5 Signed-off-by: Galantsev, Dmitrii [ROCm/amdsmi commit: a255393b5c9baf103cfef7e9a6355edde3c10067] --- projects/amdsmi/example/amd_smi_drm_example.cc | 4 ++-- projects/amdsmi/example/amd_smi_nodrm_example.cc | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/projects/amdsmi/example/amd_smi_drm_example.cc b/projects/amdsmi/example/amd_smi_drm_example.cc index 173d09576a..430651768d 100644 --- a/projects/amdsmi/example/amd_smi_drm_example.cc +++ b/projects/amdsmi/example/amd_smi_drm_example.cc @@ -369,9 +369,9 @@ int main() { if (!num_pages) { printf("\tNo bad pages found.\n"); } else { - amdsmi_retired_page_record_t bad_page_info[num_pages] = {}; + std::vector bad_page_info(num_pages); ret = amdsmi_get_bad_page_info(device_handles[j], &num_pages, - bad_page_info); + bad_page_info.data()); CHK_AMDSMI_RET(ret) for (uint32_t page_it = 0; page_it < num_pages; page_it += 1) { printf(" Page[%d]\n", page_it); diff --git a/projects/amdsmi/example/amd_smi_nodrm_example.cc b/projects/amdsmi/example/amd_smi_nodrm_example.cc index 35059ece90..77690b3ae0 100644 --- a/projects/amdsmi/example/amd_smi_nodrm_example.cc +++ b/projects/amdsmi/example/amd_smi_nodrm_example.cc @@ -252,9 +252,9 @@ int main() { if (!num_pages) { printf("\tNo bad pages found.\n"); } else { - amdsmi_retired_page_record_t bad_page_info[num_pages] = {}; + std::vector bad_page_info(num_pages); ret = amdsmi_get_bad_page_info(device_handles[j], &num_pages, - bad_page_info); + bad_page_info.data()); CHK_AMDSMI_RET(ret) for (uint32_t page_it = 0; page_it < num_pages; page_it += 1) { printf(" Page[%d]\n", page_it);