| //===----------------------------------------------------------------------===// | |
| // | |
| // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. | |
| // See https://llvm.org/LICENSE.txt for license information. | |
| // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception | |
| // | |
| //===----------------------------------------------------------------------===// | |
| /// | |
| /// \file | |
| /// Loader test to check if r_debug is set correctly. | |
| /// | |
| //===----------------------------------------------------------------------===// | |
| #include "src/link/_r_debug.h" | |
| #include "test/IntegrationTest/test.h" | |
| extern "C" [[gnu::weak]] ElfW(Dyn) _DYNAMIC[]; | |
| TEST_MAIN() { | |
| ASSERT_EQ(LIBC_NAMESPACE::_r_debug.r_version, 1); | |
| ASSERT_EQ(LIBC_NAMESPACE::_r_debug.r_state, static_cast<int>(RT_CONSISTENT)); | |
| ASSERT_NE(LIBC_NAMESPACE::_r_debug.r_map, | |
| static_cast<struct link_map *>(nullptr)); | |
| ASSERT_NE(LIBC_NAMESPACE::_r_debug.r_brk, static_cast<ElfW(Addr)>(0)); | |
| ASSERT_EQ(LIBC_NAMESPACE::_r_debug.r_ldbase, | |
| LIBC_NAMESPACE::_r_debug.r_map->l_addr); | |
| struct link_map *map = LIBC_NAMESPACE::_r_debug.r_map; | |
| ASSERT_STREQ(map->l_name, ""); | |
| ASSERT_EQ(map->l_ld, _DYNAMIC); | |
| ASSERT_EQ(map->l_next, static_cast<struct link_map *>(nullptr)); | |
| ASSERT_EQ(map->l_prev, static_cast<struct link_map *>(nullptr)); | |
| return 0; | |
| } |