Browse Source

add libc version compatibility

Waldemar Brodkorb 6 years ago
parent
commit
5d5338562e

+ 33 - 0
include/gnu/libc-version.h

@@ -0,0 +1,33 @@
+/* Interface to GNU libc specific functions for version information.
+   Copyright (C) 1998-2018 Free Software Foundation, Inc.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#ifndef _GNU_LIBC_VERSION_H
+#define	_GNU_LIBC_VERSION_H	1
+
+#include <features.h>
+
+__BEGIN_DECLS
+
+/* Return string describing release status of currently running GNU libc.  */
+extern const char *gnu_get_libc_release (void) __THROW;
+
+/* Return string describing version of currently running GNU libc.  */
+extern const char *gnu_get_libc_version (void) __THROW;
+
+__END_DECLS
+
+#endif	/* gnu/libc-version.h */

+ 1 - 1
libc/misc/internals/Makefile.in

@@ -8,7 +8,7 @@
 subdirs += libc/misc/internals
 
 CSRC-y := tempname.c errno.c h_errno.c __errno_location.c __h_errno_location.c \
-	parse_config.c
+	parse_config.c version.c
 
 MISC_INTERNALS_DIR := $(top_srcdir)libc/misc/internals
 MISC_INTERNALS_OUT := $(top_builddir)libc/misc/internals

+ 65 - 0
libc/misc/internals/version.c

@@ -0,0 +1,65 @@
+/* Copyright (C) 1992-2018 Free Software Foundation, Inc.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#include "version.h"
+#include <gnu/libc-version.h>
+
+static const char __libc_release[] = RELEASE;
+static const char __libc_version[] = VERSION;
+
+static const char banner[] =
+"uClibc-ng "RELEASE" release version "VERSION".\n\
+Copyright (C) 2018 Waldemar Brodkorb <wbx@uclibc-ng.org>\n\
+This is free software; see the source for copying conditions.\n\
+There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A\n\
+PARTICULAR PURPOSE.\n\
+Compiled by GNU CC version "__VERSION__".\n";
+
+#include <unistd.h>
+
+extern void __libc_print_version (void) attribute_hidden;
+void
+__libc_print_version (void)
+{
+  write (STDOUT_FILENO, banner, sizeof banner - 1);
+}
+
+extern const char *__gnu_get_libc_release (void);
+const char *
+__gnu_get_libc_release (void)
+{
+  return __libc_release;
+}
+weak_alias (__gnu_get_libc_release, gnu_get_libc_release)
+
+extern const char *__gnu_get_libc_version (void);
+const char *
+__gnu_get_libc_version (void)
+{
+  return __libc_version;
+}
+weak_alias (__gnu_get_libc_version, gnu_get_libc_version)
+
+/* This function is the entry point for the shared object.
+   Running the library as a program will get here.  */
+
+extern void __libc_main (void) __attribute__ ((noreturn));
+void
+__libc_main (void)
+{
+  __libc_print_version ();
+  _exit (0);
+}

+ 4 - 0
libc/misc/internals/version.h

@@ -0,0 +1,4 @@
+/* This file just defines the current version number of libc.  */
+
+#define RELEASE "release"
+#define VERSION __stringify(__UCLIBC_MAJOR__) "." __stringify(__UCLIBC_MINOR__) "." __stringify(__UCLIBC_SUBLEVEL__)

+ 0 - 4
libpthread/nptl/sysdeps/pthread/uClibc-glue.h

@@ -39,8 +39,4 @@ extern int __cxa_atexit (void (*func) (void *), void *arg, void *d);
 # define __uselocale(x) ((void)0)
 #endif
 
-/* Use a funky version in a probably vein attempt at preventing gdb
- * from dlopen()'ing glibc's libthread_db library... */
-#define VERSION __stringify(__UCLIBC_MAJOR__) "." __stringify(__UCLIBC_MINOR__) "." __stringify(__UCLIBC_SUBLEVEL__)
-
 #endif