diff options
-rw-r--r-- | ChangeLog | 37 | ||||
-rw-r--r-- | README.libm | 2 | ||||
-rw-r--r-- | fedora/branch.mk | 4 | ||||
-rw-r--r-- | fedora/glibc.spec.in | 5 | ||||
-rw-r--r-- | io/test-lfs.c | 2 | ||||
-rw-r--r-- | io/tst-fcntl.c | 2 | ||||
-rw-r--r-- | manual/string.texi | 2 | ||||
-rw-r--r-- | nptl/ChangeLog | 5 | ||||
-rw-r--r-- | nptl/tst-cond22.c | 18 | ||||
-rw-r--r-- | posix/tst-exec.c | 2 | ||||
-rw-r--r-- | posix/tst-preadwrite.c | 2 | ||||
-rw-r--r-- | posix/tst-spawn.c | 2 | ||||
-rw-r--r-- | posix/tst-truncate.c | 2 | ||||
-rw-r--r-- | rt/tst-aio.c | 2 | ||||
-rw-r--r-- | rt/tst-aio64.c | 2 | ||||
-rw-r--r-- | rtkaio/ChangeLog | 6 | ||||
-rw-r--r-- | rtkaio/tst-aiod.c | 2 | ||||
-rw-r--r-- | rtkaio/tst-aiod64.c | 2 | ||||
-rw-r--r-- | stdlib/test-canon2.c | 2 | ||||
-rw-r--r-- | sysdeps/powerpc/dl-procinfo.c | 23 | ||||
-rw-r--r-- | sysdeps/powerpc/dl-procinfo.h | 73 | ||||
-rw-r--r-- | sysdeps/powerpc/sysdep.h | 20 |
22 files changed, 171 insertions, 46 deletions
diff --git a/ChangeLog b/ChangeLog index 004efe9aba..32f290aadb 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,40 @@ +2006-09-14 Jakub Jelinek <jakub@redhat.com> + Steven Munroe <sjmunroe@us.ibm.com> + + * sysdeps/powerpc/dl-procinfo.c (_dl_powerpc_cap_flags): Add 4 new cap + names to the beginning. Rename "cell" to "cellbe". + (_dl_powerpc_platforms): New. + * sysdeps/powerpc/dl-procinfo.h (_DL_HWCAP_FIRST): Decrease. + (HWCAP_IMPORTANT): Remove power{4,5,5+} and cell. + (_DL_PLATFORMS_COUNT, _DL_FIRST_PLATFORM): Define. + (_DL_HWCAP_PLATFORM): Define to new mask. + (_dl_platform_string, _dl_string_platform): New functions. + * sysdeps/powerpc/sysdep.h (PPC_FEATURE_BOOKE, PPC_FEATURE_SMT, + PPC_FEATURE_ICACHE_SNOOP, PPC_FEATURE_ARCH_2_05): Define. + +2006-09-12 Jakub Jelinek <jakub@redhat.com> + + [BZ #2526] + * README.libm: Fix a thinko in sqrt algorithm description. + + [BZ #3143] + * manual/string.texi (argz_delete): Fix prototype. + Patch by <alpt@freaknet.org>. + +2006-08-26 Joseph Myers <joseph@codesourcery.com> + + [BZ #3138] + * io/test-lfs.c (do_prepare): Give name_len type size_t. + * io/tst-fcntl.c (do_prepare): Likewise. + * posix/tst-exec.c (do_prepare): Likewise. + * posix/tst-preadwrite.c (do_prepare): Likewise. + * posix/tst-spawn.c (do_prepare): Likewise. + * posix/tst-truncate.c (do_prepare): Likewise. + * rt/tst-aio.c (do_prepare): Likewise. + * rt/tst-aio64.c (do_prepare): Likewise. + * stdlib/test-canon2.c (do_prepare): Give test_dir_len type + size_t. + 2006-09-09 Ulrich Drepper <drepper@redhat.com> [BZ #2821] diff --git a/README.libm b/README.libm index 33ace8c065..f058cf846c 100644 --- a/README.libm +++ b/README.libm @@ -486,7 +486,7 @@ sqrt * Bit by bit method using integer arithmetic. (Slow, but portable) * 1. Normalization * Scale x to y in [1,4) with even powers of 2: - * find an integer k such that 1 <= (y=x*2^(2k)) < 4, then + * find an integer k such that 1 <= (y=x*2^(-2k)) < 4, then * sqrt(x) = 2^k * sqrt(y) * 2. Bit by bit computation * Let q = sqrt(y) truncated to i bit after binary point (q = 1), diff --git a/fedora/branch.mk b/fedora/branch.mk index 5ff53ebc4e..b272ca78df 100644 --- a/fedora/branch.mk +++ b/fedora/branch.mk @@ -3,5 +3,5 @@ glibc-branch := fedora glibc-base := HEAD DIST_BRANCH := devel COLLECTION := dist-fc4 -fedora-sync-date := 2006-09-10 18:32 UTC -fedora-sync-tag := fedora-glibc-20060910T1832 +fedora-sync-date := 2006-09-15 09:43 UTC +fedora-sync-tag := fedora-glibc-20060915T0943 diff --git a/fedora/glibc.spec.in b/fedora/glibc.spec.in index 2cefe4644b..9b338cb3dc 100644 --- a/fedora/glibc.spec.in +++ b/fedora/glibc.spec.in @@ -1,4 +1,4 @@ -%define glibcrelease 31 +%define glibcrelease 32 %define auxarches i586 i686 athlon sparcv9 alphaev6 %define xenarches i686 athlon %ifarch %{xenarches} @@ -1455,6 +1455,9 @@ rm -f *.filelist* %endif %changelog +* Fri Sep 15 2006 Jakub Jelinek <jakub@redhat.com> 2.4.90-32 +- use just AT_PLATFORM and altivec AT_HWCAP bit for library selection + * Sun Sep 10 2006 Jakub Jelinek <jakub@redhat.com> 2.4.90-31 - fix pthread_cond_{,timed}wait cancellation (BZ#3123) - fix lrint on ppc32 (BZ#3155) diff --git a/io/test-lfs.c b/io/test-lfs.c index a4669c3984..c27af408eb 100644 --- a/io/test-lfs.c +++ b/io/test-lfs.c @@ -50,7 +50,7 @@ int fd; void do_prepare (int argc, char *argv[]) { - char name_len; + size_t name_len; struct rlimit64 rlim; name_len = strlen (test_dir); diff --git a/io/tst-fcntl.c b/io/tst-fcntl.c index fed884913c..93ea9b0b02 100644 --- a/io/tst-fcntl.c +++ b/io/tst-fcntl.c @@ -42,7 +42,7 @@ static char *name; void do_prepare (int argc, char *argv[]) { - char name_len; + size_t name_len; name_len = strlen (test_dir); name = malloc (name_len + sizeof ("/fcntlXXXXXX")); diff --git a/manual/string.texi b/manual/string.texi index 2717699213..f582bad96d 100644 --- a/manual/string.texi +++ b/manual/string.texi @@ -2534,7 +2534,7 @@ The @code{argz_append} function appends @var{buf_len} bytes starting at @comment argz.h @comment GNU -@deftypefun {error_t} argz_delete (char **@var{argz}, size_t *@var{argz_len}, char *@var{entry}) +@deftypefun {void} argz_delete (char **@var{argz}, size_t *@var{argz_len}, char *@var{entry}) If @var{entry} points to the beginning of one of the elements in the argz vector @code{*@var{argz}}, the @code{argz_delete} function will remove this entry and reallocate @code{*@var{argz}}, modifying diff --git a/nptl/ChangeLog b/nptl/ChangeLog index 159c3bfcf2..afa9a37c97 100644 --- a/nptl/ChangeLog +++ b/nptl/ChangeLog @@ -1,3 +1,8 @@ +2006-09-12 Ulrich Drepper <drepper@redhat.com> + + * tst-cond22.c (tf): Slight changes to the pthread_cond_wait use + to guarantee the thread is always canceled. + 2006-09-08 Jakub Jelinek <jakub@redhat.com> * tst-cond22.c: Include pthread.h instead of pthreadP.h. diff --git a/nptl/tst-cond22.c b/nptl/tst-cond22.c index 1094c09068..aff38fcc8d 100644 --- a/nptl/tst-cond22.c +++ b/nptl/tst-cond22.c @@ -30,11 +30,17 @@ tf (void *arg) exit (1); } pthread_cleanup_push (cl, NULL); - if (pthread_cond_wait (&c, &m) != 0) - { - printf ("%s: cond_wait failed\n", __func__); - exit (1); - } + /* We have to loop here because the cancellation might come after + the cond_wait call left the cancelable area and is then waiting + on the mutex. In this case the beginning of the second cond_wait + call will cause the cancellation to happen. */ + do + if (pthread_cond_wait (&c, &m) != 0) + { + printf ("%s: cond_wait failed\n", __func__); + exit (1); + } + while (arg == NULL); pthread_cleanup_pop (0); if (pthread_mutex_unlock (&m) != 0) { @@ -105,7 +111,7 @@ do_test (void) c.__data.__wakeup_seq, c.__data.__woken_seq, c.__data.__mutex, c.__data.__nwaiters, c.__data.__broadcast_seq); - if (pthread_create (&th, NULL, tf, NULL) != 0) + if (pthread_create (&th, NULL, tf, (void *) 1l) != 0) { puts ("2nd create failed"); return 1; diff --git a/posix/tst-exec.c b/posix/tst-exec.c index a67d2000bc..f3971e8c97 100644 --- a/posix/tst-exec.c +++ b/posix/tst-exec.c @@ -57,7 +57,7 @@ static const char fd2string[] = "This file should stay opened"; void do_prepare (int argc, char *argv[]) { - char name_len; + size_t name_len; name_len = strlen (test_dir); name1 = malloc (name_len + sizeof ("/execXXXXXX")); diff --git a/posix/tst-preadwrite.c b/posix/tst-preadwrite.c index 2810448583..8227a8205b 100644 --- a/posix/tst-preadwrite.c +++ b/posix/tst-preadwrite.c @@ -53,7 +53,7 @@ int fd; void do_prepare (int argc, char *argv[]) { - char name_len; + size_t name_len; #define FNAME FNAME2(TRUNCATE) #define FNAME2(s) "/" STRINGIFY(s) "XXXXXX" diff --git a/posix/tst-spawn.c b/posix/tst-spawn.c index 745f64d3ba..4b5d894235 100644 --- a/posix/tst-spawn.c +++ b/posix/tst-spawn.c @@ -61,7 +61,7 @@ static const char fd3string[] = "This file will be opened"; void do_prepare (int argc, char *argv[]) { - char name_len; + size_t name_len; name_len = strlen (test_dir); name1 = (char *) malloc (name_len + sizeof ("/spawnXXXXXX")); diff --git a/posix/tst-truncate.c b/posix/tst-truncate.c index d786306409..78a5139477 100644 --- a/posix/tst-truncate.c +++ b/posix/tst-truncate.c @@ -54,7 +54,7 @@ int fd; void do_prepare (int argc, char *argv[]) { - char name_len; + size_t name_len; #define FNAME FNAME2(TRUNCATE) #define FNAME2(s) "/" STRINGIFY(s) "XXXXXX" diff --git a/rt/tst-aio.c b/rt/tst-aio.c index 24efad3e23..ba50bdb082 100644 --- a/rt/tst-aio.c +++ b/rt/tst-aio.c @@ -48,7 +48,7 @@ int fd; void do_prepare (int argc, char *argv[]) { - char name_len; + size_t name_len; name_len = strlen (test_dir); name = malloc (name_len + sizeof ("/aioXXXXXX")); diff --git a/rt/tst-aio64.c b/rt/tst-aio64.c index 93e8cb2136..b6d964fd57 100644 --- a/rt/tst-aio64.c +++ b/rt/tst-aio64.c @@ -49,7 +49,7 @@ int fd; void do_prepare (int argc, char *argv[]) { - char name_len; + size_t name_len; name_len = strlen (test_dir); name = malloc (name_len + sizeof ("/aioXXXXXX")); diff --git a/rtkaio/ChangeLog b/rtkaio/ChangeLog index 8a03a35225..b5033f6336 100644 --- a/rtkaio/ChangeLog +++ b/rtkaio/ChangeLog @@ -1,3 +1,9 @@ +2006-09-15 Jakub Jelinek <jakub@redhat.com> + + [BZ #3138] + * rt/tst-aiod.c (do_prepare): Give name_len type size_t. + * rt/tst-aiod64.c (do_prepare): Likewise. + 2006-09-07 Jakub Jelinek <jakub@redhat.com> * tst-aiod2.c: Adjust test for new semantics of lio_listio. diff --git a/rtkaio/tst-aiod.c b/rtkaio/tst-aiod.c index d08a7d93f2..a8b58106dc 100644 --- a/rtkaio/tst-aiod.c +++ b/rtkaio/tst-aiod.c @@ -51,7 +51,7 @@ int blksz = 100; void do_prepare (int argc, char *argv[]) { - char name_len; + size_t name_len; name_len = strlen (test_dir); name = malloc (name_len + sizeof ("/aioXXXXXX")); diff --git a/rtkaio/tst-aiod64.c b/rtkaio/tst-aiod64.c index 0f0a45853a..3b8f014421 100644 --- a/rtkaio/tst-aiod64.c +++ b/rtkaio/tst-aiod64.c @@ -52,7 +52,7 @@ int blksz = 100; void do_prepare (int argc, char *argv[]) { - char name_len; + size_t name_len; name_len = strlen (test_dir); name = malloc (name_len + sizeof ("/aioXXXXXX")); diff --git a/stdlib/test-canon2.c b/stdlib/test-canon2.c index ba491995b7..f182e95adc 100644 --- a/stdlib/test-canon2.c +++ b/stdlib/test-canon2.c @@ -39,7 +39,7 @@ char *name2; void do_prepare (int argc, char *argv[]) { - char test_dir_len; + size_t test_dir_len; test_dir_len = strlen (test_dir); diff --git a/sysdeps/powerpc/dl-procinfo.c b/sysdeps/powerpc/dl-procinfo.c index 7c1ab7bad7..196f9bd65c 100644 --- a/sysdeps/powerpc/dl-procinfo.c +++ b/sysdeps/powerpc/dl-procinfo.c @@ -1,5 +1,5 @@ /* Data for processor capability information. PowerPC version. - Copyright (C) 2005 Free Software Foundation, Inc. + Copyright (C) 2005, 2006 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 @@ -46,11 +46,12 @@ #if !defined PROCINFO_DECL && defined SHARED ._dl_powerpc_cap_flags #else -PROCINFO_CLASS const char _dl_powerpc_cap_flags[16][10] +PROCINFO_CLASS const char _dl_powerpc_cap_flags[20][10] #endif #ifndef PROCINFO_DECL = { - "cell", "power5+", "power5", "power4", + "arch_2_05", "ic_snoop", "smt", "booke", + "cellbe", "power5+", "power5", "power4", "notb", "efpdouble", "efpsingle", "spe", "ucache", "4xxmac", "mmu", "fpu", "altivec", "ppc601", "ppc64", "ppc32", @@ -62,5 +63,21 @@ PROCINFO_CLASS const char _dl_powerpc_cap_flags[16][10] , #endif +#if !defined PROCINFO_DECL && defined SHARED + ._dl_powerpc_platforms +#else +PROCINFO_CLASS const char _dl_powerpc_platforms[6][12] +#endif +#ifndef PROCINFO_DECL += { + "power4", "ppc970", "power5", "power5+", "power6", "ppc-cell-be" + } +#endif +#if !defined SHARED || defined PROCINFO_DECL +; +#else +, +#endif + #undef PROCINFO_DECL #undef PROCINFO_CLASS diff --git a/sysdeps/powerpc/dl-procinfo.h b/sysdeps/powerpc/dl-procinfo.h index 8edc5e539a..f63da6d555 100644 --- a/sysdeps/powerpc/dl-procinfo.h +++ b/sysdeps/powerpc/dl-procinfo.h @@ -1,5 +1,5 @@ /* Processor capability information handling macros. PowerPC version. - Copyright (C) 2005 Free Software Foundation, Inc. + Copyright (C) 2005, 2006 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 @@ -23,27 +23,33 @@ #include <ldsodefs.h> #include <sysdep.h> /* This defines the PPC_FEATURE_* macros. */ -/* There are 16 bits used, but they are bits 16..31. */ -#define _DL_HWCAP_FIRST 16 +/* There are 20 bits used, but they are bits 12..31. */ +#define _DL_HWCAP_FIRST 12 #define _DL_HWCAP_COUNT 32 /* These bits influence library search. */ -#define HWCAP_IMPORTANT (PPC_FEATURE_HAS_ALTIVEC \ - | PPC_FEATURE_POWER4 \ - | PPC_FEATURE_POWER5 \ - | PPC_FEATURE_POWER5_PLUS \ - | PPC_FEATURE_CELL) +#define HWCAP_IMPORTANT (PPC_FEATURE_HAS_ALTIVEC) -/* We don't use AT_PLATFORM. */ -#define _DL_HWCAP_PLATFORM 0 -#define _dl_string_platform(str) (-1) +#define _DL_PLATFORMS_COUNT 6 + +#define _DL_FIRST_PLATFORM 32 +/* Mask to filter out platforms. */ +#define _DL_HWCAP_PLATFORM (((1ULL << _DL_PLATFORMS_COUNT) - 1) \ + << _DL_FIRST_PLATFORM) static inline const char * __attribute__ ((unused)) _dl_hwcap_string (int idx) { return GLRO(dl_powerpc_cap_flags)[idx - _DL_HWCAP_FIRST]; -}; +} + +static inline const char * +__attribute__ ((unused)) +_dl_platform_string (int idx) +{ + return GLRO(dl_powerpc_platforms)[idx - _DL_FIRST_PLATFORM]; +} static inline int __attribute__ ((unused)) @@ -53,7 +59,48 @@ _dl_string_hwcap (const char *str) if (strcmp (str, _dl_hwcap_string (i)) == 0) return i; return -1; -}; +} + +static inline int +__attribute__ ((unused, always_inline)) +_dl_string_platform (const char *str) +{ + if (str == NULL) + return -1; + + if (strncmp (str, GLRO(dl_powerpc_platforms)[0], 5) == 0) + { + int ret; + str += 5; + switch (*str) + { + case '4': + ret = _DL_FIRST_PLATFORM + 0; + break; + case '5': + ret = _DL_FIRST_PLATFORM + 2; + if (str[1] == '+') + ++ret, ++str; + break; + case '6': + ret = _DL_FIRST_PLATFORM + 4; + break; + default: + return -1; + } + if (str[1] == '\0') + return ret; + } + else if (strncmp (str, GLRO(dl_powerpc_platforms)[1], 3) == 0) + { + if (strcmp (str + 3, GLRO(dl_powerpc_platforms)[1] + 3) == 0) + return _DL_FIRST_PLATFORM + 1; + else if (strcmp (str + 3, GLRO(dl_powerpc_platforms)[5] + 3) == 0) + return _DL_FIRST_PLATFORM + 5; + } + + return -1; +} #ifdef IS_IN_rtld static inline int diff --git a/sysdeps/powerpc/sysdep.h b/sysdeps/powerpc/sysdep.h index 296231f655..a376e4dac3 100644 --- a/sysdeps/powerpc/sysdep.h +++ b/sysdeps/powerpc/sysdep.h @@ -1,4 +1,4 @@ -/* Copyright (C) 1999, 2001, 2002 Free Software Foundation, Inc. +/* Copyright (C) 1999, 2001, 2002, 2006 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 @@ -29,14 +29,18 @@ #define PPC_FEATURE_HAS_MMU 0x04000000 /* Memory Management Unit. */ #define PPC_FEATURE_HAS_4xxMAC 0x02000000 /* 4xx Multiply Accumulator. */ #define PPC_FEATURE_UNIFIED_CACHE 0x01000000 /* Unified I/D cache. */ -#define PPC_FEATURE_HAS_SPE 0x00800000 -#define PPC_FEATURE_HAS_EFP_SINGLE 0x00400000 -#define PPC_FEATURE_HAS_EFP_DOUBLE 0x00200000 +#define PPC_FEATURE_HAS_SPE 0x00800000 /* Signal Processing ext. */ +#define PPC_FEATURE_HAS_EFP_SINGLE 0x00400000 /* SPE Float. */ +#define PPC_FEATURE_HAS_EFP_DOUBLE 0x00200000 /* SPE Double. */ #define PPC_FEATURE_NO_TB 0x00100000 /* 601/403gx have no timebase */ -#define PPC_FEATURE_POWER4 0x00080000 /* POWER4 microarch level */ -#define PPC_FEATURE_POWER5 0x00040000 /* POWER5 microarch level */ -#define PPC_FEATURE_POWER5_PLUS 0x00020000 /* POWER5+ microarch level */ -#define PPC_FEATURE_CELL 0x00010000 /* CELL PU microarch level */ +#define PPC_FEATURE_POWER4 0x00080000 /* POWER4 ISA 2.00 */ +#define PPC_FEATURE_POWER5 0x00040000 /* POWER5 ISA 2.01 */ +#define PPC_FEATURE_POWER5_PLUS 0x00020000 /* POWER5+ ISA 2.02 */ +#define PPC_FEATURE_CELL_BE 0x00010000 /* CELL Broadband Engine */ +#define PPC_FEATURE_BOOKE 0x00008000 +#define PPC_FEATURE_SMT 0x00004000 +#define PPC_FEATURE_ICACHE_SNOOP 0x00002000 +#define PPC_FEATURE_ARCH_2_05 0x00001000 /* ISA 2.05 */ #define PPC_FEATURE_970 (PPC_FEATURE_POWER4 + PPC_FEATURE_HAS_ALTIVEC) #ifdef __ASSEMBLER__ |