No public description
PiperOrigin-RevId: 641333713
Change-Id: I6b832555ed1da79783e9180d680b9ed36c59d08d
diff --git a/cheriot/BUILD b/cheriot/BUILD
index 0193342..4e700d1 100644
--- a/cheriot/BUILD
+++ b/cheriot/BUILD
@@ -291,7 +291,7 @@
deps = [
":cheriot_top",
":debug_command_shell",
- "@com_github_serge1_elfio//:elfio",
+ "//third_party/elfio",
"@com_google_absl//absl/container:btree",
"@com_google_absl//absl/functional:any_invocable",
"@com_google_absl//absl/log",
diff --git a/cheriot/profiler.cc b/cheriot/profiler.cc
index c20bdc8..9e90cec 100644
--- a/cheriot/profiler.cc
+++ b/cheriot/profiler.cc
@@ -23,7 +23,7 @@
#include "absl/numeric/bits.h"
#include "absl/strings/str_cat.h"
#include "absl/strings/str_format.h"
-#include "elfio/elf_types.hpp"
+#include "third_party/elfio/elfio/elf_types.hpp"
namespace mpact::sim::cheriot {
diff --git a/cheriot/test/BUILD b/cheriot/test/BUILD
index 08d716c..a7894ae 100644
--- a/cheriot/test/BUILD
+++ b/cheriot/test/BUILD
@@ -30,6 +30,7 @@
"@com_google_absl//absl/random",
"@com_google_absl//absl/strings",
"@com_google_absl//absl/types:span",
+ "@com_google_googletest//:gtest_for_library_testonly",
"@com_google_mpact-riscv//riscv:riscv_state",
"@com_google_mpact-sim//mpact/sim/generic:instruction",
"@com_google_mpact-sim//mpact/sim/util/memory",
@@ -214,3 +215,17 @@
"@com_google_mpact-sim//mpact/sim/generic:core",
],
)
+
+cc_test(
+ name = "librenode_mpact_cheriot.so_test",
+ size = "small",
+ srcs = ["librenode_mpact_cheriot_so_test.cc"],
+ data = [
+ "//cheriot:renode_mpact_cheriot",
+ ],
+ deps = [
+ "@com_google_absl//absl/debugging:leak_check",
+ "@com_google_absl//absl/strings",
+ "@com_google_googletest//:gtest_main",
+ ],
+)
diff --git a/cheriot/test/librenode_mpact_cheriot_so_test.cc b/cheriot/test/librenode_mpact_cheriot_so_test.cc
new file mode 100644
index 0000000..38a3522
--- /dev/null
+++ b/cheriot/test/librenode_mpact_cheriot_so_test.cc
@@ -0,0 +1,92 @@
+#include <dlfcn.h>
+
+#include <string>
+
+#include "absl/debugging/leak_check.h"
+#include "absl/strings/str_cat.h"
+#include "googlemock/include/gmock/gmock.h"
+
+namespace {
+
+constexpr char kFileName[] = "librenode_mpact_cheriot.so";
+
+constexpr char kDepotPath[] = "cheriot/";
+
+class LibRenodeMpactCheriotSoTest : public ::testing::Test {
+ protected:
+ LibRenodeMpactCheriotSoTest() {
+ std::string path = absl::StrCat(kDepotPath, kFileName);
+ absl::LeakCheckDisabler disabler; // Ignore leaks from dlopen.
+ lib_ = dlopen(path.c_str(), RTLD_LAZY);
+ }
+
+ ~LibRenodeMpactCheriotSoTest() { dlclose(lib_); }
+
+ void *lib_ = nullptr;
+};
+
+TEST_F(LibRenodeMpactCheriotSoTest, Construct) {
+ EXPECT_NE(dlsym(lib_, "construct"), nullptr);
+}
+
+TEST_F(LibRenodeMpactCheriotSoTest, ConstructWithSysbus) {
+ EXPECT_NE(dlsym(lib_, "construct_with_sysbus"), nullptr);
+}
+
+TEST_F(LibRenodeMpactCheriotSoTest, Connect) {
+ EXPECT_NE(dlsym(lib_, "connect"), nullptr);
+}
+
+TEST_F(LibRenodeMpactCheriotSoTest, ConnectWithSysbus) {
+ EXPECT_NE(dlsym(lib_, "connect_with_sysbus"), nullptr);
+}
+
+TEST_F(LibRenodeMpactCheriotSoTest, Destruct) {
+ EXPECT_NE(dlsym(lib_, "destruct"), nullptr);
+}
+
+TEST_F(LibRenodeMpactCheriotSoTest, GetRegInfoSize) {
+ EXPECT_NE(dlsym(lib_, "get_reg_info_size"), nullptr);
+}
+
+TEST_F(LibRenodeMpactCheriotSoTest, GetRegInfo) {
+ EXPECT_NE(dlsym(lib_, "get_reg_info"), nullptr);
+}
+
+TEST_F(LibRenodeMpactCheriotSoTest, LoadElf) {
+ EXPECT_NE(dlsym(lib_, "load_elf"), nullptr);
+}
+
+TEST_F(LibRenodeMpactCheriotSoTest, ReadRegister) {
+ EXPECT_NE(dlsym(lib_, "read_register"), nullptr);
+}
+
+TEST_F(LibRenodeMpactCheriotSoTest, WriteRegister) {
+ EXPECT_NE(dlsym(lib_, "write_register"), nullptr);
+}
+
+TEST_F(LibRenodeMpactCheriotSoTest, ReadMemory) {
+ EXPECT_NE(dlsym(lib_, "read_memory"), nullptr);
+}
+
+TEST_F(LibRenodeMpactCheriotSoTest, WriteMemory) {
+ EXPECT_NE(dlsym(lib_, "write_memory"), nullptr);
+}
+
+TEST_F(LibRenodeMpactCheriotSoTest, Reset) {
+ EXPECT_NE(dlsym(lib_, "reset"), nullptr);
+}
+
+TEST_F(LibRenodeMpactCheriotSoTest, Step) {
+ EXPECT_NE(dlsym(lib_, "step"), nullptr);
+}
+
+TEST_F(LibRenodeMpactCheriotSoTest, SetConfig) {
+ EXPECT_NE(dlsym(lib_, "set_config"), nullptr);
+}
+
+TEST_F(LibRenodeMpactCheriotSoTest, SetIrqValue) {
+ EXPECT_NE(dlsym(lib_, "set_irq_value"), nullptr);
+}
+
+} // namespace