diff mbox series

[21/23] linux: Use generic __syscall_error for nios2

Message ID 20201109201826.120534-22-adhemerval.zanella@linaro.org
State Superseded
Headers show
Series Simplify internal Linux syscall | expand

Commit Message

Adhemerval Zanella Nov. 9, 2020, 8:18 p.m. UTC
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/sysdep.S | 50 --------------------------
 sysdeps/unix/sysv/linux/nios2/sysdep.h |  2 ++
 2 files changed, 2 insertions(+), 50 deletions(-)
 delete mode 100644 sysdeps/unix/sysv/linux/nios2/sysdep.S
diff mbox series

Patch

diff --git a/sysdeps/unix/sysv/linux/nios2/sysdep.S b/sysdeps/unix/sysv/linux/nios2/sysdep.S
deleted file mode 100644
index 6efbb5aff6..0000000000
--- a/sysdeps/unix/sysv/linux/nios2/sysdep.S
+++ /dev/null
@@ -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
diff --git a/sysdeps/unix/sysv/linux/nios2/sysdep.h b/sysdeps/unix/sysv/linux/nios2/sysdep.h
index 520c9460a2..882762785b 100644
--- a/sysdeps/unix/sysv/linux/nios2/sysdep.h
+++ b/sysdeps/unix/sysv/linux/nios2/sysdep.h
@@ -19,6 +19,8 @@ 
 #ifndef _LINUX_NIOS2_SYSDEP_H
 #define _LINUX_NIOS2_SYSDEP_H 1
 
+#define SYSCALL_ERROR_FUNC
+
 #include <sysdeps/unix/sysdep.h>
 #include <sysdeps/nios2/sysdep.h>
 #include <sysdeps/unix/sysv/linux/generic/sysdep.h>