This is the mail archive of the libc-ports@sources.redhat.com mailing list for the libc-ports project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Remove more obsolete ARM code


I've applied this patch with some more cleanups of no-longer-relevant
code in the ARM port.

* The minimum kernel headers version (for all architectures) is
  2.6.19.1.  Various __NR_* values are defined for ARM by then,
  meaning there is no need for conditionals on whether they are
  defined.  Any ARM EABI headers that failed to undefine __NR_stime
  and __NR_alarm are older than that as well, so there is no need to
  allow for such headers in glibc.  Similarly, there is no need to
  allow for headers defining __NR_SYSCALL_BASE != 0 for EABI.  (Both
  of those were probably allowing for early versions of headers while
  the EABI port was still being developed.)

* The definition of SWI_BASE in sysdep.h is unused and an OABI relic.

* bits/endian.h no longer needs to allow for FPA floating point; with
  the EABI, floating-point types have the same endianness as integer
  types, meaning the default in endian.h suffices.

* bits/huge_val.h was only present for EABI to override an OABI
  version for FPA; it's essentially identical to the default version
  in sysdeps/ieee754, so not needed now.

* bits/string.h was only present to override string inlines that
  didn't work with the OABI structure layout/alignment peculiarities.
  This issue does not apply for EABI.  (The inlines in question aren't
  actually used with any GCC version recent enough to support EABI, so
  this doesn't matter much.)

diff --git a/ChangeLog.arm b/ChangeLog.arm
index bfb87aa..a12823b 100644
--- a/ChangeLog.arm
+++ b/ChangeLog.arm
@@ -1,5 +1,23 @@
 2012-05-19  Joseph Myers  <joseph@codesourcery.com>
 
+	* sysdeps/arm/bits/endian.h (__FLOAT_WORD_ORDER): Remove
+	definitions.
+	* sysdeps/arm/bits/huge_val.h: Remove file.
+	* sysdeps/arm/bits/string.h: Remove file.
+	* sysdeps/unix/sysv/linux/arm/readahead.c [__NR_readahead]: Make
+	code unconditional.
+	[!__NR_readahead]: Remove conditional code.
+	* sysdeps/unix/sysv/linux/arm/sigaction.c [__NR_rt_sigreturn]:
+	Make code unconditional.
+	[!__NR_rt_sigreturn]: Remove conditional code.
+	* sysdeps/unix/sysv/linux/arm/sigrestorer.S [__NR_rt_sigreturn]:
+	Make code unconditional.
+	* sysdeps/unix/sysv/linux/arm/sysdep.h [__NR_SYSCALL_BASE != 0]:
+	Remove conditional #error.
+	(__NR_stime): Remove #undef.
+	(__NR_alarm): Likewise.
+	(SWI_BASE): Remove.
+
 	* sysdeps/unix/sysv/linux/arm/ftruncate64.c (kernel-features.h):
 	Don't include.
 	[__NR_ftruncate64]: Make code unconditional.
diff --git a/sysdeps/arm/bits/endian.h b/sysdeps/arm/bits/endian.h
index dc909c3..f49f6ab 100644
--- a/sysdeps/arm/bits/endian.h
+++ b/sysdeps/arm/bits/endian.h
@@ -8,12 +8,3 @@
 #else
 #define __BYTE_ORDER __LITTLE_ENDIAN
 #endif
-
-/* FPA floating point units are always big-endian, irrespective of the
-   CPU endianness.  VFP floating point units use the same endianness
-   as the rest of the system.  */
-#ifdef __VFP_FP__
-#define __FLOAT_WORD_ORDER __BYTE_ORDER
-#else
-#define __FLOAT_WORD_ORDER __BIG_ENDIAN
-#endif
diff --git a/sysdeps/arm/bits/huge_val.h b/sysdeps/arm/bits/huge_val.h
deleted file mode 100644
index 6008b10..0000000
--- a/sysdeps/arm/bits/huge_val.h
+++ /dev/null
@@ -1,54 +0,0 @@
-/* `HUGE_VAL' constant for IEEE 754 machines (where it is infinity).
-   Used by <stdlib.h> and <math.h> functions for overflow.
-   Copyright (C) 1992, 1995, 1996, 1997, 1999, 2000, 2004
-   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
-   <http://www.gnu.org/licenses/>.  */
-
-#ifndef _MATH_H
-# error "Never use <bits/huge_val.h> directly; include <math.h> instead."
-#endif
-
-/* IEEE positive infinity (-HUGE_VAL is negative infinity).  */
-
-#if __GNUC_PREREQ(3,3)
-# define HUGE_VAL	(__builtin_huge_val())
-#elif __GNUC_PREREQ(2,96)
-# define HUGE_VAL	(__extension__ 0x1.0p2047)
-#elif defined __GNUC__
-
-# define HUGE_VAL \
-  (__extension__							      \
-   ((union { unsigned __l __attribute__((__mode__(__DI__))); double __d; })   \
-    { __l: 0x7ff0000000000000ULL }).__d)
-
-#else /* not GCC */
-
-# include <endian.h>
-
-typedef union { unsigned char __c[8]; double __d; } __huge_val_t;
-
-# if __BYTE_ORDER == __BIG_ENDIAN
-#  define __HUGE_VAL_bytes	{ 0x7f, 0xf0, 0, 0, 0, 0, 0, 0 }
-# endif
-# if __BYTE_ORDER == __LITTLE_ENDIAN
-#  define __HUGE_VAL_bytes	{ 0, 0, 0, 0, 0, 0, 0xf0, 0x7f }
-# endif
-
-static __huge_val_t __huge_val = { __HUGE_VAL_bytes };
-# define HUGE_VAL	(__huge_val.__d)
-
-#endif	/* GCC.  */
diff --git a/sysdeps/arm/bits/string.h b/sysdeps/arm/bits/string.h
deleted file mode 100644
index 21b5f44..0000000
--- a/sysdeps/arm/bits/string.h
+++ /dev/null
@@ -1,30 +0,0 @@
-/* Optimized, inlined string functions.  ARM version.
-   Copyright (C) 1998, 1999, 2000 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
-   <http://www.gnu.org/licenses/>.  */
-
-#ifndef _STRING_H
-# error "Never use <bits/string.h> directly; include <string.h> instead."
-#endif
-
-/* We must defeat the generic optimized versions of these functions in
-   <bits/string2.h> since they don't work on the ARM.  This is because
-   the games they play with the __STRING2_COPY_ARR# structures fail
-   when structs are always 32-bit aligned.
-   XXX Should provide suitably optimal replacements.  */
-#define _HAVE_STRING_ARCH_strcpy 1
-#define _HAVE_STRING_ARCH_stpcpy 1
-#define _HAVE_STRING_ARCH_mempcpy 1
diff --git a/sysdeps/unix/sysv/linux/arm/readahead.c b/sysdeps/unix/sysv/linux/arm/readahead.c
index 2d15b09..647a3d7 100644
--- a/sysdeps/unix/sysv/linux/arm/readahead.c
+++ b/sysdeps/unix/sysv/linux/arm/readahead.c
@@ -1,5 +1,5 @@
 /* Provide kernel hint to read ahead.
-   Copyright (C) 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
+   Copyright (C) 2002-2012 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
@@ -25,8 +25,6 @@
 #include <sys/syscall.h>
 
 
-#ifdef __NR_readahead
-
 ssize_t
 __readahead (int fd, off64_t offset, size_t count)
 {
@@ -35,16 +33,5 @@ __readahead (int fd, off64_t offset, size_t count)
 					   (off_t) (offset & 0xffffffff)),
 			 count);
 }
-#else
-ssize_t
-__readahead (int fd, off64_t offset, size_t count)
-{
-  __set_errno (ENOSYS);
-  return -1;
-}
-stub_warning (readahead)
-
-# include <stub-tag.h>
-#endif
 
 weak_alias (__readahead, readahead)
diff --git a/sysdeps/unix/sysv/linux/arm/sigaction.c b/sysdeps/unix/sysv/linux/arm/sigaction.c
index 76037cb..fe036c1 100644
--- a/sysdeps/unix/sysv/linux/arm/sigaction.c
+++ b/sysdeps/unix/sysv/linux/arm/sigaction.c
@@ -48,14 +48,9 @@ extern void __default_rt_sa_restorer_v2(void);
 #endif
 
 /* When RT signals are in use we need to use a different return stub.  */
-#ifdef __NR_rt_sigreturn
 #define choose_restorer(flags)					\
   (flags & SA_SIGINFO) ? __default_rt_sa_restorer		\
   : __default_sa_restorer
-#else
-#define choose_restorer(flags)					\
-  __default_sa_restorer
-#endif
 
 /* If ACT is not NULL, change the action for SIG to *ACT.
    If OACT is not NULL, put the old action for SIG in *OACT.  */
diff --git a/sysdeps/unix/sysv/linux/arm/sigrestorer.S b/sysdeps/unix/sysv/linux/arm/sigrestorer.S
index b8ae839..63d83b8 100644
--- a/sysdeps/unix/sysv/linux/arm/sigrestorer.S
+++ b/sysdeps/unix/sysv/linux/arm/sigrestorer.S
@@ -1,4 +1,4 @@
-/* Copyright (C) 1999, 2005, 2009, 2010 Free Software Foundation, Inc.
+/* Copyright (C) 1999-2012 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
@@ -88,8 +88,6 @@ ENTRY(__default_sa_restorer_v2)
 END(__default_sa_restorer_v2)
 #undef OFFSET
 
-#ifdef __NR_rt_sigreturn
-
 #ifndef __ASSUME_SIGFRAME_V2
 #define OFFSET 168
 	.fnstart
@@ -117,5 +115,3 @@ ENTRY(__default_rt_sa_restorer_v2)
 	.fnend
 END(__default_rt_sa_restorer_v2)
 #undef OFFSET
-
-#endif /* __NR_rt_sigreturn */
diff --git a/sysdeps/unix/sysv/linux/arm/sysdep.h b/sysdeps/unix/sysv/linux/arm/sysdep.h
index be67c21..ef83ec2 100644
--- a/sysdeps/unix/sysv/linux/arm/sysdep.h
+++ b/sysdeps/unix/sysv/linux/arm/sysdep.h
@@ -28,16 +28,6 @@
 
 #include <tls.h>
 
-#if __NR_SYSCALL_BASE != 0
-# error Kernel headers are too old
-#endif
-
-/* Don't use stime, even if the kernel headers define it.  We have
-   settimeofday, and some EABI kernels have removed stime.  Similarly
-   use setitimer to implement alarm.  */
-#undef __NR_stime
-#undef __NR_alarm
-
 /* In order to get __set_errno() definition in INLINE_SYSCALL.  */
 #ifndef __ASSEMBLER__
 #include <errno.h>
@@ -48,7 +38,6 @@
    of the kernel.  But these symbols do not follow the SYS_* syntax
    so we have to redefine the `SYS_ify' macro here.  */
 #undef SYS_ify
-#define SWI_BASE  (0x900000)
 #define SYS_ify(syscall_name)	(__NR_##syscall_name)
 
 

-- 
Joseph S. Myers
joseph@codesourcery.com


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]