This is an automated email from the git hooks/post-receive script. sthibault pushed a commit to branch glibc-2.26 in repository glibc.
commit d7574d3921eb1381e72b1f7f97dcfb869bcbea8f Author: Samuel Thibault <samuel.thiba...@ens-lyon.org> Date: Sun Sep 10 19:13:38 2017 +0000 patches/hurd-i386/unsubmitted-exp-hidden-jump.diff: New patch --- debian/changelog | 1 + .../hurd-i386/unsubmitted-exp-hidden-jump.diff | 76 ++++++++++++++++++++++ debian/patches/series | 1 + debian/testsuite-xfail-debian.mk | 10 ++- 4 files changed, 85 insertions(+), 3 deletions(-) diff --git a/debian/changelog b/debian/changelog index 3aa45f7..5a78ab7 100644 --- a/debian/changelog +++ b/debian/changelog @@ -76,6 +76,7 @@ glibc (2.26-0experimental0) UNRELEASED; urgency=medium - patches/hurd-i386/cvs-truncate64.diff: Remove unused merged patch. - patches/hurd-i386/git-tst-udp-timeout.diff: New patch. - patches/hurd-i386/submitted-resolv.diff: New patch. + - patches/hurd-i386/unsubmitted-exp-hidden-jump.diff: New patch. - testsuite-xfail-debian.mk: Update with new tests failing on hurd-i386. -- Adam Conrad <adcon...@0c3.net> Sat, 02 Sep 2017 12:15:10 -0600 diff --git a/debian/patches/hurd-i386/unsubmitted-exp-hidden-jump.diff b/debian/patches/hurd-i386/unsubmitted-exp-hidden-jump.diff new file mode 100644 index 0000000..a2964b4 --- /dev/null +++ b/debian/patches/hurd-i386/unsubmitted-exp-hidden-jump.diff @@ -0,0 +1,76 @@ +hidden jump can not work in these snippets in the NO_HIDDEN case, because %ebx +is not set as PIC register, and thus one can't use the @plt version. + +Until we avoid using NO_HIDDEN (see +https://sourceware.org/bugzilla/show_bug.cgi?id=15605#c5), we need this. + +diff --git a/sysdeps/i386/fpu/e_expl.S b/sysdeps/i386/fpu/e_expl.S +index 7d75fe22a1..8c06f5c3ee 100644 +--- a/sysdeps/i386/fpu/e_expl.S ++++ b/sysdeps/i386/fpu/e_expl.S +@@ -81,7 +81,13 @@ ENTRY(IEEE754_EXPL) + movzwl 4+8(%esp), %eax + xorb $0x80, %ah // invert sign bit (now 1 is "positive") + cmpl $0xc006, %eax // is num positive and exp >= 6 (number is >= 128.0)? ++ #if !defined(PIC) || !defined(NO_HIDDEN) + jae HIDDEN_JUMPTARGET (__expl) // (if num is denormal, it is at least >= 64.0) ++ #else ++ jb 0f ++ jmp __expl // (if num is denormal, it is at least >= 64.0) ++0: ++ #endif + #endif + fldt 4(%esp) + /* I added the following ugly construct because expl(+-Inf) resulted +diff --git a/sysdeps/i386/fpu/e_powl.S b/sysdeps/i386/fpu/e_powl.S +index 9e162848e4..04f07dcc5e 100644 +--- a/sysdeps/i386/fpu/e_powl.S ++++ b/sysdeps/i386/fpu/e_powl.S +@@ -242,7 +242,11 @@ ENTRY(__ieee754_powl) + cfi_adjust_cfa_offset (28) + fstpt 12(%esp) // x + fstpt (%esp) // <empty> ++ #if !defined(PIC) || !defined(NO_HIDDEN) + call HIDDEN_JUMPTARGET (__powl_helper) // <result> ++ #else ++ call __powl_helper // <result> ++ #endif + addl $36, %esp + cfi_adjust_cfa_offset (-36) + ret +diff --git a/sysdeps/i386/fpu/s_expm1.S b/sysdeps/i386/fpu/s_expm1.S +index 59fded2d5a..60096d23ae 100644 +--- a/sysdeps/i386/fpu/s_expm1.S ++++ b/sysdeps/i386/fpu/s_expm1.S +@@ -51,7 +51,13 @@ ENTRY(__expm1) + movzwl 4+6(%esp), %eax + xorb $0x80, %ah // invert sign bit (now 1 is "positive") + cmpl $0xc086, %eax // is num >= 704? ++ #if !defined(PIC) || !defined(NO_HIDDEN) + jae HIDDEN_JUMPTARGET (__exp) ++ #else ++ jb 0f ++ jmp __exp ++0: ++ #endif + + fldl 4(%esp) // x + fxam // Is NaN, +-Inf or +-0? +diff --git a/sysdeps/i386/fpu/s_expm1f.S b/sysdeps/i386/fpu/s_expm1f.S +index 4f0b2e7832..51d5aa8c4f 100644 +--- a/sysdeps/i386/fpu/s_expm1f.S ++++ b/sysdeps/i386/fpu/s_expm1f.S +@@ -51,7 +51,13 @@ ENTRY(__expm1f) + movzwl 4+2(%esp), %eax + xorb $0x80, %ah // invert sign bit (now 1 is "positive") + cmpl $0xc2b1, %eax // is num >= 88.5? ++ #if !defined(PIC) || !defined(NO_HIDDEN) + jae HIDDEN_JUMPTARGET (__expf) ++ #else ++ jb 0f ++ jmp __expf ++0: ++ #endif + + flds 4(%esp) // x + fxam // Is NaN, +-Inf or +-0? diff --git a/debian/patches/series b/debian/patches/series index 67bb03b..0520a20 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -155,6 +155,7 @@ hurd-i386/git-clone.diff hurd-i386/git-gethostname.diff hurd-i386/git-tst-udp-timeout.diff hurd-i386/submitted-resolv.diff +hurd-i386/unsubmitted-exp-hidden-jump.diff i386/local-biarch.diff i386/unsubmitted-quiet-ldconfig.diff diff --git a/debian/testsuite-xfail-debian.mk b/debian/testsuite-xfail-debian.mk index 4047754..1d93915 100644 --- a/debian/testsuite-xfail-debian.mk +++ b/debian/testsuite-xfail-debian.mk @@ -171,9 +171,9 @@ test-xfail-check-abi-librt = yes # Overzealous test test-xfail-tst-pathconf = yes -# Need investigation -test-xfail-check-execstack = yes -test-xfail-check-localplt = yes +# This jumps to bogus place from sysdeps/i386/fpu/e_expl.S' +# jae HIDDEN_JUMPTARGET (__expl) +# This jumps to __expl@plt, but %ebx is not set as PIC register! test-xfail-test-ifloat-expm1 = yes test-xfail-test-ifloat-sinh = yes test-xfail-test-idouble-expm1 = yes @@ -183,6 +183,10 @@ test-xfail-test-ildouble-expm1 = yes test-xfail-test-ildouble-sinh = yes test-xfail-test-ldouble-expm1 = yes test-xfail-test-ldouble-finite-expm1 = yes + +# Need investigation +test-xfail-check-execstack = yes +test-xfail-check-localplt = yes test-xfail-tst-aio10 = yes test-xfail-tst-aio9 = yes test-xfail-tst-audit1 = yes -- Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-glibc/glibc.git