diff mbox

Correct MicroBlaze librt ABI list

Message ID alpine.DEB.2.20.1701032135220.14638@digraph.polyomino.org.uk
State New
Headers show

Commit Message

Joseph Myers Jan. 3, 2017, 9:36 p.m. UTC
Running compile tests for MicroBlaze shows ABI test failures in librt
because of the absence of clock_* symbols.  This absence seems
correct, since those symbols moved to libc before the port was added;
that is, this seems like a mistake in the ABI baseline, and this patch
removes them from it.  Unfortunately, there are no MicroBlaze test
results on any of the per-release wiki pages to confirm if this test
has indeed been failing all along since the port was added.

Tested (compilation tests) with build-many-glibcs.py.

2017-01-03  Joseph Myers  <joseph@codesourcery.com>

	* sysdeps/unix/sysv/linux/microblaze/librt.abilist (GLIBC_2.18):
	Remove clock_getcpuclockid, clock_getres, clock_gettime,
	clock_nanosleep and clock_settime.

Comments

Joseph Myers Jan. 9, 2017, 4:14 p.m. UTC | #1
Ping.  This patch 
<https://sourceware.org/ml/libc-alpha/2017-01/msg00094.html> is pending 
review.  Can someone confirm these functions have indeed been absent from 
MicroBlaze librt all along?
Joseph Myers Jan. 17, 2017, 10:50 p.m. UTC | #2
Ping^2.  This patch 
<https://sourceware.org/ml/libc-alpha/2017-01/msg00094.html> is still 
pending review.  Can someone confirm these functions have indeed been 
absent from MicroBlaze librt all along?
Adhemerval Zanella Netto Jan. 18, 2017, 12:47 p.m. UTC | #3
On 17/01/2017 20:50, Joseph Myers wrote:
> Ping^2.  This patch 
> <https://sourceware.org/ml/libc-alpha/2017-01/msg00094.html> is still 
> pending review.  Can someone confirm these functions have indeed been 
> absent from MicroBlaze librt all along?
> 

I am not sure if it is suffice to confirm the symbol existence, but
I could build a microblaze-linux-gnu using 2.18 release branch (with
minor adjustment on configure to not fail with make 4.*) and these
symbol indeed are present on librt:

glibc/build/microblaze-linux-gnu$ objdump -t rt/librt.so | grep clock_
000062a8 g     F .text  00000030              clock_gettime
00006308 g     F .text  00000030              clock_getcpuclockid
00006278 g     F .text  00000030              clock_getres
00000000       F *UND*  00000000              __clock_nanosleep@@GLIBC_PRIVATE
00000000       F *UND*  00000000              __clock_getres@@GLIBC_PRIVATE
00000000       F *UND*  00000000              __clock_gettime@@GLIBC_PRIVATE
00006338 g     F .text  00000030              clock_nanosleep
000062d8 g     F .text  00000030              clock_settime
00000000       F *UND*  00000000              __clock_getcpuclockid@@GLIBC_PRIVATE
00000000       F *UND*  00000000              __clock_settime@@GLIBC_PRIVATE
Joseph Myers Jan. 18, 2017, 1:42 p.m. UTC | #4
On Wed, 18 Jan 2017, Adhemerval Zanella wrote:

> I am not sure if it is suffice to confirm the symbol existence, but
> I could build a microblaze-linux-gnu using 2.18 release branch (with
> minor adjustment on configure to not fail with make 4.*) and these
> symbol indeed are present on librt:
> 
> glibc/build/microblaze-linux-gnu$ objdump -t rt/librt.so | grep clock_

objdump -T (--dynamic-syms) output, showing the symbol versions, would be 
more useful.

If the symbols are indeed part of the librt ABI for MicroBlaze we need a 
more complicated fix to ensure they are present in that library with 
current sources.  I suspect the cause of the symbols being present would 
have been the Versions.def issue fixed by 
<https://sourceware.org/ml/libc-alpha/2014-02/msg00598.html>.
Adhemerval Zanella Netto Jan. 18, 2017, 2:43 p.m. UTC | #5
On 18/01/2017 11:42, Joseph Myers wrote:
> On Wed, 18 Jan 2017, Adhemerval Zanella wrote:
> 
>> I am not sure if it is suffice to confirm the symbol existence, but
>> I could build a microblaze-linux-gnu using 2.18 release branch (with
>> minor adjustment on configure to not fail with make 4.*) and these
>> symbol indeed are present on librt:
>>
>> glibc/build/microblaze-linux-gnu$ objdump -t rt/librt.so | grep clock_
> 
> objdump -T (--dynamic-syms) output, showing the symbol versions, would be 
> more useful.

$ objdump -T rt/librt.so | grep clock_
00000000      DF *UND*  00000000  GLIBC_PRIVATE __clock_nanosleep
00000000      DF *UND*  00000000  GLIBC_PRIVATE __clock_getres
00000000      DF *UND*  00000000  GLIBC_PRIVATE __clock_gettime
00000000      DF *UND*  00000000  GLIBC_PRIVATE __clock_getcpuclockid
00000000      DF *UND*  00000000  GLIBC_PRIVATE __clock_settime
00006278 g    DF .text  00000030  GLIBC_2.18  clock_getres
000062a8 g    DF .text  00000030  GLIBC_2.18  clock_gettime
00006308 g    DF .text  00000030  GLIBC_2.18  clock_getcpuclockid
00006338 g    DF .text  00000030  GLIBC_2.18  clock_nanosleep
000062d8 g    DF .text  00000030  GLIBC_2.18  clock_settime

It indeed shows the symbols being exported the 2.18 version.

> 
> If the symbols are indeed part of the librt ABI for MicroBlaze we need a 
> more complicated fix to ensure they are present in that library with 
> current sources.  I suspect the cause of the symbols being present would 
> have been the Versions.def issue fixed by 
> <https://sourceware.org/ml/libc-alpha/2014-02/msg00598.html>.
> 

The symbols seems to be removed on 2.20 release and 2.23 also have these
symbols absent (I could not verify on 2.21 and 2.22 since the build is 
broken on microblaze with my current GCC 6.2.1 toolchain).

So we have potentially two releases with these symbol on librt.so (2.18
and 2.19).  I am not sure which is the best course of action in this
case, if it would be better to just follow the default practice to
assume no librt symbols or follow old release behaviour.
diff mbox

Patch

diff --git a/sysdeps/unix/sysv/linux/microblaze/librt.abilist b/sysdeps/unix/sysv/linux/microblaze/librt.abilist
index 9f6ecb0..e672dfc 100644
--- a/sysdeps/unix/sysv/linux/microblaze/librt.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/librt.abilist
@@ -15,11 +15,6 @@  GLIBC_2.18 aio_suspend F
 GLIBC_2.18 aio_suspend64 F
 GLIBC_2.18 aio_write F
 GLIBC_2.18 aio_write64 F
-GLIBC_2.18 clock_getcpuclockid F
-GLIBC_2.18 clock_getres F
-GLIBC_2.18 clock_gettime F
-GLIBC_2.18 clock_nanosleep F
-GLIBC_2.18 clock_settime F
 GLIBC_2.18 lio_listio F
 GLIBC_2.18 lio_listio64 F
 GLIBC_2.18 mq_close F