Patchwork [v5] Y2038: make __difftime compatible with 64-bit time

login
register
mail settings
Submitter Joseph Myers
Date Dec. 21, 2018, 6:55 p.m.
Message ID <alpine.DEB.2.21.1812211854290.10148@digraph.polyomino.org.uk>
Download mbox | patch
Permalink /patch/30801/
State New
Headers show

Comments

Joseph Myers - Dec. 21, 2018, 6:55 p.m.
On Fri, 21 Dec 2018, H.J. Lu wrote:

> This caused:
> 
> https://sourceware.org/bugzilla/show_bug.cgi?id=24023

I am testing this patch and will commit if the tests pass.


Update nios2, sparc32 localplt.data for difftime changes (bug 24023).

The recent difftime changes introduced localplt test failures on nios2
and sparc32, two configurations where some soft-fp functions are
defined in / exported from libc.so, and where the difftime changes
affected the particular set of floating-point operations used in
libc.so.  This patch adds those functions to localplt.data, alongside
other such functions already there.  (In the sparc32 case, and more
generally on any platform where long double is a software
floating-point type, it would probably be more efficient to avoid
using long double at all in difftime, but that's a pre-existing
issue.)

Tested with build-many-glibcs.py for its nios2 and sparcv9
configurations.

2018-12-21  Joseph Myers  <joseph@codesourcery.com>

	[BZ #24023]
	* sysdeps/unix/sysv/linux/nios2/localplt.data: Allow __floatundidf
	PLT reference in libc.so.
	* sysdeps/unix/sysv/linux/sparc/sparc32/localplt.data: Allow
	_Q_lltoq and _Q_qtod PLT references in libc.so.

Patch

diff --git a/sysdeps/unix/sysv/linux/nios2/localplt.data b/sysdeps/unix/sysv/linux/nios2/localplt.data
index 4430a5891e..3805ed56b9 100644
--- a/sysdeps/unix/sysv/linux/nios2/localplt.data
+++ b/sysdeps/unix/sysv/linux/nios2/localplt.data
@@ -26,6 +26,7 @@  libc.so: __divsf3
 libc.so: __nedf2
 libc.so: __eqdf2
 libc.so: __extendsfdf2
+libc.so: __floatundidf ?
 libm.so: matherr
 # The main malloc is interposed into the dynamic linker, for
 # allocations after the initial link (when dlopen is used).
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/localplt.data b/sysdeps/unix/sysv/linux/sparc/sparc32/localplt.data
index 1668f4017e..6bf10ff858 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc32/localplt.data
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/localplt.data
@@ -8,8 +8,10 @@  libc.so: _Q_fle ?
 libc.so: _Q_flt ?
 libc.so: _Q_fne ?
 libc.so: _Q_itoq ?
+libc.so: _Q_lltoq ?
 libc.so: _Q_mul ?
 libc.so: _Q_sub ?
+libc.so: _Q_qtod ?
 libc.so: _Unwind_Find_FDE
 libc.so: calloc
 libc.so: free