brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.3 KiB · 7567f69 Raw
39 lines · cpp
1//===-- Loader test to check if tls size is read correctly ----------------===//2//3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.4// See https://llvm.org/LICENSE.txt for license information.5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception6//7//===----------------------------------------------------------------------===//8 9#include "src/sys/mman/mmap.h"10#include "test/IntegrationTest/test.h"11 12#include <errno.h>13#include <sys/mman.h>14 15constexpr int threadLocalDataSize = 101;16_Thread_local int a[threadLocalDataSize] = {123};17 18TEST_MAIN([[maybe_unused]] int argc, [[maybe_unused]] char **argv,19          [[maybe_unused]] char **envp) {20  ASSERT_TRUE(a[0] == 123);21 22  for (int i = 1; i < threadLocalDataSize; ++i)23    a[i] = i;24  for (int i = 1; i < threadLocalDataSize; ++i)25    ASSERT_TRUE(a[i] == i);26 27  // Call mmap with bad params so that an error value is28  // set in errno. Since errno is implemented using a thread29  // local var, this helps us test setting of errno and30  // reading it back.31  ASSERT_ERRNO_SUCCESS();32  void *addr = LIBC_NAMESPACE::mmap(nullptr, 0, PROT_READ,33                                    MAP_ANONYMOUS | MAP_PRIVATE, -1, 0);34  ASSERT_TRUE(addr == MAP_FAILED);35  ASSERT_ERRNO_EQ(EINVAL);36 37  return 0;38}39