From: Ulrich Drepper Date: Mon, 26 Oct 1998 11:11:28 +0000 (+0000) Subject: Update. X-Git-Tag: cvs/glibc-2_0_100~46 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=0e103c6d2a8483b6aa448f319b453ef2a6c796af;p=thirdparty%2Fglibc.git Update. 1998-10-26 11:09 Ulrich Drepper * time/Makefile (tests): Add tst-posixtz. * time/tst-posixtz.c: New file. 1998-10-24 Andreas Schwab * elf/rtld.c (process_envvars): Accept any non-null value of LD_BIND_NOW, as mandated by the ABI. 1998-10-24 Andreas Schwab * 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 * 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 * sysdeps/unix/sysv/linux/sparc/sparc32/syscalls.list: Add s_setfsgid and s_setfsuid. 1998-10-26 Ulrich Drepper * time/tzset.c (tz_compute): Correct last patch and describe this in a comment. --- diff --git a/ChangeLog b/ChangeLog index 0973cca0f84..c801687dd9f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,49 @@ +1998-10-26 11:09 Ulrich Drepper + + * time/Makefile (tests): Add tst-posixtz. + * time/tst-posixtz.c: New file. + +1998-10-24 Andreas Schwab + + * elf/rtld.c (process_envvars): Accept any non-null value of + LD_BIND_NOW, as mandated by the ABI. + +1998-10-24 Andreas Schwab + + * 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 + + * 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 + + * sysdeps/unix/sysv/linux/sparc/sparc32/syscalls.list: Add s_setfsgid + and s_setfsuid. + +1998-10-26 Ulrich Drepper + + * time/tzset.c (tz_compute): Correct last patch and describe this + in a comment. + 1998-10-24 Andreas Schwab * sysdeps/unix/sysv/linux/m68k/Makefile [subdir=signal]: Remove diff --git a/elf/rtld.c b/elf/rtld.c index 33002f8cef1..8d3a9c47a14 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 4ccf41daf3e..b48f5382111 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 b89badf831b..6f332ce873f 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 b8421e9bb27..84b5a8afa5c 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 62fc6ca20be..466df377c89 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 #include +#include +#include -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 7f3630c5861..dd38647d954 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 480a93ef44d..495d9b333f1 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 9554fb38785..a9461cab2ec 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 a5b7d97fcff..b8e117770fd 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 f5413ce6b47..3719c9f815e 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 ed7bca030ab..f319c785a2c 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 170639d8845..7620d622a1a 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 00000000000..00a16499f31 --- /dev/null +++ b/time/tst-posixtz.c @@ -0,0 +1,55 @@ +#include +#include +#include +#include + +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 6b9f93239bb..92e22083d5f 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;