diff options
author | H.J. Lu <hjl.tools@gmail.com> | 2015-07-12 14:41:20 -0700 |
---|---|---|
committer | H.J. Lu <hjl.tools@gmail.com> | 2015-08-05 08:36:27 -0700 |
commit | 72354ab5e1d61dec7606a8851f0eb1bb016f7af7 (patch) | |
tree | b38c5c886dcc21eeb4c8cd31c27f5a1b0bf67f99 | |
parent | b4425b95ad64e5945ea9674f888561d725747128 (diff) | |
download | glibc-72354ab5e1d61dec7606a8851f0eb1bb016f7af7.tar glibc-72354ab5e1d61dec7606a8851f0eb1bb016f7af7.tar.gz glibc-72354ab5e1d61dec7606a8851f0eb1bb016f7af7.tar.bz2 glibc-72354ab5e1d61dec7606a8851f0eb1bb016f7af7.zip |
Align stack to 16 bytes when calling __errno_location
We should align stack to 16 bytes when calling __errno_location.
[BZ #18661]
* sysdeps/x86_64/fpu/s_cosf.S (__cosf): Align stack to 16 bytes
when calling __errno_location.
* sysdeps/x86_64/fpu/s_sincosf.S (__sincosf): Likewise.
* sysdeps/x86_64/fpu/s_sinf.S (__sinf): Likewise.
-rw-r--r-- | ChangeLog | 8 | ||||
-rw-r--r-- | NEWS | 2 | ||||
-rw-r--r-- | sysdeps/x86_64/fpu/s_cosf.S | 6 | ||||
-rw-r--r-- | sysdeps/x86_64/fpu/s_sincosf.S | 6 | ||||
-rw-r--r-- | sysdeps/x86_64/fpu/s_sinf.S | 6 |
5 files changed, 27 insertions, 1 deletions
@@ -1,6 +1,14 @@ 2015-08-05 H.J. Lu <hongjiu.lu@intel.com> [BZ #18661] + * sysdeps/x86_64/fpu/s_cosf.S (__cosf): Align stack to 16 bytes + when calling __errno_location. + * sysdeps/x86_64/fpu/s_sincosf.S (__sincosf): Likewise. + * sysdeps/x86_64/fpu/s_sinf.S (__sinf): Likewise. + +2015-08-05 H.J. Lu <hongjiu.lu@intel.com> + + [BZ #18661] * sysdeps/unix/sysv/linux/x86_64/lowlevellock.S (__lll_timedwait_tid): Align stack to 16 bytes when calling __gettimeofday. @@ -8,7 +8,7 @@ using `glibc' in the "product" field. Version 2.23 * The following bugs are resolved with this release: - 18265, 18525, 18647. + 18265, 18525, 18647, 18661. Version 2.22 diff --git a/sysdeps/x86_64/fpu/s_cosf.S b/sysdeps/x86_64/fpu/s_cosf.S index b7868ceb20..bea10ef089 100644 --- a/sysdeps/x86_64/fpu/s_cosf.S +++ b/sysdeps/x86_64/fpu/s_cosf.S @@ -310,8 +310,14 @@ L(arg_inf_or_nan): /* Here if |x| is Inf or NAN */ jne L(skip_errno_setting) /* in case of x is NaN */ + /* Align stack to 16 bytes. */ + subq $8, %rsp + cfi_adjust_cfa_offset (8) /* Here if x is Inf. Set errno to EDOM. */ call JUMPTARGET(__errno_location) + addq $8, %rsp + cfi_adjust_cfa_offset (-8) + movl $EDOM, (%rax) .p2align 4 diff --git a/sysdeps/x86_64/fpu/s_sincosf.S b/sysdeps/x86_64/fpu/s_sincosf.S index 21db70a88b..a2f313338f 100644 --- a/sysdeps/x86_64/fpu/s_sincosf.S +++ b/sysdeps/x86_64/fpu/s_sincosf.S @@ -354,8 +354,14 @@ L(arg_inf_or_nan): /* Here if |x| is Inf or NAN */ jne L(skip_errno_setting) /* in case of x is NaN */ + /* Align stack to 16 bytes. */ + subq $8, %rsp + cfi_adjust_cfa_offset (8) /* Here if x is Inf. Set errno to EDOM. */ call JUMPTARGET(__errno_location) + addq $8, %rsp + cfi_adjust_cfa_offset (-8) + movl $EDOM, (%rax) .p2align 4 diff --git a/sysdeps/x86_64/fpu/s_sinf.S b/sysdeps/x86_64/fpu/s_sinf.S index dc921641de..90afbe8e5f 100644 --- a/sysdeps/x86_64/fpu/s_sinf.S +++ b/sysdeps/x86_64/fpu/s_sinf.S @@ -336,8 +336,14 @@ L(arg_inf_or_nan): /* Here if |x| is Inf or NAN */ jne L(skip_errno_setting) /* in case of x is NaN */ + /* Align stack to 16 bytes. */ + subq $8, %rsp + cfi_adjust_cfa_offset (8) /* Here if x is Inf. Set errno to EDOM. */ call JUMPTARGET(__errno_location) + addq $8, %rsp + cfi_adjust_cfa_offset (-8) + movl $EDOM, (%rax) .p2align 4 |