From 10400e30ba6be3d20e88157be79290b2f1a20684 Mon Sep 17 00:00:00 2001 From: Zhou Zhifa Date: Mon, 17 Jul 2023 08:17:46 +0000 Subject: [PATCH 1/6] mips: Fix argument passing for inlined syscalls on Linux [BZ #25523] According to [gcc documentation][1], temporary variables must be used for the desired content to not be call-clobbered. Fix the Linux inline syscall templates by adding temporary variables, much like what x86 did before (commit 381a0c26d73e0f074c962e0ab53b99a6c327066d). [1]: https://gcc.gnu.org/onlinedocs/gcc/Local-Register-Variables.html Reference: https://savannah.gnu.org/bugs/index.php?57781 https://bugs.gentoo.org/708758 https://sourceware.org/bugzilla/show_bug.cgi?id=25523 https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=4fbba6fe904d0094ddc4284066b3860d119cbd4a https://sourceware.org/legacy-ml/libc-alpha/2020-02/msg00206.html https://gcc.gnu.org/onlinedocs/gcc/Local-Register-Variables.html Signed-off-by: Zhou Zhifa --- glibc.spec | 1 + ...assing-for-inlined-syscalls-on-Linux.patch | 347 ++++++++++++++++++ 2 files changed, 348 insertions(+) create mode 100644 mips-Fix-argument-passing-for-inlined-syscalls-on-Linux.patch diff --git a/glibc.spec b/glibc.spec index 34e08b3..2ed3088 100644 --- a/glibc.spec +++ b/glibc.spec @@ -156,6 +156,7 @@ Patch69: getcwd-Set-errno-to-ERANGE-for-size-1-CVE-2021-3999.patch Patch70: x86-Fix-__wcsncmp_avx2-in-strcmp-avx2.S-BZ-28755.patch Patch71: x86-Add-the-virtual-machine-detection-in-init_cacheinfo.patch Patch72: gmon-Fix-allocated-buffer-overflow-bug-29444.patch +Patch73: mips-Fix-argument-passing-for-inlined-syscalls-on-Linux.patch Provides: ldconfig rtld(GNU_HASH) bundled(gnulib) diff --git a/mips-Fix-argument-passing-for-inlined-syscalls-on-Linux.patch b/mips-Fix-argument-passing-for-inlined-syscalls-on-Linux.patch new file mode 100644 index 0000000..fb69014 --- /dev/null +++ b/mips-Fix-argument-passing-for-inlined-syscalls-on-Linux.patch @@ -0,0 +1,347 @@ +According to [gcc documentation][1], temporary variables must be used for +the desired content to not be call-clobbered. + +Fix the Linux inline syscall templates by adding temporary variables, +much like what x86 did before +(commit 381a0c26d73e0f074c962e0ab53b99a6c327066d). + +Tested with gcc 9.2.0, both cross-compiled and natively on Loongson +3A4000. + +[1]: https://gcc.gnu.org/onlinedocs/gcc/Local-Register-Variables.html +--- + sysdeps/unix/sysv/linux/mips/mips32/sysdep.h | 30 ++++++--- + .../unix/sysv/linux/mips/mips64/n32/sysdep.h | 63 ++++++++++++------- + .../unix/sysv/linux/mips/mips64/n64/sysdep.h | 63 ++++++++++++------- + 3 files changed, 104 insertions(+), 52 deletions(-) + +diff --git a/sysdeps/unix/sysv/linux/mips/mips32/sysdep.h b/sysdeps/unix/sysv/linux/mips/mips32/sysdep.h +index beefcf284b..c275d63f67 100644 +--- a/sysdeps/unix/sysv/linux/mips/mips32/sysdep.h ++++ b/sysdeps/unix/sysv/linux/mips/mips32/sysdep.h +@@ -178,10 +178,11 @@ union __mips_syscall_return + long _sys_result; \ + \ + { \ ++ long _arg1 = (long) (arg1); \ + register long __s0 asm ("$16") __attribute__ ((unused)) \ + = (number); \ + register long __v0 asm ("$2"); \ +- register long __a0 asm ("$4") = (long) (arg1); \ ++ register long __a0 asm ("$4") = _arg1; \ + register long __a3 asm ("$7"); \ + __asm__ volatile ( \ + ".set\tnoreorder\n\t" \ +@@ -202,11 +203,13 @@ union __mips_syscall_return + long _sys_result; \ + \ + { \ ++ long _arg1 = (long) (arg1); \ ++ long _arg2 = (long) (arg2); \ + register long __s0 asm ("$16") __attribute__ ((unused)) \ + = (number); \ + register long __v0 asm ("$2"); \ +- register long __a0 asm ("$4") = (long) (arg1); \ +- register long __a1 asm ("$5") = (long) (arg2); \ ++ register long __a0 asm ("$4") = _arg1; \ ++ register long __a1 asm ("$5") = _arg2; \ + register long __a3 asm ("$7"); \ + __asm__ volatile ( \ + ".set\tnoreorder\n\t" \ +@@ -228,12 +231,15 @@ union __mips_syscall_return + long _sys_result; \ + \ + { \ ++ long _arg1 = (long) (arg1); \ ++ long _arg2 = (long) (arg2); \ ++ long _arg3 = (long) (arg3); \ + register long __s0 asm ("$16") __attribute__ ((unused)) \ + = (number); \ + register long __v0 asm ("$2"); \ +- register long __a0 asm ("$4") = (long) (arg1); \ +- register long __a1 asm ("$5") = (long) (arg2); \ +- register long __a2 asm ("$6") = (long) (arg3); \ ++ register long __a0 asm ("$4") = _arg1; \ ++ register long __a1 asm ("$5") = _arg2; \ ++ register long __a2 asm ("$6") = _arg3; \ + register long __a3 asm ("$7"); \ + __asm__ volatile ( \ + ".set\tnoreorder\n\t" \ +@@ -255,13 +261,17 @@ union __mips_syscall_return + long _sys_result; \ + \ + { \ ++ long _arg1 = (long) (arg1); \ ++ long _arg2 = (long) (arg2); \ ++ long _arg3 = (long) (arg3); \ ++ long _arg4 = (long) (arg4); \ + register long __s0 asm ("$16") __attribute__ ((unused)) \ + = (number); \ + register long __v0 asm ("$2"); \ +- register long __a0 asm ("$4") = (long) (arg1); \ +- register long __a1 asm ("$5") = (long) (arg2); \ +- register long __a2 asm ("$6") = (long) (arg3); \ +- register long __a3 asm ("$7") = (long) (arg4); \ ++ register long __a0 asm ("$4") = _arg1; \ ++ register long __a1 asm ("$5") = _arg2; \ ++ register long __a2 asm ("$6") = _arg3; \ ++ register long __a3 asm ("$7") = _arg4; \ + __asm__ volatile ( \ + ".set\tnoreorder\n\t" \ + v0_init \ +diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/sysdep.h b/sysdeps/unix/sysv/linux/mips/mips64/n32/sysdep.h +index f96636538a..958a889147 100644 +--- a/sysdeps/unix/sysv/linux/mips/mips64/n32/sysdep.h ++++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/sysdep.h +@@ -138,10 +138,11 @@ + long _sys_result; \ + \ + { \ ++ long long _arg1 = ARGIFY (arg1); \ + register long long __s0 asm ("$16") __attribute__ ((unused)) \ + = (number); \ + register long long __v0 asm ("$2"); \ +- register long long __a0 asm ("$4") = ARGIFY (arg1); \ ++ register long long __a0 asm ("$4") = _arg1; \ + register long long __a3 asm ("$7"); \ + __asm__ volatile ( \ + ".set\tnoreorder\n\t" \ +@@ -162,11 +163,13 @@ + long _sys_result; \ + \ + { \ ++ long long _arg1 = ARGIFY (arg1); \ ++ long long _arg2 = ARGIFY (arg2); \ + register long long __s0 asm ("$16") __attribute__ ((unused)) \ + = (number); \ + register long long __v0 asm ("$2"); \ +- register long long __a0 asm ("$4") = ARGIFY (arg1); \ +- register long long __a1 asm ("$5") = ARGIFY (arg2); \ ++ register long long __a0 asm ("$4") = _arg1; \ ++ register long long __a1 asm ("$5") = _arg2; \ + register long long __a3 asm ("$7"); \ + __asm__ volatile ( \ + ".set\tnoreorder\n\t" \ +@@ -188,12 +191,15 @@ + long _sys_result; \ + \ + { \ ++ long long _arg1 = ARGIFY (arg1); \ ++ long long _arg2 = ARGIFY (arg2); \ ++ long long _arg3 = ARGIFY (arg3); \ + register long long __s0 asm ("$16") __attribute__ ((unused)) \ + = (number); \ + register long long __v0 asm ("$2"); \ +- register long long __a0 asm ("$4") = ARGIFY (arg1); \ +- register long long __a1 asm ("$5") = ARGIFY (arg2); \ +- register long long __a2 asm ("$6") = ARGIFY (arg3); \ ++ register long long __a0 asm ("$4") = _arg1; \ ++ register long long __a1 asm ("$5") = _arg2; \ ++ register long long __a2 asm ("$6") = _arg3; \ + register long long __a3 asm ("$7"); \ + __asm__ volatile ( \ + ".set\tnoreorder\n\t" \ +@@ -215,13 +221,17 @@ + long _sys_result; \ + \ + { \ ++ long long _arg1 = ARGIFY (arg1); \ ++ long long _arg2 = ARGIFY (arg2); \ ++ long long _arg3 = ARGIFY (arg3); \ ++ long long _arg4 = ARGIFY (arg4); \ + register long long __s0 asm ("$16") __attribute__ ((unused)) \ + = (number); \ + register long long __v0 asm ("$2"); \ +- register long long __a0 asm ("$4") = ARGIFY (arg1); \ +- register long long __a1 asm ("$5") = ARGIFY (arg2); \ +- register long long __a2 asm ("$6") = ARGIFY (arg3); \ +- register long long __a3 asm ("$7") = ARGIFY (arg4); \ ++ register long long __a0 asm ("$4") = _arg1; \ ++ register long long __a1 asm ("$5") = _arg2; \ ++ register long long __a2 asm ("$6") = _arg3; \ ++ register long long __a3 asm ("$7") = _arg4; \ + __asm__ volatile ( \ + ".set\tnoreorder\n\t" \ + v0_init \ +@@ -242,14 +252,19 @@ + long _sys_result; \ + \ + { \ ++ long long _arg1 = ARGIFY (arg1); \ ++ long long _arg2 = ARGIFY (arg2); \ ++ long long _arg3 = ARGIFY (arg3); \ ++ long long _arg4 = ARGIFY (arg4); \ ++ long long _arg5 = ARGIFY (arg5); \ + register long long __s0 asm ("$16") __attribute__ ((unused)) \ + = (number); \ + register long long __v0 asm ("$2"); \ +- register long long __a0 asm ("$4") = ARGIFY (arg1); \ +- register long long __a1 asm ("$5") = ARGIFY (arg2); \ +- register long long __a2 asm ("$6") = ARGIFY (arg3); \ +- register long long __a3 asm ("$7") = ARGIFY (arg4); \ +- register long long __a4 asm ("$8") = ARGIFY (arg5); \ ++ register long long __a0 asm ("$4") = _arg1; \ ++ register long long __a1 asm ("$5") = _arg2; \ ++ register long long __a2 asm ("$6") = _arg3; \ ++ register long long __a3 asm ("$7") = _arg4; \ ++ register long long __a4 asm ("$8") = _arg5; \ + __asm__ volatile ( \ + ".set\tnoreorder\n\t" \ + v0_init \ +@@ -270,15 +285,21 @@ + long _sys_result; \ + \ + { \ ++ long long _arg1 = ARGIFY (arg1); \ ++ long long _arg2 = ARGIFY (arg2); \ ++ long long _arg3 = ARGIFY (arg3); \ ++ long long _arg4 = ARGIFY (arg4); \ ++ long long _arg5 = ARGIFY (arg5); \ ++ long long _arg6 = ARGIFY (arg6); \ + register long long __s0 asm ("$16") __attribute__ ((unused)) \ + = (number); \ + register long long __v0 asm ("$2"); \ +- register long long __a0 asm ("$4") = ARGIFY (arg1); \ +- register long long __a1 asm ("$5") = ARGIFY (arg2); \ +- register long long __a2 asm ("$6") = ARGIFY (arg3); \ +- register long long __a3 asm ("$7") = ARGIFY (arg4); \ +- register long long __a4 asm ("$8") = ARGIFY (arg5); \ +- register long long __a5 asm ("$9") = ARGIFY (arg6); \ ++ register long long __a0 asm ("$4") = _arg1; \ ++ register long long __a1 asm ("$5") = _arg2; \ ++ register long long __a2 asm ("$6") = _arg3; \ ++ register long long __a3 asm ("$7") = _arg4; \ ++ register long long __a4 asm ("$8") = _arg5; \ ++ register long long __a5 asm ("$9") = _arg6; \ + __asm__ volatile ( \ + ".set\tnoreorder\n\t" \ + v0_init \ +diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n64/sysdep.h b/sysdeps/unix/sysv/linux/mips/mips64/n64/sysdep.h +index 9d30291f84..f47613deaf 100644 +--- a/sysdeps/unix/sysv/linux/mips/mips64/n64/sysdep.h ++++ b/sysdeps/unix/sysv/linux/mips/mips64/n64/sysdep.h +@@ -134,10 +134,11 @@ + long _sys_result; \ + \ + { \ ++ long _arg1 = (long) (arg1); \ + register long __s0 asm ("$16") __attribute__ ((unused)) \ + = (number); \ + register long __v0 asm ("$2"); \ +- register long __a0 asm ("$4") = (long) (arg1); \ ++ register long __a0 asm ("$4") = _arg1; \ + register long __a3 asm ("$7"); \ + __asm__ volatile ( \ + ".set\tnoreorder\n\t" \ +@@ -158,11 +159,13 @@ + long _sys_result; \ + \ + { \ ++ long _arg1 = (long) (arg1); \ ++ long _arg2 = (long) (arg2); \ + register long __s0 asm ("$16") __attribute__ ((unused)) \ + = (number); \ + register long __v0 asm ("$2"); \ +- register long __a0 asm ("$4") = (long) (arg1); \ +- register long __a1 asm ("$5") = (long) (arg2); \ ++ register long __a0 asm ("$4") = _arg1; \ ++ register long __a1 asm ("$5") = _arg2; \ + register long __a3 asm ("$7"); \ + __asm__ volatile ( \ + ".set\tnoreorder\n\t" \ +@@ -184,12 +187,15 @@ + long _sys_result; \ + \ + { \ ++ long _arg1 = (long) (arg1); \ ++ long _arg2 = (long) (arg2); \ ++ long _arg3 = (long) (arg3); \ + register long __s0 asm ("$16") __attribute__ ((unused)) \ + = (number); \ + register long __v0 asm ("$2"); \ +- register long __a0 asm ("$4") = (long) (arg1); \ +- register long __a1 asm ("$5") = (long) (arg2); \ +- register long __a2 asm ("$6") = (long) (arg3); \ ++ register long __a0 asm ("$4") = _arg1; \ ++ register long __a1 asm ("$5") = _arg2; \ ++ register long __a2 asm ("$6") = _arg3; \ + register long __a3 asm ("$7"); \ + __asm__ volatile ( \ + ".set\tnoreorder\n\t" \ +@@ -211,13 +217,17 @@ + long _sys_result; \ + \ + { \ ++ long _arg1 = (long) (arg1); \ ++ long _arg2 = (long) (arg2); \ ++ long _arg3 = (long) (arg3); \ ++ long _arg4 = (long) (arg4); \ + register long __s0 asm ("$16") __attribute__ ((unused)) \ + = (number); \ + register long __v0 asm ("$2"); \ +- register long __a0 asm ("$4") = (long) (arg1); \ +- register long __a1 asm ("$5") = (long) (arg2); \ +- register long __a2 asm ("$6") = (long) (arg3); \ +- register long __a3 asm ("$7") = (long) (arg4); \ ++ register long __a0 asm ("$4") = _arg1; \ ++ register long __a1 asm ("$5") = _arg2; \ ++ register long __a2 asm ("$6") = _arg3; \ ++ register long __a3 asm ("$7") = _arg4; \ + __asm__ volatile ( \ + ".set\tnoreorder\n\t" \ + v0_init \ +@@ -238,14 +248,19 @@ + long _sys_result; \ + \ + { \ ++ long _arg1 = (long) (arg1); \ ++ long _arg2 = (long) (arg2); \ ++ long _arg3 = (long) (arg3); \ ++ long _arg4 = (long) (arg4); \ ++ long _arg5 = (long) (arg5); \ + register long __s0 asm ("$16") __attribute__ ((unused)) \ + = (number); \ + register long __v0 asm ("$2"); \ +- register long __a0 asm ("$4") = (long) (arg1); \ +- register long __a1 asm ("$5") = (long) (arg2); \ +- register long __a2 asm ("$6") = (long) (arg3); \ +- register long __a3 asm ("$7") = (long) (arg4); \ +- register long __a4 asm ("$8") = (long) (arg5); \ ++ register long __a0 asm ("$4") = _arg1; \ ++ register long __a1 asm ("$5") = _arg2; \ ++ register long __a2 asm ("$6") = _arg3; \ ++ register long __a3 asm ("$7") = _arg4; \ ++ register long __a4 asm ("$8") = _arg5; \ + __asm__ volatile ( \ + ".set\tnoreorder\n\t" \ + v0_init \ +@@ -266,15 +281,21 @@ + long _sys_result; \ + \ + { \ ++ long _arg1 = (long) (arg1); \ ++ long _arg2 = (long) (arg2); \ ++ long _arg3 = (long) (arg3); \ ++ long _arg4 = (long) (arg4); \ ++ long _arg5 = (long) (arg5); \ ++ long _arg6 = (long) (arg6); \ + register long __s0 asm ("$16") __attribute__ ((unused)) \ + = (number); \ + register long __v0 asm ("$2"); \ +- register long __a0 asm ("$4") = (long) (arg1); \ +- register long __a1 asm ("$5") = (long) (arg2); \ +- register long __a2 asm ("$6") = (long) (arg3); \ +- register long __a3 asm ("$7") = (long) (arg4); \ +- register long __a4 asm ("$8") = (long) (arg5); \ +- register long __a5 asm ("$9") = (long) (arg6); \ ++ register long __a0 asm ("$4") = _arg1; \ ++ register long __a1 asm ("$5") = _arg2; \ ++ register long __a2 asm ("$6") = _arg3; \ ++ register long __a3 asm ("$7") = _arg4; \ ++ register long __a4 asm ("$8") = _arg5; \ ++ register long __a5 asm ("$9") = _arg6; \ + __asm__ volatile ( \ + ".set\tnoreorder\n\t" \ + v0_init \ +-- +2.24.1 -- Gitee From 5460cdca30a79c7309fb485188f195de5b36e158 Mon Sep 17 00:00:00 2001 From: Zhou Zhifa Date: Tue, 18 Jul 2023 07:06:47 +0000 Subject: [PATCH 2/6] Rename the patch file --- ...-argument-passing-for-inlined-syscalls-on-Linux-BZ-25523.patch | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename mips-Fix-argument-passing-for-inlined-syscalls-on-Linux.patch => mips-Fix-argument-passing-for-inlined-syscalls-on-Linux-BZ-25523.patch (100%) diff --git a/mips-Fix-argument-passing-for-inlined-syscalls-on-Linux.patch b/mips-Fix-argument-passing-for-inlined-syscalls-on-Linux-BZ-25523.patch similarity index 100% rename from mips-Fix-argument-passing-for-inlined-syscalls-on-Linux.patch rename to mips-Fix-argument-passing-for-inlined-syscalls-on-Linux-BZ-25523.patch -- Gitee From 113a76475a5852650d39ce9756271fb2fad9f813 Mon Sep 17 00:00:00 2001 From: Zhou Zhifa Date: Tue, 18 Jul 2023 07:11:33 +0000 Subject: [PATCH 3/6] Adjust the file name of patch file and Add corresponding changlog. --- glibc.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/glibc.spec b/glibc.spec index 2ed3088..d4e5e24 100644 --- a/glibc.spec +++ b/glibc.spec @@ -156,7 +156,7 @@ Patch69: getcwd-Set-errno-to-ERANGE-for-size-1-CVE-2021-3999.patch Patch70: x86-Fix-__wcsncmp_avx2-in-strcmp-avx2.S-BZ-28755.patch Patch71: x86-Add-the-virtual-machine-detection-in-init_cacheinfo.patch Patch72: gmon-Fix-allocated-buffer-overflow-bug-29444.patch -Patch73: mips-Fix-argument-passing-for-inlined-syscalls-on-Linux.patch +Patch73: mips-Fix-argument-passing-for-inlined-syscalls-on-Linux-BZ-25523.patch Provides: ldconfig rtld(GNU_HASH) bundled(gnulib) @@ -1216,6 +1216,9 @@ fi %endif %changelog +* Tue Jul 18 2023 Zhou Zhifa -2.28-93 +- mips: Fix argument passing for inlined syscalls on Linux [BZ #25523] + * Thu Feb 23 2023 Qingqing Li - 2.28-93 - gmon: Fix allocated buffer overflow (bug 29444) -- Gitee From fcec091fab8a7255fb4c45fa1e71c8008b80e2b9 Mon Sep 17 00:00:00 2001 From: Zhou Zhifa Date: Tue, 18 Jul 2023 07:24:03 +0000 Subject: [PATCH 4/6] Add the author information to the patch file. --- ...r-inlined-syscalls-on-Linux-BZ-25523.patch | 441 +++++++++--------- 1 file changed, 224 insertions(+), 217 deletions(-) diff --git a/mips-Fix-argument-passing-for-inlined-syscalls-on-Linux-BZ-25523.patch b/mips-Fix-argument-passing-for-inlined-syscalls-on-Linux-BZ-25523.patch index fb69014..dfa24e2 100644 --- a/mips-Fix-argument-passing-for-inlined-syscalls-on-Linux-BZ-25523.patch +++ b/mips-Fix-argument-passing-for-inlined-syscalls-on-Linux-BZ-25523.patch @@ -1,3 +1,9 @@ +From 4fbba6fe904d0094ddc4284066b3860d119cbd4a Mon Sep 17 00:00:00 2001 +From: WANG Xuerui +Date: Thu, 13 Feb 2020 00:57:03 +0800 +Subject: [PATCH] mips: Fix argument passing for inlined syscalls on Linux [BZ + #25523] + According to [gcc documentation][1], temporary variables must be used for the desired content to not be call-clobbered. @@ -16,332 +22,333 @@ Tested with gcc 9.2.0, both cross-compiled and natively on Loongson 3 files changed, 104 insertions(+), 52 deletions(-) diff --git a/sysdeps/unix/sysv/linux/mips/mips32/sysdep.h b/sysdeps/unix/sysv/linux/mips/mips32/sysdep.h -index beefcf284b..c275d63f67 100644 +index 5cdac96b20..0c6a83e9b3 100644 --- a/sysdeps/unix/sysv/linux/mips/mips32/sysdep.h +++ b/sysdeps/unix/sysv/linux/mips/mips32/sysdep.h @@ -178,10 +178,11 @@ union __mips_syscall_return - long _sys_result; \ + long int _sys_result; \ \ { \ -+ long _arg1 = (long) (arg1); \ - register long __s0 asm ("$16") __attribute__ ((unused)) \ ++ long int _arg1 = (long int) (arg1); \ + register long int __s0 asm ("$16") __attribute__ ((unused)) \ = (number); \ - register long __v0 asm ("$2"); \ -- register long __a0 asm ("$4") = (long) (arg1); \ -+ register long __a0 asm ("$4") = _arg1; \ - register long __a3 asm ("$7"); \ + register long int __v0 asm ("$2"); \ +- register long int __a0 asm ("$4") = (long int) (arg1); \ ++ register long int __a0 asm ("$4") = _arg1; \ + register long int __a3 asm ("$7"); \ __asm__ volatile ( \ ".set\tnoreorder\n\t" \ @@ -202,11 +203,13 @@ union __mips_syscall_return - long _sys_result; \ + long int _sys_result; \ \ { \ -+ long _arg1 = (long) (arg1); \ -+ long _arg2 = (long) (arg2); \ - register long __s0 asm ("$16") __attribute__ ((unused)) \ ++ long int _arg1 = (long int) (arg1); \ ++ long int _arg2 = (long int) (arg2); \ + register long int __s0 asm ("$16") __attribute__ ((unused)) \ = (number); \ - register long __v0 asm ("$2"); \ -- register long __a0 asm ("$4") = (long) (arg1); \ -- register long __a1 asm ("$5") = (long) (arg2); \ -+ register long __a0 asm ("$4") = _arg1; \ -+ register long __a1 asm ("$5") = _arg2; \ - register long __a3 asm ("$7"); \ + register long int __v0 asm ("$2"); \ +- register long int __a0 asm ("$4") = (long int) (arg1); \ +- register long int __a1 asm ("$5") = (long int) (arg2); \ ++ register long int __a0 asm ("$4") = _arg1; \ ++ register long int __a1 asm ("$5") = _arg2; \ + register long int __a3 asm ("$7"); \ __asm__ volatile ( \ ".set\tnoreorder\n\t" \ @@ -228,12 +231,15 @@ union __mips_syscall_return - long _sys_result; \ + long int _sys_result; \ \ { \ -+ long _arg1 = (long) (arg1); \ -+ long _arg2 = (long) (arg2); \ -+ long _arg3 = (long) (arg3); \ - register long __s0 asm ("$16") __attribute__ ((unused)) \ ++ long int _arg1 = (long int) (arg1); \ ++ long int _arg2 = (long int) (arg2); \ ++ long int _arg3 = (long int) (arg3); \ + register long int __s0 asm ("$16") __attribute__ ((unused)) \ = (number); \ - register long __v0 asm ("$2"); \ -- register long __a0 asm ("$4") = (long) (arg1); \ -- register long __a1 asm ("$5") = (long) (arg2); \ -- register long __a2 asm ("$6") = (long) (arg3); \ -+ register long __a0 asm ("$4") = _arg1; \ -+ register long __a1 asm ("$5") = _arg2; \ -+ register long __a2 asm ("$6") = _arg3; \ - register long __a3 asm ("$7"); \ + register long int __v0 asm ("$2"); \ +- register long int __a0 asm ("$4") = (long int) (arg1); \ +- register long int __a1 asm ("$5") = (long int) (arg2); \ +- register long int __a2 asm ("$6") = (long int) (arg3); \ ++ register long int __a0 asm ("$4") = _arg1; \ ++ register long int __a1 asm ("$5") = _arg2; \ ++ register long int __a2 asm ("$6") = _arg3; \ + register long int __a3 asm ("$7"); \ __asm__ volatile ( \ ".set\tnoreorder\n\t" \ @@ -255,13 +261,17 @@ union __mips_syscall_return - long _sys_result; \ + long int _sys_result; \ \ { \ -+ long _arg1 = (long) (arg1); \ -+ long _arg2 = (long) (arg2); \ -+ long _arg3 = (long) (arg3); \ -+ long _arg4 = (long) (arg4); \ - register long __s0 asm ("$16") __attribute__ ((unused)) \ ++ long int _arg1 = (long int) (arg1); \ ++ long int _arg2 = (long int) (arg2); \ ++ long int _arg3 = (long int) (arg3); \ ++ long int _arg4 = (long int) (arg4); \ + register long int __s0 asm ("$16") __attribute__ ((unused)) \ = (number); \ - register long __v0 asm ("$2"); \ -- register long __a0 asm ("$4") = (long) (arg1); \ -- register long __a1 asm ("$5") = (long) (arg2); \ -- register long __a2 asm ("$6") = (long) (arg3); \ -- register long __a3 asm ("$7") = (long) (arg4); \ -+ register long __a0 asm ("$4") = _arg1; \ -+ register long __a1 asm ("$5") = _arg2; \ -+ register long __a2 asm ("$6") = _arg3; \ -+ register long __a3 asm ("$7") = _arg4; \ + register long int __v0 asm ("$2"); \ +- register long int __a0 asm ("$4") = (long int) (arg1); \ +- register long int __a1 asm ("$5") = (long int) (arg2); \ +- register long int __a2 asm ("$6") = (long int) (arg3); \ +- register long int __a3 asm ("$7") = (long int) (arg4); \ ++ register long int __a0 asm ("$4") = _arg1; \ ++ register long int __a1 asm ("$5") = _arg2; \ ++ register long int __a2 asm ("$6") = _arg3; \ ++ register long int __a3 asm ("$7") = _arg4; \ __asm__ volatile ( \ ".set\tnoreorder\n\t" \ v0_init \ diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/sysdep.h b/sysdeps/unix/sysv/linux/mips/mips64/n32/sysdep.h -index f96636538a..958a889147 100644 +index bbc6891a1e..4a9d7054f9 100644 --- a/sysdeps/unix/sysv/linux/mips/mips64/n32/sysdep.h +++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/sysdep.h @@ -138,10 +138,11 @@ - long _sys_result; \ + long int _sys_result; \ \ { \ -+ long long _arg1 = ARGIFY (arg1); \ - register long long __s0 asm ("$16") __attribute__ ((unused)) \ ++ long long int _arg1 = ARGIFY (arg1); \ + register long long int __s0 asm ("$16") __attribute__ ((unused))\ = (number); \ - register long long __v0 asm ("$2"); \ -- register long long __a0 asm ("$4") = ARGIFY (arg1); \ -+ register long long __a0 asm ("$4") = _arg1; \ - register long long __a3 asm ("$7"); \ + register long long int __v0 asm ("$2"); \ +- register long long int __a0 asm ("$4") = ARGIFY (arg1); \ ++ register long long int __a0 asm ("$4") = _arg1; \ + register long long int __a3 asm ("$7"); \ __asm__ volatile ( \ ".set\tnoreorder\n\t" \ @@ -162,11 +163,13 @@ - long _sys_result; \ + long int _sys_result; \ \ { \ -+ long long _arg1 = ARGIFY (arg1); \ -+ long long _arg2 = ARGIFY (arg2); \ - register long long __s0 asm ("$16") __attribute__ ((unused)) \ ++ long long int _arg1 = ARGIFY (arg1); \ ++ long long int _arg2 = ARGIFY (arg2); \ + register long long int __s0 asm ("$16") __attribute__ ((unused))\ = (number); \ - register long long __v0 asm ("$2"); \ -- register long long __a0 asm ("$4") = ARGIFY (arg1); \ -- register long long __a1 asm ("$5") = ARGIFY (arg2); \ -+ register long long __a0 asm ("$4") = _arg1; \ -+ register long long __a1 asm ("$5") = _arg2; \ - register long long __a3 asm ("$7"); \ + register long long int __v0 asm ("$2"); \ +- register long long int __a0 asm ("$4") = ARGIFY (arg1); \ +- register long long int __a1 asm ("$5") = ARGIFY (arg2); \ ++ register long long int __a0 asm ("$4") = _arg1; \ ++ register long long int __a1 asm ("$5") = _arg2; \ + register long long int __a3 asm ("$7"); \ __asm__ volatile ( \ ".set\tnoreorder\n\t" \ @@ -188,12 +191,15 @@ - long _sys_result; \ + long int _sys_result; \ \ { \ -+ long long _arg1 = ARGIFY (arg1); \ -+ long long _arg2 = ARGIFY (arg2); \ -+ long long _arg3 = ARGIFY (arg3); \ - register long long __s0 asm ("$16") __attribute__ ((unused)) \ ++ long long int _arg1 = ARGIFY (arg1); \ ++ long long int _arg2 = ARGIFY (arg2); \ ++ long long int _arg3 = ARGIFY (arg3); \ + register long long int __s0 asm ("$16") __attribute__ ((unused))\ = (number); \ - register long long __v0 asm ("$2"); \ -- register long long __a0 asm ("$4") = ARGIFY (arg1); \ -- register long long __a1 asm ("$5") = ARGIFY (arg2); \ -- register long long __a2 asm ("$6") = ARGIFY (arg3); \ -+ register long long __a0 asm ("$4") = _arg1; \ -+ register long long __a1 asm ("$5") = _arg2; \ -+ register long long __a2 asm ("$6") = _arg3; \ - register long long __a3 asm ("$7"); \ + register long long int __v0 asm ("$2"); \ +- register long long int __a0 asm ("$4") = ARGIFY (arg1); \ +- register long long int __a1 asm ("$5") = ARGIFY (arg2); \ +- register long long int __a2 asm ("$6") = ARGIFY (arg3); \ ++ register long long int __a0 asm ("$4") = _arg1; \ ++ register long long int __a1 asm ("$5") = _arg2; \ ++ register long long int __a2 asm ("$6") = _arg3; \ + register long long int __a3 asm ("$7"); \ __asm__ volatile ( \ ".set\tnoreorder\n\t" \ @@ -215,13 +221,17 @@ - long _sys_result; \ + long int _sys_result; \ \ { \ -+ long long _arg1 = ARGIFY (arg1); \ -+ long long _arg2 = ARGIFY (arg2); \ -+ long long _arg3 = ARGIFY (arg3); \ -+ long long _arg4 = ARGIFY (arg4); \ - register long long __s0 asm ("$16") __attribute__ ((unused)) \ ++ long long int _arg1 = ARGIFY (arg1); \ ++ long long int _arg2 = ARGIFY (arg2); \ ++ long long int _arg3 = ARGIFY (arg3); \ ++ long long int _arg4 = ARGIFY (arg4); \ + register long long int __s0 asm ("$16") __attribute__ ((unused))\ = (number); \ - register long long __v0 asm ("$2"); \ -- register long long __a0 asm ("$4") = ARGIFY (arg1); \ -- register long long __a1 asm ("$5") = ARGIFY (arg2); \ -- register long long __a2 asm ("$6") = ARGIFY (arg3); \ -- register long long __a3 asm ("$7") = ARGIFY (arg4); \ -+ register long long __a0 asm ("$4") = _arg1; \ -+ register long long __a1 asm ("$5") = _arg2; \ -+ register long long __a2 asm ("$6") = _arg3; \ -+ register long long __a3 asm ("$7") = _arg4; \ + register long long int __v0 asm ("$2"); \ +- register long long int __a0 asm ("$4") = ARGIFY (arg1); \ +- register long long int __a1 asm ("$5") = ARGIFY (arg2); \ +- register long long int __a2 asm ("$6") = ARGIFY (arg3); \ +- register long long int __a3 asm ("$7") = ARGIFY (arg4); \ ++ register long long int __a0 asm ("$4") = _arg1; \ ++ register long long int __a1 asm ("$5") = _arg2; \ ++ register long long int __a2 asm ("$6") = _arg3; \ ++ register long long int __a3 asm ("$7") = _arg4; \ __asm__ volatile ( \ ".set\tnoreorder\n\t" \ v0_init \ @@ -242,14 +252,19 @@ - long _sys_result; \ + long int _sys_result; \ \ { \ -+ long long _arg1 = ARGIFY (arg1); \ -+ long long _arg2 = ARGIFY (arg2); \ -+ long long _arg3 = ARGIFY (arg3); \ -+ long long _arg4 = ARGIFY (arg4); \ -+ long long _arg5 = ARGIFY (arg5); \ - register long long __s0 asm ("$16") __attribute__ ((unused)) \ ++ long long int _arg1 = ARGIFY (arg1); \ ++ long long int _arg2 = ARGIFY (arg2); \ ++ long long int _arg3 = ARGIFY (arg3); \ ++ long long int _arg4 = ARGIFY (arg4); \ ++ long long int _arg5 = ARGIFY (arg5); \ + register long long int __s0 asm ("$16") __attribute__ ((unused))\ = (number); \ - register long long __v0 asm ("$2"); \ -- register long long __a0 asm ("$4") = ARGIFY (arg1); \ -- register long long __a1 asm ("$5") = ARGIFY (arg2); \ -- register long long __a2 asm ("$6") = ARGIFY (arg3); \ -- register long long __a3 asm ("$7") = ARGIFY (arg4); \ -- register long long __a4 asm ("$8") = ARGIFY (arg5); \ -+ register long long __a0 asm ("$4") = _arg1; \ -+ register long long __a1 asm ("$5") = _arg2; \ -+ register long long __a2 asm ("$6") = _arg3; \ -+ register long long __a3 asm ("$7") = _arg4; \ -+ register long long __a4 asm ("$8") = _arg5; \ + register long long int __v0 asm ("$2"); \ +- register long long int __a0 asm ("$4") = ARGIFY (arg1); \ +- register long long int __a1 asm ("$5") = ARGIFY (arg2); \ +- register long long int __a2 asm ("$6") = ARGIFY (arg3); \ +- register long long int __a3 asm ("$7") = ARGIFY (arg4); \ +- register long long int __a4 asm ("$8") = ARGIFY (arg5); \ ++ register long long int __a0 asm ("$4") = _arg1; \ ++ register long long int __a1 asm ("$5") = _arg2; \ ++ register long long int __a2 asm ("$6") = _arg3; \ ++ register long long int __a3 asm ("$7") = _arg4; \ ++ register long long int __a4 asm ("$8") = _arg5; \ __asm__ volatile ( \ ".set\tnoreorder\n\t" \ v0_init \ @@ -270,15 +285,21 @@ - long _sys_result; \ + long int _sys_result; \ \ { \ -+ long long _arg1 = ARGIFY (arg1); \ -+ long long _arg2 = ARGIFY (arg2); \ -+ long long _arg3 = ARGIFY (arg3); \ -+ long long _arg4 = ARGIFY (arg4); \ -+ long long _arg5 = ARGIFY (arg5); \ -+ long long _arg6 = ARGIFY (arg6); \ - register long long __s0 asm ("$16") __attribute__ ((unused)) \ ++ long long int _arg1 = ARGIFY (arg1); \ ++ long long int _arg2 = ARGIFY (arg2); \ ++ long long int _arg3 = ARGIFY (arg3); \ ++ long long int _arg4 = ARGIFY (arg4); \ ++ long long int _arg5 = ARGIFY (arg5); \ ++ long long int _arg6 = ARGIFY (arg6); \ + register long long int __s0 asm ("$16") __attribute__ ((unused))\ = (number); \ - register long long __v0 asm ("$2"); \ -- register long long __a0 asm ("$4") = ARGIFY (arg1); \ -- register long long __a1 asm ("$5") = ARGIFY (arg2); \ -- register long long __a2 asm ("$6") = ARGIFY (arg3); \ -- register long long __a3 asm ("$7") = ARGIFY (arg4); \ -- register long long __a4 asm ("$8") = ARGIFY (arg5); \ -- register long long __a5 asm ("$9") = ARGIFY (arg6); \ -+ register long long __a0 asm ("$4") = _arg1; \ -+ register long long __a1 asm ("$5") = _arg2; \ -+ register long long __a2 asm ("$6") = _arg3; \ -+ register long long __a3 asm ("$7") = _arg4; \ -+ register long long __a4 asm ("$8") = _arg5; \ -+ register long long __a5 asm ("$9") = _arg6; \ + register long long int __v0 asm ("$2"); \ +- register long long int __a0 asm ("$4") = ARGIFY (arg1); \ +- register long long int __a1 asm ("$5") = ARGIFY (arg2); \ +- register long long int __a2 asm ("$6") = ARGIFY (arg3); \ +- register long long int __a3 asm ("$7") = ARGIFY (arg4); \ +- register long long int __a4 asm ("$8") = ARGIFY (arg5); \ +- register long long int __a5 asm ("$9") = ARGIFY (arg6); \ ++ register long long int __a0 asm ("$4") = _arg1; \ ++ register long long int __a1 asm ("$5") = _arg2; \ ++ register long long int __a2 asm ("$6") = _arg3; \ ++ register long long int __a3 asm ("$7") = _arg4; \ ++ register long long int __a4 asm ("$8") = _arg5; \ ++ register long long int __a5 asm ("$9") = _arg6; \ __asm__ volatile ( \ ".set\tnoreorder\n\t" \ v0_init \ diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n64/sysdep.h b/sysdeps/unix/sysv/linux/mips/mips64/n64/sysdep.h -index 9d30291f84..f47613deaf 100644 +index db0e0b4044..3e1f1cc3c5 100644 --- a/sysdeps/unix/sysv/linux/mips/mips64/n64/sysdep.h +++ b/sysdeps/unix/sysv/linux/mips/mips64/n64/sysdep.h @@ -134,10 +134,11 @@ - long _sys_result; \ + long int _sys_result; \ \ { \ -+ long _arg1 = (long) (arg1); \ - register long __s0 asm ("$16") __attribute__ ((unused)) \ ++ long int _arg1 = (long int) (arg1); \ + register long int __s0 asm ("$16") __attribute__ ((unused)) \ = (number); \ - register long __v0 asm ("$2"); \ -- register long __a0 asm ("$4") = (long) (arg1); \ -+ register long __a0 asm ("$4") = _arg1; \ - register long __a3 asm ("$7"); \ + register long int __v0 asm ("$2"); \ +- register long int __a0 asm ("$4") = (long int) (arg1); \ ++ register long int __a0 asm ("$4") = _arg1; \ + register long int __a3 asm ("$7"); \ __asm__ volatile ( \ ".set\tnoreorder\n\t" \ @@ -158,11 +159,13 @@ - long _sys_result; \ + long int _sys_result; \ \ { \ -+ long _arg1 = (long) (arg1); \ -+ long _arg2 = (long) (arg2); \ - register long __s0 asm ("$16") __attribute__ ((unused)) \ ++ long int _arg1 = (long int) (arg1); \ ++ long int _arg2 = (long int) (arg2); \ + register long int __s0 asm ("$16") __attribute__ ((unused)) \ = (number); \ - register long __v0 asm ("$2"); \ -- register long __a0 asm ("$4") = (long) (arg1); \ -- register long __a1 asm ("$5") = (long) (arg2); \ -+ register long __a0 asm ("$4") = _arg1; \ -+ register long __a1 asm ("$5") = _arg2; \ - register long __a3 asm ("$7"); \ + register long int __v0 asm ("$2"); \ +- register long int __a0 asm ("$4") = (long int) (arg1); \ +- register long int __a1 asm ("$5") = (long int) (arg2); \ ++ register long int __a0 asm ("$4") = _arg1; \ ++ register long int __a1 asm ("$5") = _arg2; \ + register long int __a3 asm ("$7"); \ __asm__ volatile ( \ ".set\tnoreorder\n\t" \ @@ -184,12 +187,15 @@ - long _sys_result; \ + long int _sys_result; \ \ { \ -+ long _arg1 = (long) (arg1); \ -+ long _arg2 = (long) (arg2); \ -+ long _arg3 = (long) (arg3); \ - register long __s0 asm ("$16") __attribute__ ((unused)) \ ++ long int _arg1 = (long int) (arg1); \ ++ long int _arg2 = (long int) (arg2); \ ++ long int _arg3 = (long int) (arg3); \ + register long int __s0 asm ("$16") __attribute__ ((unused)) \ = (number); \ - register long __v0 asm ("$2"); \ -- register long __a0 asm ("$4") = (long) (arg1); \ -- register long __a1 asm ("$5") = (long) (arg2); \ -- register long __a2 asm ("$6") = (long) (arg3); \ -+ register long __a0 asm ("$4") = _arg1; \ -+ register long __a1 asm ("$5") = _arg2; \ -+ register long __a2 asm ("$6") = _arg3; \ - register long __a3 asm ("$7"); \ + register long int __v0 asm ("$2"); \ +- register long int __a0 asm ("$4") = (long int) (arg1); \ +- register long int __a1 asm ("$5") = (long int) (arg2); \ +- register long int __a2 asm ("$6") = (long int) (arg3); \ ++ register long int __a0 asm ("$4") = _arg1; \ ++ register long int __a1 asm ("$5") = _arg2; \ ++ register long int __a2 asm ("$6") = _arg3; \ + register long int __a3 asm ("$7"); \ __asm__ volatile ( \ ".set\tnoreorder\n\t" \ @@ -211,13 +217,17 @@ - long _sys_result; \ + long int _sys_result; \ \ { \ -+ long _arg1 = (long) (arg1); \ -+ long _arg2 = (long) (arg2); \ -+ long _arg3 = (long) (arg3); \ -+ long _arg4 = (long) (arg4); \ - register long __s0 asm ("$16") __attribute__ ((unused)) \ ++ long int _arg1 = (long int) (arg1); \ ++ long int _arg2 = (long int) (arg2); \ ++ long int _arg3 = (long int) (arg3); \ ++ long int _arg4 = (long int) (arg4); \ + register long int __s0 asm ("$16") __attribute__ ((unused)) \ = (number); \ - register long __v0 asm ("$2"); \ -- register long __a0 asm ("$4") = (long) (arg1); \ -- register long __a1 asm ("$5") = (long) (arg2); \ -- register long __a2 asm ("$6") = (long) (arg3); \ -- register long __a3 asm ("$7") = (long) (arg4); \ -+ register long __a0 asm ("$4") = _arg1; \ -+ register long __a1 asm ("$5") = _arg2; \ -+ register long __a2 asm ("$6") = _arg3; \ -+ register long __a3 asm ("$7") = _arg4; \ + register long int __v0 asm ("$2"); \ +- register long int __a0 asm ("$4") = (long int) (arg1); \ +- register long int __a1 asm ("$5") = (long int) (arg2); \ +- register long int __a2 asm ("$6") = (long int) (arg3); \ +- register long int __a3 asm ("$7") = (long int) (arg4); \ ++ register long int __a0 asm ("$4") = _arg1; \ ++ register long int __a1 asm ("$5") = _arg2; \ ++ register long int __a2 asm ("$6") = _arg3; \ ++ register long int __a3 asm ("$7") = _arg4; \ __asm__ volatile ( \ ".set\tnoreorder\n\t" \ v0_init \ @@ -238,14 +248,19 @@ - long _sys_result; \ + long int _sys_result; \ \ { \ -+ long _arg1 = (long) (arg1); \ -+ long _arg2 = (long) (arg2); \ -+ long _arg3 = (long) (arg3); \ -+ long _arg4 = (long) (arg4); \ -+ long _arg5 = (long) (arg5); \ - register long __s0 asm ("$16") __attribute__ ((unused)) \ ++ long int _arg1 = (long int) (arg1); \ ++ long int _arg2 = (long int) (arg2); \ ++ long int _arg3 = (long int) (arg3); \ ++ long int _arg4 = (long int) (arg4); \ ++ long int _arg5 = (long int) (arg5); \ + register long int __s0 asm ("$16") __attribute__ ((unused)) \ = (number); \ - register long __v0 asm ("$2"); \ -- register long __a0 asm ("$4") = (long) (arg1); \ -- register long __a1 asm ("$5") = (long) (arg2); \ -- register long __a2 asm ("$6") = (long) (arg3); \ -- register long __a3 asm ("$7") = (long) (arg4); \ -- register long __a4 asm ("$8") = (long) (arg5); \ -+ register long __a0 asm ("$4") = _arg1; \ -+ register long __a1 asm ("$5") = _arg2; \ -+ register long __a2 asm ("$6") = _arg3; \ -+ register long __a3 asm ("$7") = _arg4; \ -+ register long __a4 asm ("$8") = _arg5; \ + register long int __v0 asm ("$2"); \ +- register long int __a0 asm ("$4") = (long int) (arg1); \ +- register long int __a1 asm ("$5") = (long int) (arg2); \ +- register long int __a2 asm ("$6") = (long int) (arg3); \ +- register long int __a3 asm ("$7") = (long int) (arg4); \ +- register long int __a4 asm ("$8") = (long int) (arg5); \ ++ register long int __a0 asm ("$4") = _arg1; \ ++ register long int __a1 asm ("$5") = _arg2; \ ++ register long int __a2 asm ("$6") = _arg3; \ ++ register long int __a3 asm ("$7") = _arg4; \ ++ register long int __a4 asm ("$8") = _arg5; \ __asm__ volatile ( \ ".set\tnoreorder\n\t" \ v0_init \ @@ -266,15 +281,21 @@ - long _sys_result; \ + long int _sys_result; \ \ { \ -+ long _arg1 = (long) (arg1); \ -+ long _arg2 = (long) (arg2); \ -+ long _arg3 = (long) (arg3); \ -+ long _arg4 = (long) (arg4); \ -+ long _arg5 = (long) (arg5); \ -+ long _arg6 = (long) (arg6); \ - register long __s0 asm ("$16") __attribute__ ((unused)) \ ++ long int _arg1 = (long int) (arg1); \ ++ long int _arg2 = (long int) (arg2); \ ++ long int _arg3 = (long int) (arg3); \ ++ long int _arg4 = (long int) (arg4); \ ++ long int _arg5 = (long int) (arg5); \ ++ long int _arg6 = (long int) (arg6); \ + register long int __s0 asm ("$16") __attribute__ ((unused)) \ = (number); \ - register long __v0 asm ("$2"); \ -- register long __a0 asm ("$4") = (long) (arg1); \ -- register long __a1 asm ("$5") = (long) (arg2); \ -- register long __a2 asm ("$6") = (long) (arg3); \ -- register long __a3 asm ("$7") = (long) (arg4); \ -- register long __a4 asm ("$8") = (long) (arg5); \ -- register long __a5 asm ("$9") = (long) (arg6); \ -+ register long __a0 asm ("$4") = _arg1; \ -+ register long __a1 asm ("$5") = _arg2; \ -+ register long __a2 asm ("$6") = _arg3; \ -+ register long __a3 asm ("$7") = _arg4; \ -+ register long __a4 asm ("$8") = _arg5; \ -+ register long __a5 asm ("$9") = _arg6; \ + register long int __v0 asm ("$2"); \ +- register long int __a0 asm ("$4") = (long int) (arg1); \ +- register long int __a1 asm ("$5") = (long int) (arg2); \ +- register long int __a2 asm ("$6") = (long int) (arg3); \ +- register long int __a3 asm ("$7") = (long int) (arg4); \ +- register long int __a4 asm ("$8") = (long int) (arg5); \ +- register long int __a5 asm ("$9") = (long int) (arg6); \ ++ register long int __a0 asm ("$4") = _arg1; \ ++ register long int __a1 asm ("$5") = _arg2; \ ++ register long int __a2 asm ("$6") = _arg3; \ ++ register long int __a3 asm ("$7") = _arg4; \ ++ register long int __a4 asm ("$8") = _arg5; \ ++ register long int __a5 asm ("$9") = _arg6; \ __asm__ volatile ( \ ".set\tnoreorder\n\t" \ v0_init \ -- -2.24.1 +2.39.3 + -- Gitee From d5865567e6d2b4575a08e2b8f264ce5c38f22fe8 Mon Sep 17 00:00:00 2001 From: Zhou Zhifa Date: Tue, 18 Jul 2023 07:43:14 +0000 Subject: [PATCH 5/6] Fix some errors in patch file. --- ...r-inlined-syscalls-on-Linux-BZ-25523.patch | 435 +++++++++--------- 1 file changed, 217 insertions(+), 218 deletions(-) diff --git a/mips-Fix-argument-passing-for-inlined-syscalls-on-Linux-BZ-25523.patch b/mips-Fix-argument-passing-for-inlined-syscalls-on-Linux-BZ-25523.patch index dfa24e2..ff7581c 100644 --- a/mips-Fix-argument-passing-for-inlined-syscalls-on-Linux-BZ-25523.patch +++ b/mips-Fix-argument-passing-for-inlined-syscalls-on-Linux-BZ-25523.patch @@ -22,333 +22,332 @@ Tested with gcc 9.2.0, both cross-compiled and natively on Loongson 3 files changed, 104 insertions(+), 52 deletions(-) diff --git a/sysdeps/unix/sysv/linux/mips/mips32/sysdep.h b/sysdeps/unix/sysv/linux/mips/mips32/sysdep.h -index 5cdac96b20..0c6a83e9b3 100644 +index beefcf284b..c275d63f67 100644 --- a/sysdeps/unix/sysv/linux/mips/mips32/sysdep.h +++ b/sysdeps/unix/sysv/linux/mips/mips32/sysdep.h @@ -178,10 +178,11 @@ union __mips_syscall_return - long int _sys_result; \ + long _sys_result; \ \ { \ -+ long int _arg1 = (long int) (arg1); \ - register long int __s0 asm ("$16") __attribute__ ((unused)) \ ++ long _arg1 = (long) (arg1); \ + register long __s0 asm ("$16") __attribute__ ((unused)) \ = (number); \ - register long int __v0 asm ("$2"); \ -- register long int __a0 asm ("$4") = (long int) (arg1); \ -+ register long int __a0 asm ("$4") = _arg1; \ - register long int __a3 asm ("$7"); \ + register long __v0 asm ("$2"); \ +- register long __a0 asm ("$4") = (long) (arg1); \ ++ register long __a0 asm ("$4") = _arg1; \ + register long __a3 asm ("$7"); \ __asm__ volatile ( \ ".set\tnoreorder\n\t" \ @@ -202,11 +203,13 @@ union __mips_syscall_return - long int _sys_result; \ + long _sys_result; \ \ { \ -+ long int _arg1 = (long int) (arg1); \ -+ long int _arg2 = (long int) (arg2); \ - register long int __s0 asm ("$16") __attribute__ ((unused)) \ ++ long _arg1 = (long) (arg1); \ ++ long _arg2 = (long) (arg2); \ + register long __s0 asm ("$16") __attribute__ ((unused)) \ = (number); \ - register long int __v0 asm ("$2"); \ -- register long int __a0 asm ("$4") = (long int) (arg1); \ -- register long int __a1 asm ("$5") = (long int) (arg2); \ -+ register long int __a0 asm ("$4") = _arg1; \ -+ register long int __a1 asm ("$5") = _arg2; \ - register long int __a3 asm ("$7"); \ + register long __v0 asm ("$2"); \ +- register long __a0 asm ("$4") = (long) (arg1); \ +- register long __a1 asm ("$5") = (long) (arg2); \ ++ register long __a0 asm ("$4") = _arg1; \ ++ register long __a1 asm ("$5") = _arg2; \ + register long __a3 asm ("$7"); \ __asm__ volatile ( \ ".set\tnoreorder\n\t" \ @@ -228,12 +231,15 @@ union __mips_syscall_return - long int _sys_result; \ + long _sys_result; \ \ { \ -+ long int _arg1 = (long int) (arg1); \ -+ long int _arg2 = (long int) (arg2); \ -+ long int _arg3 = (long int) (arg3); \ - register long int __s0 asm ("$16") __attribute__ ((unused)) \ ++ long _arg1 = (long) (arg1); \ ++ long _arg2 = (long) (arg2); \ ++ long _arg3 = (long) (arg3); \ + register long __s0 asm ("$16") __attribute__ ((unused)) \ = (number); \ - register long int __v0 asm ("$2"); \ -- register long int __a0 asm ("$4") = (long int) (arg1); \ -- register long int __a1 asm ("$5") = (long int) (arg2); \ -- register long int __a2 asm ("$6") = (long int) (arg3); \ -+ register long int __a0 asm ("$4") = _arg1; \ -+ register long int __a1 asm ("$5") = _arg2; \ -+ register long int __a2 asm ("$6") = _arg3; \ - register long int __a3 asm ("$7"); \ + register long __v0 asm ("$2"); \ +- register long __a0 asm ("$4") = (long) (arg1); \ +- register long __a1 asm ("$5") = (long) (arg2); \ +- register long __a2 asm ("$6") = (long) (arg3); \ ++ register long __a0 asm ("$4") = _arg1; \ ++ register long __a1 asm ("$5") = _arg2; \ ++ register long __a2 asm ("$6") = _arg3; \ + register long __a3 asm ("$7"); \ __asm__ volatile ( \ ".set\tnoreorder\n\t" \ @@ -255,13 +261,17 @@ union __mips_syscall_return - long int _sys_result; \ + long _sys_result; \ \ { \ -+ long int _arg1 = (long int) (arg1); \ -+ long int _arg2 = (long int) (arg2); \ -+ long int _arg3 = (long int) (arg3); \ -+ long int _arg4 = (long int) (arg4); \ - register long int __s0 asm ("$16") __attribute__ ((unused)) \ ++ long _arg1 = (long) (arg1); \ ++ long _arg2 = (long) (arg2); \ ++ long _arg3 = (long) (arg3); \ ++ long _arg4 = (long) (arg4); \ + register long __s0 asm ("$16") __attribute__ ((unused)) \ = (number); \ - register long int __v0 asm ("$2"); \ -- register long int __a0 asm ("$4") = (long int) (arg1); \ -- register long int __a1 asm ("$5") = (long int) (arg2); \ -- register long int __a2 asm ("$6") = (long int) (arg3); \ -- register long int __a3 asm ("$7") = (long int) (arg4); \ -+ register long int __a0 asm ("$4") = _arg1; \ -+ register long int __a1 asm ("$5") = _arg2; \ -+ register long int __a2 asm ("$6") = _arg3; \ -+ register long int __a3 asm ("$7") = _arg4; \ + register long __v0 asm ("$2"); \ +- register long __a0 asm ("$4") = (long) (arg1); \ +- register long __a1 asm ("$5") = (long) (arg2); \ +- register long __a2 asm ("$6") = (long) (arg3); \ +- register long __a3 asm ("$7") = (long) (arg4); \ ++ register long __a0 asm ("$4") = _arg1; \ ++ register long __a1 asm ("$5") = _arg2; \ ++ register long __a2 asm ("$6") = _arg3; \ ++ register long __a3 asm ("$7") = _arg4; \ __asm__ volatile ( \ ".set\tnoreorder\n\t" \ v0_init \ diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/sysdep.h b/sysdeps/unix/sysv/linux/mips/mips64/n32/sysdep.h -index bbc6891a1e..4a9d7054f9 100644 +index f96636538a..958a889147 100644 --- a/sysdeps/unix/sysv/linux/mips/mips64/n32/sysdep.h +++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/sysdep.h @@ -138,10 +138,11 @@ - long int _sys_result; \ + long _sys_result; \ \ { \ -+ long long int _arg1 = ARGIFY (arg1); \ - register long long int __s0 asm ("$16") __attribute__ ((unused))\ ++ long long _arg1 = ARGIFY (arg1); \ + register long long __s0 asm ("$16") __attribute__ ((unused)) \ = (number); \ - register long long int __v0 asm ("$2"); \ -- register long long int __a0 asm ("$4") = ARGIFY (arg1); \ -+ register long long int __a0 asm ("$4") = _arg1; \ - register long long int __a3 asm ("$7"); \ + register long long __v0 asm ("$2"); \ +- register long long __a0 asm ("$4") = ARGIFY (arg1); \ ++ register long long __a0 asm ("$4") = _arg1; \ + register long long __a3 asm ("$7"); \ __asm__ volatile ( \ ".set\tnoreorder\n\t" \ @@ -162,11 +163,13 @@ - long int _sys_result; \ + long _sys_result; \ \ { \ -+ long long int _arg1 = ARGIFY (arg1); \ -+ long long int _arg2 = ARGIFY (arg2); \ - register long long int __s0 asm ("$16") __attribute__ ((unused))\ ++ long long _arg1 = ARGIFY (arg1); \ ++ long long _arg2 = ARGIFY (arg2); \ + register long long __s0 asm ("$16") __attribute__ ((unused)) \ = (number); \ - register long long int __v0 asm ("$2"); \ -- register long long int __a0 asm ("$4") = ARGIFY (arg1); \ -- register long long int __a1 asm ("$5") = ARGIFY (arg2); \ -+ register long long int __a0 asm ("$4") = _arg1; \ -+ register long long int __a1 asm ("$5") = _arg2; \ - register long long int __a3 asm ("$7"); \ + register long long __v0 asm ("$2"); \ +- register long long __a0 asm ("$4") = ARGIFY (arg1); \ +- register long long __a1 asm ("$5") = ARGIFY (arg2); \ ++ register long long __a0 asm ("$4") = _arg1; \ ++ register long long __a1 asm ("$5") = _arg2; \ + register long long __a3 asm ("$7"); \ __asm__ volatile ( \ ".set\tnoreorder\n\t" \ @@ -188,12 +191,15 @@ - long int _sys_result; \ + long _sys_result; \ \ { \ -+ long long int _arg1 = ARGIFY (arg1); \ -+ long long int _arg2 = ARGIFY (arg2); \ -+ long long int _arg3 = ARGIFY (arg3); \ - register long long int __s0 asm ("$16") __attribute__ ((unused))\ ++ long long _arg1 = ARGIFY (arg1); \ ++ long long _arg2 = ARGIFY (arg2); \ ++ long long _arg3 = ARGIFY (arg3); \ + register long long __s0 asm ("$16") __attribute__ ((unused)) \ = (number); \ - register long long int __v0 asm ("$2"); \ -- register long long int __a0 asm ("$4") = ARGIFY (arg1); \ -- register long long int __a1 asm ("$5") = ARGIFY (arg2); \ -- register long long int __a2 asm ("$6") = ARGIFY (arg3); \ -+ register long long int __a0 asm ("$4") = _arg1; \ -+ register long long int __a1 asm ("$5") = _arg2; \ -+ register long long int __a2 asm ("$6") = _arg3; \ - register long long int __a3 asm ("$7"); \ + register long long __v0 asm ("$2"); \ +- register long long __a0 asm ("$4") = ARGIFY (arg1); \ +- register long long __a1 asm ("$5") = ARGIFY (arg2); \ +- register long long __a2 asm ("$6") = ARGIFY (arg3); \ ++ register long long __a0 asm ("$4") = _arg1; \ ++ register long long __a1 asm ("$5") = _arg2; \ ++ register long long __a2 asm ("$6") = _arg3; \ + register long long __a3 asm ("$7"); \ __asm__ volatile ( \ ".set\tnoreorder\n\t" \ @@ -215,13 +221,17 @@ - long int _sys_result; \ + long _sys_result; \ \ { \ -+ long long int _arg1 = ARGIFY (arg1); \ -+ long long int _arg2 = ARGIFY (arg2); \ -+ long long int _arg3 = ARGIFY (arg3); \ -+ long long int _arg4 = ARGIFY (arg4); \ - register long long int __s0 asm ("$16") __attribute__ ((unused))\ ++ long long _arg1 = ARGIFY (arg1); \ ++ long long _arg2 = ARGIFY (arg2); \ ++ long long _arg3 = ARGIFY (arg3); \ ++ long long _arg4 = ARGIFY (arg4); \ + register long long __s0 asm ("$16") __attribute__ ((unused)) \ = (number); \ - register long long int __v0 asm ("$2"); \ -- register long long int __a0 asm ("$4") = ARGIFY (arg1); \ -- register long long int __a1 asm ("$5") = ARGIFY (arg2); \ -- register long long int __a2 asm ("$6") = ARGIFY (arg3); \ -- register long long int __a3 asm ("$7") = ARGIFY (arg4); \ -+ register long long int __a0 asm ("$4") = _arg1; \ -+ register long long int __a1 asm ("$5") = _arg2; \ -+ register long long int __a2 asm ("$6") = _arg3; \ -+ register long long int __a3 asm ("$7") = _arg4; \ + register long long __v0 asm ("$2"); \ +- register long long __a0 asm ("$4") = ARGIFY (arg1); \ +- register long long __a1 asm ("$5") = ARGIFY (arg2); \ +- register long long __a2 asm ("$6") = ARGIFY (arg3); \ +- register long long __a3 asm ("$7") = ARGIFY (arg4); \ ++ register long long __a0 asm ("$4") = _arg1; \ ++ register long long __a1 asm ("$5") = _arg2; \ ++ register long long __a2 asm ("$6") = _arg3; \ ++ register long long __a3 asm ("$7") = _arg4; \ __asm__ volatile ( \ ".set\tnoreorder\n\t" \ v0_init \ @@ -242,14 +252,19 @@ - long int _sys_result; \ + long _sys_result; \ \ { \ -+ long long int _arg1 = ARGIFY (arg1); \ -+ long long int _arg2 = ARGIFY (arg2); \ -+ long long int _arg3 = ARGIFY (arg3); \ -+ long long int _arg4 = ARGIFY (arg4); \ -+ long long int _arg5 = ARGIFY (arg5); \ - register long long int __s0 asm ("$16") __attribute__ ((unused))\ ++ long long _arg1 = ARGIFY (arg1); \ ++ long long _arg2 = ARGIFY (arg2); \ ++ long long _arg3 = ARGIFY (arg3); \ ++ long long _arg4 = ARGIFY (arg4); \ ++ long long _arg5 = ARGIFY (arg5); \ + register long long __s0 asm ("$16") __attribute__ ((unused)) \ = (number); \ - register long long int __v0 asm ("$2"); \ -- register long long int __a0 asm ("$4") = ARGIFY (arg1); \ -- register long long int __a1 asm ("$5") = ARGIFY (arg2); \ -- register long long int __a2 asm ("$6") = ARGIFY (arg3); \ -- register long long int __a3 asm ("$7") = ARGIFY (arg4); \ -- register long long int __a4 asm ("$8") = ARGIFY (arg5); \ -+ register long long int __a0 asm ("$4") = _arg1; \ -+ register long long int __a1 asm ("$5") = _arg2; \ -+ register long long int __a2 asm ("$6") = _arg3; \ -+ register long long int __a3 asm ("$7") = _arg4; \ -+ register long long int __a4 asm ("$8") = _arg5; \ + register long long __v0 asm ("$2"); \ +- register long long __a0 asm ("$4") = ARGIFY (arg1); \ +- register long long __a1 asm ("$5") = ARGIFY (arg2); \ +- register long long __a2 asm ("$6") = ARGIFY (arg3); \ +- register long long __a3 asm ("$7") = ARGIFY (arg4); \ +- register long long __a4 asm ("$8") = ARGIFY (arg5); \ ++ register long long __a0 asm ("$4") = _arg1; \ ++ register long long __a1 asm ("$5") = _arg2; \ ++ register long long __a2 asm ("$6") = _arg3; \ ++ register long long __a3 asm ("$7") = _arg4; \ ++ register long long __a4 asm ("$8") = _arg5; \ __asm__ volatile ( \ ".set\tnoreorder\n\t" \ v0_init \ @@ -270,15 +285,21 @@ - long int _sys_result; \ + long _sys_result; \ \ { \ -+ long long int _arg1 = ARGIFY (arg1); \ -+ long long int _arg2 = ARGIFY (arg2); \ -+ long long int _arg3 = ARGIFY (arg3); \ -+ long long int _arg4 = ARGIFY (arg4); \ -+ long long int _arg5 = ARGIFY (arg5); \ -+ long long int _arg6 = ARGIFY (arg6); \ - register long long int __s0 asm ("$16") __attribute__ ((unused))\ ++ long long _arg1 = ARGIFY (arg1); \ ++ long long _arg2 = ARGIFY (arg2); \ ++ long long _arg3 = ARGIFY (arg3); \ ++ long long _arg4 = ARGIFY (arg4); \ ++ long long _arg5 = ARGIFY (arg5); \ ++ long long _arg6 = ARGIFY (arg6); \ + register long long __s0 asm ("$16") __attribute__ ((unused)) \ = (number); \ - register long long int __v0 asm ("$2"); \ -- register long long int __a0 asm ("$4") = ARGIFY (arg1); \ -- register long long int __a1 asm ("$5") = ARGIFY (arg2); \ -- register long long int __a2 asm ("$6") = ARGIFY (arg3); \ -- register long long int __a3 asm ("$7") = ARGIFY (arg4); \ -- register long long int __a4 asm ("$8") = ARGIFY (arg5); \ -- register long long int __a5 asm ("$9") = ARGIFY (arg6); \ -+ register long long int __a0 asm ("$4") = _arg1; \ -+ register long long int __a1 asm ("$5") = _arg2; \ -+ register long long int __a2 asm ("$6") = _arg3; \ -+ register long long int __a3 asm ("$7") = _arg4; \ -+ register long long int __a4 asm ("$8") = _arg5; \ -+ register long long int __a5 asm ("$9") = _arg6; \ + register long long __v0 asm ("$2"); \ +- register long long __a0 asm ("$4") = ARGIFY (arg1); \ +- register long long __a1 asm ("$5") = ARGIFY (arg2); \ +- register long long __a2 asm ("$6") = ARGIFY (arg3); \ +- register long long __a3 asm ("$7") = ARGIFY (arg4); \ +- register long long __a4 asm ("$8") = ARGIFY (arg5); \ +- register long long __a5 asm ("$9") = ARGIFY (arg6); \ ++ register long long __a0 asm ("$4") = _arg1; \ ++ register long long __a1 asm ("$5") = _arg2; \ ++ register long long __a2 asm ("$6") = _arg3; \ ++ register long long __a3 asm ("$7") = _arg4; \ ++ register long long __a4 asm ("$8") = _arg5; \ ++ register long long __a5 asm ("$9") = _arg6; \ __asm__ volatile ( \ ".set\tnoreorder\n\t" \ v0_init \ diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n64/sysdep.h b/sysdeps/unix/sysv/linux/mips/mips64/n64/sysdep.h -index db0e0b4044..3e1f1cc3c5 100644 +index 9d30291f84..f47613deaf 100644 --- a/sysdeps/unix/sysv/linux/mips/mips64/n64/sysdep.h +++ b/sysdeps/unix/sysv/linux/mips/mips64/n64/sysdep.h @@ -134,10 +134,11 @@ - long int _sys_result; \ + long _sys_result; \ \ { \ -+ long int _arg1 = (long int) (arg1); \ - register long int __s0 asm ("$16") __attribute__ ((unused)) \ ++ long _arg1 = (long) (arg1); \ + register long __s0 asm ("$16") __attribute__ ((unused)) \ = (number); \ - register long int __v0 asm ("$2"); \ -- register long int __a0 asm ("$4") = (long int) (arg1); \ -+ register long int __a0 asm ("$4") = _arg1; \ - register long int __a3 asm ("$7"); \ + register long __v0 asm ("$2"); \ +- register long __a0 asm ("$4") = (long) (arg1); \ ++ register long __a0 asm ("$4") = _arg1; \ + register long __a3 asm ("$7"); \ __asm__ volatile ( \ ".set\tnoreorder\n\t" \ @@ -158,11 +159,13 @@ - long int _sys_result; \ + long _sys_result; \ \ { \ -+ long int _arg1 = (long int) (arg1); \ -+ long int _arg2 = (long int) (arg2); \ - register long int __s0 asm ("$16") __attribute__ ((unused)) \ ++ long _arg1 = (long) (arg1); \ ++ long _arg2 = (long) (arg2); \ + register long __s0 asm ("$16") __attribute__ ((unused)) \ = (number); \ - register long int __v0 asm ("$2"); \ -- register long int __a0 asm ("$4") = (long int) (arg1); \ -- register long int __a1 asm ("$5") = (long int) (arg2); \ -+ register long int __a0 asm ("$4") = _arg1; \ -+ register long int __a1 asm ("$5") = _arg2; \ - register long int __a3 asm ("$7"); \ + register long __v0 asm ("$2"); \ +- register long __a0 asm ("$4") = (long) (arg1); \ +- register long __a1 asm ("$5") = (long) (arg2); \ ++ register long __a0 asm ("$4") = _arg1; \ ++ register long __a1 asm ("$5") = _arg2; \ + register long __a3 asm ("$7"); \ __asm__ volatile ( \ ".set\tnoreorder\n\t" \ @@ -184,12 +187,15 @@ - long int _sys_result; \ + long _sys_result; \ \ { \ -+ long int _arg1 = (long int) (arg1); \ -+ long int _arg2 = (long int) (arg2); \ -+ long int _arg3 = (long int) (arg3); \ - register long int __s0 asm ("$16") __attribute__ ((unused)) \ ++ long _arg1 = (long) (arg1); \ ++ long _arg2 = (long) (arg2); \ ++ long _arg3 = (long) (arg3); \ + register long __s0 asm ("$16") __attribute__ ((unused)) \ = (number); \ - register long int __v0 asm ("$2"); \ -- register long int __a0 asm ("$4") = (long int) (arg1); \ -- register long int __a1 asm ("$5") = (long int) (arg2); \ -- register long int __a2 asm ("$6") = (long int) (arg3); \ -+ register long int __a0 asm ("$4") = _arg1; \ -+ register long int __a1 asm ("$5") = _arg2; \ -+ register long int __a2 asm ("$6") = _arg3; \ - register long int __a3 asm ("$7"); \ + register long __v0 asm ("$2"); \ +- register long __a0 asm ("$4") = (long) (arg1); \ +- register long __a1 asm ("$5") = (long) (arg2); \ +- register long __a2 asm ("$6") = (long) (arg3); \ ++ register long __a0 asm ("$4") = _arg1; \ ++ register long __a1 asm ("$5") = _arg2; \ ++ register long __a2 asm ("$6") = _arg3; \ + register long __a3 asm ("$7"); \ __asm__ volatile ( \ ".set\tnoreorder\n\t" \ @@ -211,13 +217,17 @@ - long int _sys_result; \ + long _sys_result; \ \ { \ -+ long int _arg1 = (long int) (arg1); \ -+ long int _arg2 = (long int) (arg2); \ -+ long int _arg3 = (long int) (arg3); \ -+ long int _arg4 = (long int) (arg4); \ - register long int __s0 asm ("$16") __attribute__ ((unused)) \ ++ long _arg1 = (long) (arg1); \ ++ long _arg2 = (long) (arg2); \ ++ long _arg3 = (long) (arg3); \ ++ long _arg4 = (long) (arg4); \ + register long __s0 asm ("$16") __attribute__ ((unused)) \ = (number); \ - register long int __v0 asm ("$2"); \ -- register long int __a0 asm ("$4") = (long int) (arg1); \ -- register long int __a1 asm ("$5") = (long int) (arg2); \ -- register long int __a2 asm ("$6") = (long int) (arg3); \ -- register long int __a3 asm ("$7") = (long int) (arg4); \ -+ register long int __a0 asm ("$4") = _arg1; \ -+ register long int __a1 asm ("$5") = _arg2; \ -+ register long int __a2 asm ("$6") = _arg3; \ -+ register long int __a3 asm ("$7") = _arg4; \ + register long __v0 asm ("$2"); \ +- register long __a0 asm ("$4") = (long) (arg1); \ +- register long __a1 asm ("$5") = (long) (arg2); \ +- register long __a2 asm ("$6") = (long) (arg3); \ +- register long __a3 asm ("$7") = (long) (arg4); \ ++ register long __a0 asm ("$4") = _arg1; \ ++ register long __a1 asm ("$5") = _arg2; \ ++ register long __a2 asm ("$6") = _arg3; \ ++ register long __a3 asm ("$7") = _arg4; \ __asm__ volatile ( \ ".set\tnoreorder\n\t" \ v0_init \ @@ -238,14 +248,19 @@ - long int _sys_result; \ + long _sys_result; \ \ { \ -+ long int _arg1 = (long int) (arg1); \ -+ long int _arg2 = (long int) (arg2); \ -+ long int _arg3 = (long int) (arg3); \ -+ long int _arg4 = (long int) (arg4); \ -+ long int _arg5 = (long int) (arg5); \ - register long int __s0 asm ("$16") __attribute__ ((unused)) \ ++ long _arg1 = (long) (arg1); \ ++ long _arg2 = (long) (arg2); \ ++ long _arg3 = (long) (arg3); \ ++ long _arg4 = (long) (arg4); \ ++ long _arg5 = (long) (arg5); \ + register long __s0 asm ("$16") __attribute__ ((unused)) \ = (number); \ - register long int __v0 asm ("$2"); \ -- register long int __a0 asm ("$4") = (long int) (arg1); \ -- register long int __a1 asm ("$5") = (long int) (arg2); \ -- register long int __a2 asm ("$6") = (long int) (arg3); \ -- register long int __a3 asm ("$7") = (long int) (arg4); \ -- register long int __a4 asm ("$8") = (long int) (arg5); \ -+ register long int __a0 asm ("$4") = _arg1; \ -+ register long int __a1 asm ("$5") = _arg2; \ -+ register long int __a2 asm ("$6") = _arg3; \ -+ register long int __a3 asm ("$7") = _arg4; \ -+ register long int __a4 asm ("$8") = _arg5; \ + register long __v0 asm ("$2"); \ +- register long __a0 asm ("$4") = (long) (arg1); \ +- register long __a1 asm ("$5") = (long) (arg2); \ +- register long __a2 asm ("$6") = (long) (arg3); \ +- register long __a3 asm ("$7") = (long) (arg4); \ +- register long __a4 asm ("$8") = (long) (arg5); \ ++ register long __a0 asm ("$4") = _arg1; \ ++ register long __a1 asm ("$5") = _arg2; \ ++ register long __a2 asm ("$6") = _arg3; \ ++ register long __a3 asm ("$7") = _arg4; \ ++ register long __a4 asm ("$8") = _arg5; \ __asm__ volatile ( \ ".set\tnoreorder\n\t" \ v0_init \ @@ -266,15 +281,21 @@ - long int _sys_result; \ + long _sys_result; \ \ { \ -+ long int _arg1 = (long int) (arg1); \ -+ long int _arg2 = (long int) (arg2); \ -+ long int _arg3 = (long int) (arg3); \ -+ long int _arg4 = (long int) (arg4); \ -+ long int _arg5 = (long int) (arg5); \ -+ long int _arg6 = (long int) (arg6); \ - register long int __s0 asm ("$16") __attribute__ ((unused)) \ ++ long _arg1 = (long) (arg1); \ ++ long _arg2 = (long) (arg2); \ ++ long _arg3 = (long) (arg3); \ ++ long _arg4 = (long) (arg4); \ ++ long _arg5 = (long) (arg5); \ ++ long _arg6 = (long) (arg6); \ + register long __s0 asm ("$16") __attribute__ ((unused)) \ = (number); \ - register long int __v0 asm ("$2"); \ -- register long int __a0 asm ("$4") = (long int) (arg1); \ -- register long int __a1 asm ("$5") = (long int) (arg2); \ -- register long int __a2 asm ("$6") = (long int) (arg3); \ -- register long int __a3 asm ("$7") = (long int) (arg4); \ -- register long int __a4 asm ("$8") = (long int) (arg5); \ -- register long int __a5 asm ("$9") = (long int) (arg6); \ -+ register long int __a0 asm ("$4") = _arg1; \ -+ register long int __a1 asm ("$5") = _arg2; \ -+ register long int __a2 asm ("$6") = _arg3; \ -+ register long int __a3 asm ("$7") = _arg4; \ -+ register long int __a4 asm ("$8") = _arg5; \ -+ register long int __a5 asm ("$9") = _arg6; \ + register long __v0 asm ("$2"); \ +- register long __a0 asm ("$4") = (long) (arg1); \ +- register long __a1 asm ("$5") = (long) (arg2); \ +- register long __a2 asm ("$6") = (long) (arg3); \ +- register long __a3 asm ("$7") = (long) (arg4); \ +- register long __a4 asm ("$8") = (long) (arg5); \ +- register long __a5 asm ("$9") = (long) (arg6); \ ++ register long __a0 asm ("$4") = _arg1; \ ++ register long __a1 asm ("$5") = _arg2; \ ++ register long __a2 asm ("$6") = _arg3; \ ++ register long __a3 asm ("$7") = _arg4; \ ++ register long __a4 asm ("$8") = _arg5; \ ++ register long __a5 asm ("$9") = _arg6; \ __asm__ volatile ( \ ".set\tnoreorder\n\t" \ v0_init \ -- -2.39.3 - +2.24.1 -- Gitee From a4401a7cd54c4b529a34bf01af46fc2683df4dc3 Mon Sep 17 00:00:00 2001 From: Zhou Zhifa Date: Tue, 18 Jul 2023 10:44:46 +0000 Subject: [PATCH 6/6] Update the version info --- glibc.spec | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/glibc.spec b/glibc.spec index d4e5e24..df0e771 100644 --- a/glibc.spec +++ b/glibc.spec @@ -62,7 +62,7 @@ ############################################################################## Name: glibc Version: 2.28 -Release: 93 +Release: 94 Summary: The GNU libc libraries License: %{all_license} URL: http://www.gnu.org/software/glibc/ @@ -1216,7 +1216,7 @@ fi %endif %changelog -* Tue Jul 18 2023 Zhou Zhifa -2.28-93 +* Tue Jul 18 2023 Zhou Zhifa - 2.28-94 - mips: Fix argument passing for inlined syscalls on Linux [BZ #25523] * Thu Feb 23 2023 Qingqing Li - 2.28-93 -- Gitee