Blame elf/tst-tls-surplus.c

Packit Service 3d9b0b
/* Test size of the static TLS surplus reservation for backwards compatibility.
Packit Service 3d9b0b
   Copyright (C) 2020 Free Software Foundation, Inc.
Packit Service 3d9b0b
   This file is part of the GNU C Library.
Packit Service 3d9b0b
Packit Service 3d9b0b
   The GNU C Library is free software; you can redistribute it and/or
Packit Service 3d9b0b
   modify it under the terms of the GNU Lesser General Public
Packit Service 3d9b0b
   License as published by the Free Software Foundation; either
Packit Service 3d9b0b
   version 2.1 of the License, or (at your option) any later version.
Packit Service 3d9b0b
Packit Service 3d9b0b
   The GNU C Library is distributed in the hope that it will be useful,
Packit Service 3d9b0b
   but WITHOUT ANY WARRANTY; without even the implied warranty of
Packit Service 3d9b0b
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
Packit Service 3d9b0b
   Lesser General Public License for more details.
Packit Service 3d9b0b
Packit Service 3d9b0b
   You should have received a copy of the GNU Lesser General Public
Packit Service 3d9b0b
   License along with the GNU C Library; if not, see
Packit Service 3d9b0b
   <https://www.gnu.org/licenses/>.  */
Packit Service 3d9b0b
Packit Service 3d9b0b
#include <stdio.h>
Packit Service 3d9b0b
#include <support/check.h>
Packit Service 3d9b0b
#include <support/xdlfcn.h>
Packit Service 3d9b0b
Packit Service 3d9b0b
static int do_test (void);
Packit Service 3d9b0b
#include <support/test-driver.c>
Packit Service 3d9b0b
Packit Service 3d9b0b
/* This hack results in a definition of struct rtld_global_ro.  Do
Packit Service 3d9b0b
   this after all the other header inclusions, to minimize the
Packit Service 3d9b0b
   impact.  */
Packit Service 3d9b0b
#define SHARED
Packit Service 3d9b0b
#include <ldsodefs.h>
Packit Service 3d9b0b
Packit Service 3d9b0b
static
Packit Service 3d9b0b
int do_test (void)
Packit Service 3d9b0b
{
Packit Service 3d9b0b
  /* Avoid introducing a copy relocation due to the hidden alias in
Packit Service 3d9b0b
     ld.so.  */
Packit Service 3d9b0b
  struct rtld_global_ro *glro = xdlsym (NULL, "_rtld_global_ro");
Packit Service 3d9b0b
  printf ("info: _dl_tls_static_surplus: %zu\n", glro->_dl_tls_static_surplus);
Packit Service 3d9b0b
  /* Hisoric value: 16 * 100 + 64.  */
Packit Service 3d9b0b
  TEST_VERIFY (glro->_dl_tls_static_surplus >= 1664);
Packit Service 3d9b0b
  return 0;
Packit Service 3d9b0b
}