| // Copyright 2023 The Fuchsia Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "load-tests.h" |
| |
| namespace ld::testing { |
| namespace { |
| |
| TYPED_TEST(LdLoadTests, LoadWithNeeded) { |
| constexpr int64_t kReturnValue = 17; |
| |
| ASSERT_NO_FATAL_FAILURE(this->Init()); |
| |
| // There is only a reference to ld.so which doesn't need to be loaded to |
| // satisfy. |
| ASSERT_NO_FATAL_FAILURE(this->Needed(std::initializer_list<std::string_view>{})); |
| |
| ASSERT_NO_FATAL_FAILURE(this->Load("ld-dep")); |
| |
| EXPECT_EQ(this->Run(), kReturnValue); |
| |
| this->ExpectLog(""); |
| } |
| |
| TYPED_TEST(LdLoadTests, BasicDep) { |
| constexpr int64_t kReturnValue = 17; |
| |
| ASSERT_NO_FATAL_FAILURE(this->Init()); |
| |
| ASSERT_NO_FATAL_FAILURE(this->Needed({"libld-dep-a.so"})); |
| |
| ASSERT_NO_FATAL_FAILURE(this->Load("basic-dep")); |
| |
| EXPECT_EQ(this->Run(), kReturnValue); |
| |
| this->ExpectLog(""); |
| } |
| |
| TYPED_TEST(LdLoadTests, IndirectDeps) { |
| constexpr int64_t kReturnValue = 17; |
| |
| ASSERT_NO_FATAL_FAILURE(this->Init()); |
| |
| ASSERT_NO_FATAL_FAILURE(this->Needed({ |
| "libindirect-deps-a.so", |
| "libindirect-deps-b.so", |
| "libindirect-deps-c.so", |
| })); |
| |
| ASSERT_NO_FATAL_FAILURE(this->Load("indirect-deps")); |
| |
| EXPECT_EQ(this->Run(), kReturnValue); |
| |
| this->ExpectLog(""); |
| } |
| |
| TYPED_TEST(LdLoadTests, ManyDeps) { |
| constexpr int64_t kReturnValue = 17; |
| |
| ASSERT_NO_FATAL_FAILURE(this->Init()); |
| |
| ASSERT_NO_FATAL_FAILURE(this->Needed({ |
| "libld-dep-a.so", |
| "libld-dep-b.so", |
| "libld-dep-f.so", |
| "libld-dep-c.so", |
| "libld-dep-d.so", |
| "libld-dep-e.so", |
| })); |
| |
| ASSERT_NO_FATAL_FAILURE(this->Load("many-deps")); |
| |
| EXPECT_EQ(this->Run(), kReturnValue); |
| |
| this->ExpectLog(""); |
| } |
| |
| } // namespace |
| } // namespace ld::testing |