about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog19
-rw-r--r--include/libc-symbols.h4
-rw-r--r--sysdeps/unix/opendir.c12
-rw-r--r--sysdeps/unix/sysv/aix/Makefile2
-rw-r--r--sysdeps/unix/sysv/aix/restf.S58
-rw-r--r--sysdeps/unix/sysv/aix/savef.S58
6 files changed, 148 insertions, 5 deletions
diff --git a/ChangeLog b/ChangeLog
index 0d73c771f2..9153b726b3 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,22 @@
+2000-12-05  Ulrich Drepper  <drepper@redhat.com>
+
+	* sysdeps/unix/sysv/aix/Makefile [$(subdir)==misc]
+	(sysdep_routines): Add restf and savef.
+	* sysdeps/unix/sysv/aix/restf.c: New file.
+	* sysdeps/unix/sysv/aix/savef.c: New file.
+	Patches by Michael Keezer <mkeezer@redhat.com>.
+
+	* sysdeps/unix/opendir.c (__opendir): Don't use o_directory_works
+	if O_DIRECTORY is not defined.
+	Patch by Michael Keezer <mkeezer@redhat.com>.
+
+	* include/libc-symbols.h (C_SYMBOL_DOT_NAME): Define.
+	Patch by Michael Keezer <mkeezer@redhat.com>.
+
+	* locale/programs/linereader.c (get_toplvl_escape): Recognize more
+	than 4 bytes in escape sequence.
+	Patch by Shinya Hanataka <hanataka@abyss.rim.or.jp>.
+
 2000-12-05  Andreas Jaeger  <aj@suse.de>
 
 	* sysdeps/unix/sysv/linux/mips/sys/tas.h (_test_and_set): Don't
diff --git a/include/libc-symbols.h b/include/libc-symbols.h
index 06d5602f7d..6cac04b91a 100644
--- a/include/libc-symbols.h
+++ b/include/libc-symbols.h
@@ -80,6 +80,10 @@
 # define ASM_LINE_SEP ;
 #endif
 
+#ifndef C_SYMBOL_DOT_NAME
+# define C_SYMBOL_DOT_NAME(name) .##name
+#endif
+
 #ifndef __ASSEMBLER__
 /* GCC understands weak symbols and aliases; use its interface where
    possible, instead of embedded assembly language.  */
diff --git a/sysdeps/unix/opendir.c b/sysdeps/unix/opendir.c
index 461f82bc97..927caab70f 100644
--- a/sysdeps/unix/opendir.c
+++ b/sysdeps/unix/opendir.c
@@ -120,11 +120,15 @@ __opendir (const char *name)
      O_DIRECTORY flag is honored by the kernel.  */
   if (__builtin_expect (__fxstat64 (_STAT_VER, fd, &statbuf), 0) < 0)
     goto lose;
-  if (o_directory_works <= 0
-      && __builtin_expect (! S_ISDIR (statbuf.st_mode), 0))
+#ifdef O_DIRECTORY
+  if (o_directory_works <= 0)
+#endif
     {
-      save_errno = ENOTDIR;
-      goto lose;
+      if (__builtin_expect (! S_ISDIR (statbuf.st_mode), 0))
+	{
+	  save_errno = ENOTDIR;
+	  goto lose;
+	}
     }
 
   if (__builtin_expect (__fcntl (fd, F_SETFD, FD_CLOEXEC), 0) < 0)
diff --git a/sysdeps/unix/sysv/aix/Makefile b/sysdeps/unix/sysv/aix/Makefile
index b49b56267e..cb8683bee5 100644
--- a/sysdeps/unix/sysv/aix/Makefile
+++ b/sysdeps/unix/sysv/aix/Makefile
@@ -6,7 +6,7 @@
 static-start-installed-name = /usr/lib/crt0.o
 
 ifeq ($(subdir),misc)
-sysdep_routines += dl-open dl-sym dl-close
+sysdep_routines += dl-open dl-sym dl-close restf savef
 endif
 
 ifeq ($(subdir),login)
diff --git a/sysdeps/unix/sysv/aix/restf.S b/sysdeps/unix/sysv/aix/restf.S
new file mode 100644
index 0000000000..049627e5c4
--- /dev/null
+++ b/sysdeps/unix/sysv/aix/restf.S
@@ -0,0 +1,58 @@
+/* Copyright (C) 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 Library General Public License as
+   published by the Free Software Foundation; either version 2 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
+   Library General Public License for more details.
+
+   You should have received a copy of the GNU Library General Public
+   License along with the GNU C Library; see the file COPYING.LIB.  If not,
+   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
+
+#include <sysdep.h>
+
+ENTRY(_restf_all)
+		ASM_GLOBAL_DIRECTIVE C_TEXT(_restf14)
+C_TEXT(_restf14):	lfd	fp14,-144(r11)
+		ASM_GLOBAL_DIRECTIVE C_TEXT(_restf15)
+C_TEXT(_restf15):	lfd	fp15,-136(r11)
+		ASM_GLOBAL_DIRECTIVE C_TEXT(_restf16)
+C_TEXT(_restf16):	lfd	fp16,-128(r11)
+		ASM_GLOBAL_DIRECTIVE C_TEXT(_restf17)
+C_TEXT(_restf17):	lfd	fp17,-120(r11)
+		ASM_GLOBAL_DIRECTIVE C_TEXT(_restf18)
+C_TEXT(_restf18):	lfd	fp18,-112(r11)
+		ASM_GLOBAL_DIRECTIVE C_TEXT(_restf19)
+C_TEXT(_restf19):	lfd	fp19,-104(r11)
+		ASM_GLOBAL_DIRECTIVE C_TEXT(_restf20)
+C_TEXT(_restf20):	lfd	fp20,-96(r11)
+		ASM_GLOBAL_DIRECTIVE C_TEXT(_restf21)
+C_TEXT(_restf21):	lfd	fp21,-88(r11)
+		ASM_GLOBAL_DIRECTIVE C_TEXT(_restf22)
+C_TEXT(_restf22):	lfd	fp22,-80(r11)
+		ASM_GLOBAL_DIRECTIVE C_TEXT(_restf23)
+C_TEXT(_restf23):	lfd	fp23,-72(r11)
+		ASM_GLOBAL_DIRECTIVE C_TEXT(_restf24)
+C_TEXT(_restf24):	lfd	fp24,-64(r11)
+		ASM_GLOBAL_DIRECTIVE C_TEXT(_restf25)
+C_TEXT(_restf25):	lfd	fp25,-56(r11)
+		ASM_GLOBAL_DIRECTIVE C_TEXT(_restf26)
+C_TEXT(_restf26):	lfd	fp26,-48(r11)
+		ASM_GLOBAL_DIRECTIVE C_TEXT(_restf27)
+C_TEXT(_restf27):	lfd	fp27,-40(r11)
+		ASM_GLOBAL_DIRECTIVE C_TEXT(_restf28)
+C_TEXT(_restf28):	lfd	fp28,-32(r11)
+		ASM_GLOBAL_DIRECTIVE C_TEXT(_restf29)
+C_TEXT(_restf29):	lfd	fp29,-24(r11)
+		ASM_GLOBAL_DIRECTIVE C_TEXT(_restf30)
+C_TEXT(_restf30):	lfd	fp30,-16(r11)
+		ASM_GLOBAL_DIRECTIVE C_TEXT(_restf31)
+C_TEXT(_restf31):	lfd	fp31,-8(r11)
+		blr
diff --git a/sysdeps/unix/sysv/aix/savef.S b/sysdeps/unix/sysv/aix/savef.S
new file mode 100644
index 0000000000..4c10d6ec85
--- /dev/null
+++ b/sysdeps/unix/sysv/aix/savef.S
@@ -0,0 +1,58 @@
+/* Copyright (C) 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 Library General Public License as
+   published by the Free Software Foundation; either version 2 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
+   Library General Public License for more details.
+
+   You should have received a copy of the GNU Library General Public
+   License along with the GNU C Library; see the file COPYING.LIB.  If not,
+   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
+
+#include <sysdep.h>
+
+ENTRY(_savef_all)
+		ASM_GLOBAL_DIRECTIVE C_TEXT(_savef14)
+C_TEXT(_savef14):	stfd	fp14,-144(r11)
+		ASM_GLOBAL_DIRECTIVE C_TEXT(_savef15)
+C_TEXT(_savef15):	stfd	fp15,-136(r11)
+		ASM_GLOBAL_DIRECTIVE C_TEXT(_savef16)
+C_TEXT(_savef16):	stfd	fp16,-128(r11)
+		ASM_GLOBAL_DIRECTIVE C_TEXT(_savef17)
+C_TEXT(_savef17):	stfd	fp17,-120(r11)
+		ASM_GLOBAL_DIRECTIVE C_TEXT(_savef18)
+C_TEXT(_savef18):	stfd	fp18,-112(r11)
+		ASM_GLOBAL_DIRECTIVE C_TEXT(_savef19)
+C_TEXT(_savef19):	stfd	fp19,-104(r11)
+		ASM_GLOBAL_DIRECTIVE C_TEXT(_savef20)
+C_TEXT(_savef20):	stfd	fp20,-96(r11)
+		ASM_GLOBAL_DIRECTIVE C_TEXT(_savef21)
+C_TEXT(_savef21):	stfd	fp21,-88(r11)
+		ASM_GLOBAL_DIRECTIVE C_TEXT(_savef22)
+C_TEXT(_savef22):	stfd	fp22,-80(r11)
+		ASM_GLOBAL_DIRECTIVE C_TEXT(_savef23)
+C_TEXT(_savef23):	stfd	fp23,-72(r11)
+		ASM_GLOBAL_DIRECTIVE C_TEXT(_savef24)
+C_TEXT(_savef24):	stfd	fp24,-64(r11)
+		ASM_GLOBAL_DIRECTIVE C_TEXT(_savef25)
+C_TEXT(_savef25):	stfd	fp25,-56(r11)
+		ASM_GLOBAL_DIRECTIVE C_TEXT(_savef26)
+C_TEXT(_savef26):	stfd	fp26,-48(r11)
+		ASM_GLOBAL_DIRECTIVE C_TEXT(_savef27)
+C_TEXT(_savef27):	stfd	fp27,-40(r11)
+		ASM_GLOBAL_DIRECTIVE C_TEXT(_savef28)
+C_TEXT(_savef28):	stfd	fp28,-32(r11)
+		ASM_GLOBAL_DIRECTIVE C_TEXT(_savef29)
+C_TEXT(_savef29):	stfd	fp29,-24(r11)
+		ASM_GLOBAL_DIRECTIVE C_TEXT(_savef30)
+C_TEXT(_savef30):	stfd	fp30,-16(r11)
+		ASM_GLOBAL_DIRECTIVE C_TEXT(_savef31)
+C_TEXT(_savef31):	stfd	fp31,-8(r11)
+		blr