about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog46
-rw-r--r--elf/rtld.c8
-rw-r--r--sysdeps/unix/sysv/linux/alpha/syscalls.list2
-rw-r--r--sysdeps/unix/sysv/linux/arm/syscalls.list6
-rw-r--r--sysdeps/unix/sysv/linux/i386/syscalls.list1
-rw-r--r--sysdeps/unix/sysv/linux/llseek.c13
-rw-r--r--sysdeps/unix/sysv/linux/mips/syscalls.list6
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/syscalls.list6
-rw-r--r--sysdeps/unix/sysv/linux/pread.c4
-rw-r--r--sysdeps/unix/sysv/linux/pread64.c4
-rw-r--r--sysdeps/unix/sysv/linux/sparc/sparc32/syscalls.list8
-rw-r--r--sysdeps/unix/sysv/linux/sparc/sparc64/syscalls.list2
-rw-r--r--time/Makefile2
-rw-r--r--time/tst-posixtz.c55
-rw-r--r--time/tzset.c2
15 files changed, 130 insertions, 35 deletions
diff --git a/ChangeLog b/ChangeLog
index 0973cca0f8..c801687dd9 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,49 @@
+1998-10-26 11:09  Ulrich Drepper  <drepper@cygnus.com>
+
+	* time/Makefile (tests): Add tst-posixtz.
+	* time/tst-posixtz.c: New file.
+
+1998-10-24  Andreas Schwab  <schwab@issan.cs.uni-dortmund.de>
+
+	* elf/rtld.c (process_envvars): Accept any non-null value of
+	LD_BIND_NOW, as mandated by the ABI.
+
+1998-10-24  Andreas Schwab  <schwab@issan.cs.uni-dortmund.de>
+
+	* sysdeps/unix/sysv/linux/pread.c: Rename __syscall_pread64 to
+	__syscall_pread.
+	* sysdeps/unix/sysv/linux/pwrite.c: Rename __syscall_pwrite64 to
+	__syscall_pwrite.
+	* sysdeps/unix/sysv/linux/alpha/syscalls.list: Likewise.
+	* sysdeps/unix/sysv/linux/arm/syscalls.list: Likewise.
+	* sysdeps/unix/sysv/linux/mips/syscalls.list: Likewise.
+	* sysdeps/unix/sysv/linux/sparc/sparc32/syscalls.list: Likewise.
+	* sysdeps/unix/sysv/linux/powerpc/syscalls.list: Likewise.  Remove
+	duplicate entries.
+	* sysdeps/unix/sysv/linux/sparc/sparc64/syscalls.list: Remove
+	s_pread64 and s_pwrite64.
+	* sysdeps/unix/sysv/linux/alpha/syscalls.list: Likewise.
+
+1998-10-24  Andreas Schwab  <schwab@issan.cs.uni-dortmund.de>
+
+	* sysdeps/unix/sysv/linux/llseek.c: Use INLINE_SYSCALL.
+	* sysdeps/unix/sysv/linux/arm/syscalls.list: Rename __sys_llseek
+	to __syscall__llseek.
+	* sysdeps/unix/sysv/linux/mips/syscalls.list: Likewise.
+	* sysdeps/unix/sysv/linux/sparc/sparc32/syscalls.list: Likewise.
+	* sysdeps/unix/sysv/linux/i386/syscalls.list: Remove entry for
+	__sys_llseek.
+
+1998-10-26  Cristian Gafton  <gafton@redhat.com>
+
+	* sysdeps/unix/sysv/linux/sparc/sparc32/syscalls.list: Add s_setfsgid
+	and s_setfsuid.
+
+1998-10-26  Ulrich Drepper  <drepper@cygnus.com>
+
+	* time/tzset.c (tz_compute): Correct last patch and describe this
+	in a comment.
+
 1998-10-24  Andreas Schwab  <schwab@issan.cs.uni-dortmund.de>
 
 	* sysdeps/unix/sysv/linux/m68k/Makefile [subdir=signal]: Remove
diff --git a/elf/rtld.c b/elf/rtld.c
index 33002f8cef..8d3a9c47a1 100644
--- a/elf/rtld.c
+++ b/elf/rtld.c
@@ -1170,12 +1170,8 @@ process_envvars (enum mode *modep, int *lazyp)
 
 	case 8:
 	  /* Do we bind early?  */
-	  if (memcmp (&envline[3], "BIND_NOW", 8) == 0
-	      && (envline[12] == '1' || envline[12] == 'y'
-		  || envline[12] == 'Y'
-		  || ((envline[12] == 'o' || envline[12] == 'O')
-		      && (envline[13] == 'n' || envline[13] == 'N'))))
-	    bind_now = 1;
+	  if (memcmp (&envline[3], "BIND_NOW", 8) == 0)
+	    bind_now = envline[12] != '\0';
 	  break;
 
 	case 9:
diff --git a/sysdeps/unix/sysv/linux/alpha/syscalls.list b/sysdeps/unix/sysv/linux/alpha/syscalls.list
index 4ccf41daf3..b48f538211 100644
--- a/sysdeps/unix/sysv/linux/alpha/syscalls.list
+++ b/sysdeps/unix/sysv/linux/alpha/syscalls.list
@@ -93,9 +93,7 @@ s_getpriority	getpriority getpriority	2	__syscall_getpriority
 s_getresgid	getresgid getresgid	3	__syscall_getresgid
 s_getresuid	getresuid getresuid	3	__syscall_getresuid
 s_poll		poll	poll		3	__syscall_poll
-s_pread64	pread64	pread		5	__syscall_pread64
 s_ptrace	ptrace	ptrace		4	__syscall_ptrace
-s_pwrite64	pwrite64 pwrite		5	__syscall_pwrite64
 s_reboot	reboot	reboot		3	__syscall_reboot
 s_sigaction	sigaction sigaction	3	__syscall_sigaction
 s_sigpending	sigpending sigpending	1	__syscall_sigpending
diff --git a/sysdeps/unix/sysv/linux/arm/syscalls.list b/sysdeps/unix/sysv/linux/arm/syscalls.list
index b89badf831..6f332ce873 100644
--- a/sysdeps/unix/sysv/linux/arm/syscalls.list
+++ b/sysdeps/unix/sysv/linux/arm/syscalls.list
@@ -1,7 +1,7 @@
 # File name	Caller	Syscall name	# args	Strong name	Weak names
 
 s_getgroups	getgroups getgroups	2	__syscall_getgroups
-s_llseek	llseek	_llseek		5	__sys_llseek
+s_llseek	llseek	_llseek		5	__syscall__llseek
 s_setfsgid	setfsgid setfsgid	1	__syscall_setfsgid
 s_setfsuid	setfsuid setfsuid	1	__syscall_setfsuid
 s_setgid	setgid	setgid		1	__syscall_setgid
@@ -27,9 +27,9 @@ s_getpriority	getpriority getpriority	2	__syscall_getpriority
 s_getresgid	getresgid getresgid	3	__syscall_getresgid
 s_getresuid	getresuid getresuid	3	__syscall_getresuid
 s_poll		poll	poll		3	__syscall_poll
-s_pread64	pread64	pread		5	__syscall_pread64
+s_pread64	pread64	pread		5	__syscall_pread
 s_ptrace	ptrace	ptrace		4	__syscall_ptrace
-s_pwrite64	pwrite64 pwrite		5	__syscall_pwrite64
+s_pwrite64	pwrite64 pwrite		5	__syscall_pwrite
 s_reboot	reboot	reboot		3	__syscall_reboot
 s_sigaction	sigaction sigaction	3	__syscall_sigaction
 s_sigpending	sigpending sigpending	1	__syscall_sigpending
diff --git a/sysdeps/unix/sysv/linux/i386/syscalls.list b/sysdeps/unix/sysv/linux/i386/syscalls.list
index b8421e9bb2..84b5a8afa5 100644
--- a/sysdeps/unix/sysv/linux/i386/syscalls.list
+++ b/sysdeps/unix/sysv/linux/i386/syscalls.list
@@ -1,5 +1,4 @@
 # File name	Caller	Syscall name	# args	Strong name	Weak names
 
 modify_ldt	EXTRA	modify_ldt	3	__modify_ldt	modify_ldt
-s_llseek	llseek	_llseek		5	__sys_llseek
 vm86		-	vm86		1	__vm86		vm86
diff --git a/sysdeps/unix/sysv/linux/llseek.c b/sysdeps/unix/sysv/linux/llseek.c
index 62fc6ca20b..466df377c8 100644
--- a/sysdeps/unix/sysv/linux/llseek.c
+++ b/sysdeps/unix/sysv/linux/llseek.c
@@ -17,11 +17,14 @@
    write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
    Boston, MA 02111-1307, USA.  */
 
+#include <errno.h>
 #include <sys/types.h>
 
+#include <sysdep.h>
+#include <sys/syscall.h>
 
-extern int __sys_llseek (int fd, off_t offset_hi, off_t offset_lo,
-			 loff_t *result, int whence);
+extern int __syscall__llseek (int fd, off_t offset_hi, off_t offset_lo,
+			      loff_t *result, int whence);
 
 /* Seek to OFFSET on FD, starting from WHENCE.  */
 loff_t
@@ -29,9 +32,9 @@ __llseek (int fd, loff_t offset, int whence)
 {
   loff_t result;
 
-  return (loff_t) (__sys_llseek (fd, (off_t) (offset >> 32),
-				 (off_t) (offset & 0xffffffff),
-				 &result, whence) ?: result);
+  return (loff_t) (INLINE_SYSCALL (_llseek, 5, fd, (off_t) (offset >> 32),
+				   (off_t) (offset & 0xffffffff),
+				   &result, whence) ?: result);
 }
 weak_alias (__llseek, llseek)
 weak_alias (__llseek, __lseek64)
diff --git a/sysdeps/unix/sysv/linux/mips/syscalls.list b/sysdeps/unix/sysv/linux/mips/syscalls.list
index 7f3630c586..dd38647d95 100644
--- a/sysdeps/unix/sysv/linux/mips/syscalls.list
+++ b/sysdeps/unix/sysv/linux/mips/syscalls.list
@@ -40,7 +40,7 @@ getresgid	-	getresgid	3	getresgid
 #
 # There are defined locally because the caller is also defined in this dir.
 #
-s_llseek	llseek	_llseek		5	__sys_llseek
+s_llseek	llseek	_llseek		5	__syscall__llseek
 
 # System calls with wrappers.
 rt_sigaction	-	rt_sigaction	4	__syscall_rt_sigaction
@@ -55,9 +55,9 @@ s_getpriority	getpriority getpriority	2	__syscall_getpriority
 s_getresgid	getresgid getresgid	3	__syscall_getresgid
 s_getresuid	getresuid getresuid	3	__syscall_getresuid
 s_poll		poll	poll		3	__syscall_poll
-s_pread64	pread64	pread		5	__syscall_pread64
+s_pread64	pread64	pread		5	__syscall_pread
 s_ptrace	ptrace	ptrace		4	__syscall_ptrace
-s_pwrite64	pwrite64 pwrite		5	__syscall_pwrite64
+s_pwrite64	pwrite64 pwrite		5	__syscall_pwrite
 s_reboot	reboot	reboot		3	__syscall_reboot
 s_sigaction	sigaction sigaction	3	__syscall_sigaction
 s_sigpending	sigpending sigpending	1	__syscall_sigpending
diff --git a/sysdeps/unix/sysv/linux/powerpc/syscalls.list b/sysdeps/unix/sysv/linux/powerpc/syscalls.list
index 480a93ef44..495d9b333f 100644
--- a/sysdeps/unix/sysv/linux/powerpc/syscalls.list
+++ b/sysdeps/unix/sysv/linux/powerpc/syscalls.list
@@ -3,8 +3,6 @@
 s_ioctl		ioctl	ioctl		3	__syscall_ioctl
 s_llseek	llseek	_llseek		5	__sys_llseek
 s_chown		chown	chown		3	__syscall_chown
-s_pread64	pread64	pread		4	__syscall_pread64 
-s_pwrite64	pwrite64 pwrite		4	__syscall_pwrite64 
 
 # System calls with wrappers.
 rt_sigaction	-	rt_sigaction	4	__syscall_rt_sigaction
@@ -19,9 +17,9 @@ s_getpriority	getpriority getpriority	2	__syscall_getpriority
 s_getresgid	getresgid getresgid	3	__syscall_getresgid
 s_getresuid	getresuid getresuid	3	__syscall_getresuid
 s_poll		poll	poll		3	__syscall_poll
-s_pread64	pread64	pread		5	__syscall_pread64 __syscall_pread
+s_pread64	pread64	pread		5	__syscall_pread
 s_ptrace	ptrace	ptrace		4	__syscall_ptrace
-s_pwrite64	pwrite64 pwrite		5	__syscall_pwrite64 __syscall_pwrite
+s_pwrite64	pwrite64 pwrite		5	__syscall_pwrite
 s_reboot	reboot	reboot		3	__syscall_reboot
 s_sigaction	sigaction sigaction	3	__syscall_sigaction
 s_sigpending	sigpending sigpending	1	__syscall_sigpending
diff --git a/sysdeps/unix/sysv/linux/pread.c b/sysdeps/unix/sysv/linux/pread.c
index 9554fb3878..a9461cab2e 100644
--- a/sysdeps/unix/sysv/linux/pread.c
+++ b/sysdeps/unix/sysv/linux/pread.c
@@ -25,8 +25,8 @@
 
 #ifdef __NR_pread
 
-extern ssize_t __syscall_pread64 (int fd, void *buf, size_t count,
-				  off_t offset_hi, off_t offset_lo);
+extern ssize_t __syscall_pread (int fd, void *buf, size_t count,
+				off_t offset_hi, off_t offset_lo);
 
 static ssize_t __emulate_pread (int fd, void *buf, size_t count,
 				off_t offset) internal_function;
diff --git a/sysdeps/unix/sysv/linux/pread64.c b/sysdeps/unix/sysv/linux/pread64.c
index a5b7d97fcf..b8e117770f 100644
--- a/sysdeps/unix/sysv/linux/pread64.c
+++ b/sysdeps/unix/sysv/linux/pread64.c
@@ -25,8 +25,8 @@
 
 #ifdef __NR_pread
 
-extern ssize_t __syscall_pread64 (int fd, void *buf, size_t count,
-				  off_t offset_hi, off_t offset_lo);
+extern ssize_t __syscall_pread (int fd, void *buf, size_t count,
+				off_t offset_hi, off_t offset_lo);
 
 static ssize_t __emulate_pread64 (int fd, void *buf, size_t count,
 				  off64_t offset) internal_function;
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/syscalls.list b/sysdeps/unix/sysv/linux/sparc/sparc32/syscalls.list
index f5413ce6b4..3719c9f815 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc32/syscalls.list
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/syscalls.list
@@ -2,7 +2,9 @@
 
 s_getgroups	getgroups getgroups	2	__syscall_getgroups
 s_getpagesize	getpagesize getpagesize	0	__syscall_getpagesize
-s_llseek	llseek	_llseek		5	__sys_llseek
+s_llseek	llseek	_llseek		5	__syscall__llseek
+s_setfsgid	setfsgid setfsgid	1	__syscall_setfsgid
+s_setfsuid	setfsuid setfsuid	1	__syscall_setfsuid
 s_setgid	setgid	setgid		1	__syscall_setgid
 s_setgroups	setgroups setgroups	2	__syscall_setgroups
 s_setregid	setregid setregid	2	__syscall_setregid
@@ -24,9 +26,9 @@ s_getpriority	getpriority getpriority	2	__syscall_getpriority
 s_getresgid	getresgid getresgid	3	__syscall_getresgid
 s_getresuid	getresuid getresuid	3	__syscall_getresuid
 s_poll		poll	poll		3	__syscall_poll
-s_pread64	pread64	pread		5	__syscall_pread64
+s_pread64	pread64	pread		5	__syscall_pread
 s_ptrace	ptrace	ptrace		4	__syscall_ptrace
-s_pwrite64	pwrite64 pwrite		5	__syscall_pwrite64
+s_pwrite64	pwrite64 pwrite		5	__syscall_pwrite
 s_reboot	reboot	reboot		3	__syscall_reboot
 s_sigaction	sigaction sigaction	3	__syscall_sigaction
 s_sigpending	sigpending sigpending	1	__syscall_sigpending
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/syscalls.list b/sysdeps/unix/sysv/linux/sparc/sparc64/syscalls.list
index ed7bca030a..f319c785a2 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc64/syscalls.list
+++ b/sysdeps/unix/sysv/linux/sparc/sparc64/syscalls.list
@@ -47,9 +47,7 @@ s_getpriority	getpriority getpriority	2	__syscall_getpriority
 s_getresgid	getresgid getresgid	3	__syscall_getresgid
 s_getresuid	getresuid getresuid	3	__syscall_getresuid
 s_poll		poll	poll		3	__syscall_poll
-s_pread64	pread64	pread		5	__syscall_pread64
 s_ptrace	ptrace	ptrace		4	__syscall_ptrace
-s_pwrite64	pwrite64 pwrite		5	__syscall_pwrite64
 s_reboot	reboot	reboot		3	__syscall_reboot
 s_sigaction	sigaction sigaction	3	__syscall_sigaction
 s_sigpending	sigpending sigpending	1	__syscall_sigpending
diff --git a/time/Makefile b/time/Makefile
index 170639d884..7620d622a1 100644
--- a/time/Makefile
+++ b/time/Makefile
@@ -30,7 +30,7 @@ routines := offtime asctime clock ctime ctime_r difftime \
 	    stime dysize timegm ftime			 \
 	    strptime getdate strfxtime
 
-tests	:= test_time clocktest
+tests	:= test_time clocktest tst-posixtz
 
 include ../Rules
 
diff --git a/time/tst-posixtz.c b/time/tst-posixtz.c
new file mode 100644
index 0000000000..00a16499f3
--- /dev/null
+++ b/time/tst-posixtz.c
@@ -0,0 +1,55 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <time.h>
+
+struct
+{
+  time_t when;
+  const char *tz;
+  const char *result;
+} tests[] =
+{
+  { 909312849L, "AEST-10AEDST-11,M10.5.0,M3.5.0",
+    "1998/10/25 21:54:09 dst=1 zone=AEDST" },
+  { 924864849L, "AEST-10AEDST-11,M10.5.0,M3.5.0",
+    "1999/04/23 20:54:09 dst=0 zone=AEST" },
+};
+
+int
+main (void)
+{
+  int result = 0;
+  int cnt;
+
+  for (cnt = 0; cnt < sizeof (tests) / sizeof (tests[0]); ++cnt)
+    {
+      char buf[100];
+      struct tm *tmp;
+
+      printf ("TZ = \"%s\", time = %ld => ", tests[cnt].tz, tests[cnt].when);
+      fflush (stdout);
+
+      setenv ("TZ", tests[cnt].tz, 1);
+
+      tmp = localtime (&tests[cnt].when);
+
+      snprintf (buf, sizeof (buf),
+		"%04d/%02d/%02d %02d:%02d:%02d dst=%d zone=%s",
+		tmp->tm_year + 1900, tmp->tm_mon + 1, tmp->tm_mday,
+		tmp->tm_hour, tmp->tm_min, tmp->tm_sec, tmp->tm_isdst,
+		tzname[tmp->tm_isdst ? 1 : 0]);
+
+      fputs (buf, stdout);
+
+      if (strcmp (buf, tests[cnt].result) == 0)
+	puts (", OK");
+      else
+	{
+	  result = 1;
+	  puts (", FAIL");
+	}
+    }
+
+  return result;
+}
diff --git a/time/tzset.c b/time/tzset.c
index 6b9f93239b..92e22083d5 100644
--- a/time/tzset.c
+++ b/time/tzset.c
@@ -524,7 +524,7 @@ tz_compute (timer, tm)
      For the later the daylight saving time ends in the next year.
      It is easier to detect this after first computing the time for the
      wrong year since now we simply can compare the times to switch.  */
-  if (tz_rules[0].change < tz_rules[1].change
+  if (tz_rules[0].change > tz_rules[1].change
       && ! compute_change (&tz_rules[1], 1900 + tm->tm_year + 1))
     return 0;