(root)/
glibc-2.38/
csu/
version.c
       1  /* Copyright (C) 1992-2023 Free Software Foundation, Inc.
       2     This file is part of the GNU C Library.
       3  
       4     The GNU C Library is free software; you can redistribute it and/or
       5     modify it under the terms of the GNU Lesser General Public
       6     License as published by the Free Software Foundation; either
       7     version 2.1 of the License, or (at your option) any later version.
       8  
       9     The GNU C Library is distributed in the hope that it will be useful,
      10     but WITHOUT ANY WARRANTY; without even the implied warranty of
      11     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
      12     Lesser General Public License for more details.
      13  
      14     You should have received a copy of the GNU Lesser General Public
      15     License along with the GNU C Library; if not, see
      16     <https://www.gnu.org/licenses/>.  */
      17  
      18  #include "version.h"
      19  #include <tls.h>
      20  #include <libc-abis.h>
      21  #include <gnu/libc-version.h>
      22  
      23  static const char __libc_release[] = RELEASE;
      24  static const char __libc_version[] = VERSION;
      25  
      26  static const char banner[] =
      27  "GNU C Library "PKGVERSION RELEASE" release version "VERSION".\n\
      28  Copyright (C) 2023 Free Software Foundation, Inc.\n\
      29  This is free software; see the source for copying conditions.\n\
      30  There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A\n\
      31  PARTICULAR PURPOSE.\n\
      32  Compiled by GNU CC version "__VERSION__".\n"
      33  #ifdef LIBC_ABIS_STRING
      34  LIBC_ABIS_STRING
      35  #endif
      36  #ifdef __LINUX_KERNEL_VERSION_STR
      37  "Minimum supported kernel: " __LINUX_KERNEL_VERSION_STR "\n"
      38  #endif
      39  "For bug reporting instructions, please see:\n\
      40  "REPORT_BUGS_TO".\n";
      41  
      42  #include <unistd.h>
      43  
      44  extern void __libc_print_version (void) attribute_hidden;
      45  void
      46  __libc_print_version (void)
      47  {
      48    __write (STDOUT_FILENO, banner, sizeof banner - 1);
      49  }
      50  
      51  extern const char *__gnu_get_libc_release (void);
      52  const char *
      53  __gnu_get_libc_release (void)
      54  {
      55    return __libc_release;
      56  }
      57  weak_alias (__gnu_get_libc_release, gnu_get_libc_release)
      58  
      59  extern const char *__gnu_get_libc_version (void);
      60  const char *
      61  __gnu_get_libc_version (void)
      62  {
      63    return __libc_version;
      64  }
      65  weak_alias (__gnu_get_libc_version, gnu_get_libc_version)
      66  
      67  /* This function is the entry point for the shared object.
      68     Running the library as a program will get here.  */
      69  
      70  extern void __libc_main (void) __attribute__ ((noreturn));
      71  void
      72  __libc_main (void)
      73  {
      74    __libc_print_version ();
      75    _exit (0);
      76  }