c2879fd933
* Thu Jan 13 2022 Florian Weimer <fweimer@redhat.com> - 2.34-18 - Backport optimized ELF dependency sorting algorithm (#2032647) * Thu Jan 13 2022 Florian Weimer <fweimer@redhat.com> - 2.34-17 - Sync with upstream branch release/2.34/master, commit 2fe2af88abd13ae5636881da2e26f461ecb7dfb5 - i386: Remove broken CAN_USE_REGISTER_ASM_EBP (bug 28771) - Update syscall lists for Linux 5.15 - powerpc: Fix unrecognized instruction errors with recent GCC - timezone: test-case for BZ #28707 - timezone: handle truncated timezones from tzcode-2021d and later (BZ #28707) - Fix subscript error with odd TZif file [BZ #28338] - AArch64: Check for SVE in ifuncs [BZ #28744] - intl/plural.y: Avoid conflicting declarations of yyerror and yylex - Linux: Fix 32-bit vDSO for clock_gettime on powerpc32 - linux: Add sparck brk implementation - Update sparc libm-test-ulps - Update hppa libm-test-ulps - riscv: align stack before calling _dl_init [BZ #28703] - riscv: align stack in clone [BZ #28702] - powerpc64[le]: Allocate extra stack frame on syscall.S - elf: Fix tst-cpu-features-cpuinfo for KVM guests on some AMD systems [BZ #28704] - nss: Use "files dns" as the default for the hosts database (bug 28700) - arm: Guard ucontext _rtld_global_ro access by SHARED, not PIC macro - mips: increase stack alignment in clone to match the ABI - mips: align stack in clone [BZ #28223] Resolves: #2032647 Resolves: #2033649
36 lines
1.4 KiB
Diff
36 lines
1.4 KiB
Diff
commit 5daf13b1e637eec0f7a2de05b177cb0d76479aa2
|
|
Author: Matheus Castanho <msc@linux.ibm.com>
|
|
Date: Wed Dec 1 11:14:40 2021 -0300
|
|
|
|
powerpc64[le]: Allocate extra stack frame on syscall.S
|
|
|
|
The syscall function does not allocate the extra stack frame for scv like other
|
|
assembly syscalls using DO_CALL_SCV. So after commit d120fb9941 changed the
|
|
offset that is used to save LR, syscall ended up using an invalid offset,
|
|
causing regressions on powerpc64. So make sure the extra stack frame is
|
|
allocated in syscall.S as well to make it consistent with other uses of
|
|
DO_CALL_SCV and avoid similar issues in the future.
|
|
|
|
Tested on powerpc, powerpc64, and powerpc64le (with and without scv)
|
|
|
|
Reviewed-by: Raphael M Zinsly <rzinsly@linux.ibm.com>
|
|
|
|
(cherry picked from commit ae91d3df24a4a1b1f264d101a71a298bff310d14)
|
|
|
|
diff --git a/sysdeps/unix/sysv/linux/powerpc/syscall.S b/sysdeps/unix/sysv/linux/powerpc/syscall.S
|
|
index a29652feaf6764cf..a5497c8370982fe3 100644
|
|
--- a/sysdeps/unix/sysv/linux/powerpc/syscall.S
|
|
+++ b/sysdeps/unix/sysv/linux/powerpc/syscall.S
|
|
@@ -27,7 +27,11 @@ ENTRY (syscall)
|
|
mr r8,r9
|
|
#if defined(USE_PPC_SCV) && !IS_IN(rtld) && (defined(__PPC64__) || defined(__powerpc64__))
|
|
CHECK_SCV_SUPPORT r9 0f
|
|
+ stdu r1,-SCV_FRAME_SIZE(r1)
|
|
+ cfi_adjust_cfa_offset(SCV_FRAME_SIZE)
|
|
DO_CALL_SCV
|
|
+ addi r1,r1,SCV_FRAME_SIZE
|
|
+ cfi_adjust_cfa_offset(-SCV_FRAME_SIZE)
|
|
RET_SCV
|
|
b 1f
|
|
#endif
|