about summary refs log tree commit diff
diff options
context:
space:
mode:
authorJoseph Myers <joseph@codesourcery.com>2017-01-19 20:57:16 +0000
committerJoseph Myers <joseph@codesourcery.com>2017-01-19 20:57:16 +0000
commitfe3f0488daaec2fb8c3af181b6e8e4567ba2cf61 (patch)
tree894e56acb22bdc3097b452f4e00ff5b95b7a804e
parent41389c40499a083c59e68ba281ec87be567f2871 (diff)
downloadglibc-fe3f0488daaec2fb8c3af181b6e8e4567ba2cf61.tar.gz
glibc-fe3f0488daaec2fb8c3af181b6e8e4567ba2cf61.tar.xz
glibc-fe3f0488daaec2fb8c3af181b6e8e4567ba2cf61.zip
Restore clock_* librt exports for MicroBlaze (bug 21061).
MicroBlaze had clock_* functions exported from librt in glibc 2.18 and
2.19, as confirmed in
<https://sourceware.org/ml/libc-alpha/2017-01/msg00369.html>, and they
then disappeared in 2.20, presumably as a result of the fix
<https://sourceware.org/ml/libc-alpha/2014-02/msg00598.html> for a
Versions.def bug that had resulted in their unintended inclusion in
2.18 (followed by removal of the Versions.def mechanism that allowed
such bugs).

As they were released in that library, they should be considered part
of the GLIBC_2.18 ABI and so restored for the sake of any binaries
that expect them in that library.  This patch restores them by adding
a MicroBlaze version of clock-compat.c that overrides SHLIB_COMPAT.

Tested (compilation only) with build-many-glibcs.py (where this fixes
the librt ABI test failure; elf/check-execstack still fails and still
needs architecture maintainer attention to fix it or XFAIL it with an
appropriate explanatory comment).

	[BZ #21061]
	* sysdeps/unix/sysv/linux/microblaze/clock-compat.c: New file.
-rw-r--r--ChangeLog5
-rw-r--r--sysdeps/unix/sysv/linux/microblaze/clock-compat.c31
2 files changed, 36 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index c59c6a951d..896231a0f1 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2017-01-19  Joseph Myers  <joseph@codesourcery.com>
+
+	[BZ #21061]
+	* sysdeps/unix/sysv/linux/microblaze/clock-compat.c: New file.
+
 2017-01-19  Siddhesh Poyarekar  <siddhesh@sourceware.org>
 
 	* elf/dl-tunables (get_next_env): Always advance envp.
diff --git a/sysdeps/unix/sysv/linux/microblaze/clock-compat.c b/sysdeps/unix/sysv/linux/microblaze/clock-compat.c
new file mode 100644
index 0000000000..e5959d5c74
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/microblaze/clock-compat.c
@@ -0,0 +1,31 @@
+/* ABI compatibility redirects for clock_* symbols in librt.
+   MicroBlaze version.
+   Copyright (C) 2017 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   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 <shlib-compat.h>
+
+/* These symbols were accidentally included in librt for MicroBlaze
+   despite the first release coming after the general obsoletion in
+   librt, so ensure they remain as part of the ABI.  */
+
+#ifdef SHARED
+# undef SHLIB_COMPAT
+# define SHLIB_COMPAT(lib, introduced, obsoleted) 1
+#endif
+
+#include <rt/clock-compat.c>