[v2,20/23] linux: Use generic __syscall_error for nios2
Commit Message
The usage of __syscall_error function on dynamic objects only
increases the total size slightly:
--- sizes-nios2-linux-gnu.inline
+++ sizes-nios2-linux-gnu.outline
text data bss dec hex filename
-1425296 78844 9224 1513364 171794 libc.so
- 143824 8138 184 152146 25252 elf/ld.so
- 101762 9260 8356 119378 1d252 nptl/libpthread.so
- 26183 2392 160 28735 703f rt/librt.so
+1425592 80724 9224 1515540 172014 libc.so
+ 143960 8142 184 152286 252de elf/ld.so
+ 102278 10552 8356 121186 1d962 nptl/libpthread.so
+ 26175 2396 160 28731 703b rt/librt.so
And since the port already issues the function call for static
object it simplifies the implementation since it avoid add an
arch-specific syscall_error.c.
Checked with cross make check for nios2-linux-gnu.
---
sysdeps/unix/sysv/linux/nios2/syscall_error.h | 25 ++++++++++
sysdeps/unix/sysv/linux/nios2/sysdep.S | 50 -------------------
2 files changed, 25 insertions(+), 50 deletions(-)
create mode 100644 sysdeps/unix/sysv/linux/nios2/syscall_error.h
delete mode 100644 sysdeps/unix/sysv/linux/nios2/sysdep.S
new file mode 100644
@@ -0,0 +1,25 @@
+/* Linux wrappers for setting errno. NIOS2 version.
+ Copyright (C) 2020 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <https://www.gnu.org/licenses/>. */
+
+#ifndef _SYSCALL_ERROR_H
+#define _SYSCALL_ERROR_H
+
+#define SYSCALL_ERROR_FUNC 1
+#define SYSCALL_ERROR_FUNC_ATTR
+
+#endif
deleted file mode 100644
@@ -1,50 +0,0 @@
-/* Static library error handling code fragment for Nios II.
- Copyright (C) 2015-2020 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
-
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public License as
- published by the Free Software Foundation; either version 2.1 of the
- License, or (at your option) any later version.
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, see
- <https://www.gnu.org/licenses/>. */
-
-#include <sysdep.h>
-
-/* The following code is only used in the static library. In the shared
- library, the error handling code is at the end of each function. */
-
-#ifndef PIC
-
-/* In the static library, the syscall stubs jump here when they detect
- an error. */
-
-# undef CALL_MCOUNT
-# define CALL_MCOUNT /* Don't insert the profiling call, it clobbers r2. */
-
-# if IS_IN (libc)
-# define SYSCALL_ERROR_ERRNO __libc_errno
-# else
-# define SYSCALL_ERROR_ERRNO errno
-# endif
- .text
-ENTRY (__syscall_error)
- nextpc r3
-1:
- movhi r8, %hiadj(_gp_got - 1b)
- addi r8, r8, %lo(_gp_got - 1b)
- add r3, r3, r8
- ldw r3, %tls_ie(SYSCALL_ERROR_ERRNO)(r3)
- add r3, r23, r3
- stw r2, 0(r3)
- movi r2, -1
- ret
-END (__syscall_error)
-#endif