Blame elf/tst-tls-surplus.c

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