diff --git a/glibc-2.10-mcheck-free-race.diff b/glibc-2.10-mcheck-free-race.diff new file mode 100644 index 0000000..3da1397 --- /dev/null +++ b/glibc-2.10-mcheck-free-race.diff @@ -0,0 +1,37 @@ +--- malloc/hooks.c~ 2009-06-08 17:55:07.982329000 +0200 ++++ malloc/hooks.c 2009-06-08 17:56:41.178045000 +0200 +@@ -276,15 +276,18 @@ + mchunkptr p; + + if(!mem) return; ++#ifndef ATOMIC_FASTBINS ++ (void)mutex_lock(&main_arena.mutex); ++#endif + p = mem2chunk_check(mem, NULL); + if(!p) { + malloc_printerr(check_action, "free(): invalid pointer", mem); +- return; ++ goto out; + } + #if HAVE_MMAP + if (chunk_is_mmapped(p)) { + munmap_chunk(p); +- return; ++ goto out; + } + #endif + #if 0 /* Erase freed memory. */ +@@ -293,8 +296,12 @@ + #ifdef ATOMIC_FASTBINS + _int_free(&main_arena, p, 0); + #else +- (void)mutex_lock(&main_arena.mutex); + _int_free(&main_arena, p); ++#endif ++out: ++#ifdef ATOMIC_FASTBINS ++ ; ++#else + (void)mutex_unlock(&main_arena.mutex); + #endif + } diff --git a/glibc-2.10.1-9cf557216c.tar.bz2 b/glibc-2.10.1-9cf557216c.tar.bz2 new file mode 100644 index 0000000..76621dc --- /dev/null +++ b/glibc-2.10.1-9cf557216c.tar.bz2 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1f5498c9c2ccb5438487af0541cfe1978c77fa47e2078b793be35149cc8320e7 +size 15590281 diff --git a/glibc-2.10.1-e38af591a8.tar.bz2 b/glibc-2.10.1-e38af591a8.tar.bz2 deleted file mode 100644 index 0c6c8ad..0000000 --- a/glibc-2.10.1-e38af591a8.tar.bz2 +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:05810d4e4256a3be2582b0bfb9cda3332a4710beeb20fbe90c41c306c4b9ee48 -size 15588510 diff --git a/glibc-2.8-revert-nscleanup.diff b/glibc-2.8-revert-nscleanup.diff deleted file mode 100644 index 91fb6ce..0000000 --- a/glibc-2.8-revert-nscleanup.diff +++ /dev/null @@ -1,828 +0,0 @@ -** TEMPORARY ** - -We should delete this patch again very soon. --pasky - -diff --git a/inet/netinet/in.h b/inet/netinet/in.h -index e3446a9..1366198 100644 ---- inet/netinet/in.h -+++ inet/netinet/in.h -@@ -195,17 +195,13 @@ struct in6_addr - { - union - { -- uint8_t __u6_addr8[16]; --#if defined __USE_MISC || defined __USE_GNU -- uint16_t __u6_addr16[8]; -- uint32_t __u6_addr32[4]; --#endif -- } __in6_u; --#define s6_addr __in6_u.__u6_addr8 --#if defined __USE_MISC || defined __USE_GNU --# define s6_addr16 __in6_u.__u6_addr16 --# define s6_addr32 __in6_u.__u6_addr32 --#endif -+ uint8_t u6_addr8[16]; -+ uint16_t u6_addr16[8]; -+ uint32_t u6_addr32[4]; -+ } in6_u; -+#define s6_addr in6_u.u6_addr8 -+#define s6_addr16 in6_u.u6_addr16 -+#define s6_addr32 in6_u.u6_addr32 - }; - - extern const struct in6_addr in6addr_any; /* :: */ -@@ -242,7 +238,6 @@ struct sockaddr_in6 - }; - - --#if defined __USE_MISC || defined __USE_GNU - /* IPv4 multicast request. */ - struct ip_mreq - { -@@ -264,8 +259,6 @@ struct ip_mreq_source - /* IP address of interface. */ - struct in_addr imr_sourceaddr; - }; --#endif -- - - /* Likewise, for IPv6. */ - struct ipv6_mreq -@@ -278,7 +271,6 @@ struct ipv6_mreq - }; - - --#if defined __USE_MISC || defined __USE_GNU - /* Multicast group request. */ - struct group_req - { -@@ -345,7 +337,6 @@ struct group_filter - - sizeof (struct sockaddr_storage) \ - + ((numsrc) \ - * sizeof (struct sockaddr_storage))) --#endif - - - /* Get system-specific definitions. */ -@@ -431,14 +422,12 @@ extern uint16_t htons (uint16_t __hostshort) - && (((__const uint32_t *) (a))[2] == ((__const uint32_t *) (b))[2]) \ - && (((__const uint32_t *) (a))[3] == ((__const uint32_t *) (b))[3])) - --#if defined __USE_MISC || defined __USE_GNU - /* Bind socket to a privileged IP port. */ - extern int bindresvport (int __sockfd, struct sockaddr_in *__sock_in) __THROW; - - /* The IPv6 version of this function. */ - extern int bindresvport6 (int __sockfd, struct sockaddr_in6 *__sock_in) - __THROW; --#endif - - - #define IN6_IS_ADDR_MC_NODELOCAL(a) \ -@@ -461,8 +450,6 @@ extern int bindresvport6 (int __sockfd, struct sockaddr_in6 *__sock_in) - (IN6_IS_ADDR_MULTICAST(a) \ - && ((((__const uint8_t *) (a))[1] & 0xf) == 0xe)) - -- --#ifdef __USE_GNU - /* IPv6 packet information. */ - struct in6_pktinfo - { -@@ -478,6 +465,7 @@ struct ip6_mtuinfo - }; - - -+#ifdef __USE_GNU - /* Obsolete hop-by-hop and Destination Options Processing (RFC 2292). */ - extern int inet6_option_space (int __nbytes) - __THROW __attribute_deprecated__; -diff --git a/posix/regex.h b/posix/regex.h -index 2132772..a058e3f 100644 ---- posix/regex.h -+++ posix/regex.h -@@ -43,21 +43,20 @@ typedef unsigned long int active_reg_t; - add or remove a bit, only one other definition need change. */ - typedef unsigned long int reg_syntax_t; - --#ifdef __USE_GNU - /* If this bit is not set, then \ inside a bracket expression is literal. - If set, then such a \ quotes the following character. */ --# define RE_BACKSLASH_ESCAPE_IN_LISTS ((unsigned long int) 1) -+#define RE_BACKSLASH_ESCAPE_IN_LISTS ((unsigned long int) 1) - - /* If this bit is not set, then + and ? are operators, and \+ and \? are - literals. - If set, then \+ and \? are operators and + and ? are literals. */ --# define RE_BK_PLUS_QM (RE_BACKSLASH_ESCAPE_IN_LISTS << 1) -+#define RE_BK_PLUS_QM (RE_BACKSLASH_ESCAPE_IN_LISTS << 1) - - /* If this bit is set, then character classes are supported. They are: - [:alpha:], [:upper:], [:lower:], [:digit:], [:alnum:], [:xdigit:], - [:space:], [:print:], [:punct:], [:graph:], and [:cntrl:]. - If not set, then character classes are not supported. */ --# define RE_CHAR_CLASSES (RE_BK_PLUS_QM << 1) -+#define RE_CHAR_CLASSES (RE_BK_PLUS_QM << 1) - - /* If this bit is set, then ^ and $ are always anchors (outside bracket - expressions, of course). -@@ -71,7 +70,7 @@ typedef unsigned long int reg_syntax_t; - POSIX draft 11.2 says that * etc. in leading positions is undefined. - We already implemented a previous draft which made those constructs - invalid, though, so we haven't changed the code back. */ --# define RE_CONTEXT_INDEP_ANCHORS (RE_CHAR_CLASSES << 1) -+#define RE_CONTEXT_INDEP_ANCHORS (RE_CHAR_CLASSES << 1) - - /* If this bit is set, then special characters are always special - regardless of where they are in the pattern. -@@ -79,71 +78,71 @@ typedef unsigned long int reg_syntax_t; - some contexts; otherwise they are ordinary. Specifically, - * + ? and intervals are only special when not after the beginning, - open-group, or alternation operator. */ --# define RE_CONTEXT_INDEP_OPS (RE_CONTEXT_INDEP_ANCHORS << 1) -+#define RE_CONTEXT_INDEP_OPS (RE_CONTEXT_INDEP_ANCHORS << 1) - - /* If this bit is set, then *, +, ?, and { cannot be first in an re or - immediately after an alternation or begin-group operator. */ --# define RE_CONTEXT_INVALID_OPS (RE_CONTEXT_INDEP_OPS << 1) -+#define RE_CONTEXT_INVALID_OPS (RE_CONTEXT_INDEP_OPS << 1) - - /* If this bit is set, then . matches newline. - If not set, then it doesn't. */ --# define RE_DOT_NEWLINE (RE_CONTEXT_INVALID_OPS << 1) -+#define RE_DOT_NEWLINE (RE_CONTEXT_INVALID_OPS << 1) - - /* If this bit is set, then . doesn't match NUL. - If not set, then it does. */ --# define RE_DOT_NOT_NULL (RE_DOT_NEWLINE << 1) -+#define RE_DOT_NOT_NULL (RE_DOT_NEWLINE << 1) - - /* If this bit is set, nonmatching lists [^...] do not match newline. - If not set, they do. */ --# define RE_HAT_LISTS_NOT_NEWLINE (RE_DOT_NOT_NULL << 1) -+#define RE_HAT_LISTS_NOT_NEWLINE (RE_DOT_NOT_NULL << 1) - - /* If this bit is set, either \{...\} or {...} defines an - interval, depending on RE_NO_BK_BRACES. - If not set, \{, \}, {, and } are literals. */ --# define RE_INTERVALS (RE_HAT_LISTS_NOT_NEWLINE << 1) -+#define RE_INTERVALS (RE_HAT_LISTS_NOT_NEWLINE << 1) - - /* If this bit is set, +, ? and | aren't recognized as operators. - If not set, they are. */ --# define RE_LIMITED_OPS (RE_INTERVALS << 1) -+#define RE_LIMITED_OPS (RE_INTERVALS << 1) - - /* If this bit is set, newline is an alternation operator. - If not set, newline is literal. */ --# define RE_NEWLINE_ALT (RE_LIMITED_OPS << 1) -+#define RE_NEWLINE_ALT (RE_LIMITED_OPS << 1) - - /* If this bit is set, then `{...}' defines an interval, and \{ and \} - are literals. - If not set, then `\{...\}' defines an interval. */ --# define RE_NO_BK_BRACES (RE_NEWLINE_ALT << 1) -+#define RE_NO_BK_BRACES (RE_NEWLINE_ALT << 1) - - /* If this bit is set, (...) defines a group, and \( and \) are literals. - If not set, \(...\) defines a group, and ( and ) are literals. */ --# define RE_NO_BK_PARENS (RE_NO_BK_BRACES << 1) -+#define RE_NO_BK_PARENS (RE_NO_BK_BRACES << 1) - - /* If this bit is set, then \ matches . - If not set, then \ is a back-reference. */ --# define RE_NO_BK_REFS (RE_NO_BK_PARENS << 1) -+#define RE_NO_BK_REFS (RE_NO_BK_PARENS << 1) - - /* If this bit is set, then | is an alternation operator, and \| is literal. - If not set, then \| is an alternation operator, and | is literal. */ --# define RE_NO_BK_VBAR (RE_NO_BK_REFS << 1) -+#define RE_NO_BK_VBAR (RE_NO_BK_REFS << 1) - - /* If this bit is set, then an ending range point collating higher - than the starting range point, as in [z-a], is invalid. - If not set, then when ending range point collates higher than the - starting range point, the range is ignored. */ --# define RE_NO_EMPTY_RANGES (RE_NO_BK_VBAR << 1) -+#define RE_NO_EMPTY_RANGES (RE_NO_BK_VBAR << 1) - - /* If this bit is set, then an unmatched ) is ordinary. - If not set, then an unmatched ) is invalid. */ --# define RE_UNMATCHED_RIGHT_PAREN_ORD (RE_NO_EMPTY_RANGES << 1) -+#define RE_UNMATCHED_RIGHT_PAREN_ORD (RE_NO_EMPTY_RANGES << 1) - - /* If this bit is set, succeed as soon as we match the whole pattern, - without further backtracking. */ --# define RE_NO_POSIX_BACKTRACKING (RE_UNMATCHED_RIGHT_PAREN_ORD << 1) -+#define RE_NO_POSIX_BACKTRACKING (RE_UNMATCHED_RIGHT_PAREN_ORD << 1) - - /* If this bit is set, do not process the GNU regex operators. - If not set, then the GNU regex operators are recognized. */ --# define RE_NO_GNU_OPS (RE_NO_POSIX_BACKTRACKING << 1) -+#define RE_NO_GNU_OPS (RE_NO_POSIX_BACKTRACKING << 1) - - /* If this bit is set, turn on internal regex debugging. - If not set, and debugging was on, turn it off. -@@ -151,30 +150,29 @@ typedef unsigned long int reg_syntax_t; - We define this bit always, so that all that's needed to turn on - debugging is to recompile regex.c; the calling code can always have - this bit set, and it won't affect anything in the normal case. */ --# define RE_DEBUG (RE_NO_GNU_OPS << 1) -+#define RE_DEBUG (RE_NO_GNU_OPS << 1) - - /* If this bit is set, a syntactically invalid interval is treated as - a string of ordinary characters. For example, the ERE 'a{1' is - treated as 'a\{1'. */ --# define RE_INVALID_INTERVAL_ORD (RE_DEBUG << 1) -+#define RE_INVALID_INTERVAL_ORD (RE_DEBUG << 1) - - /* If this bit is set, then ignore case when matching. - If not set, then case is significant. */ --# define RE_ICASE (RE_INVALID_INTERVAL_ORD << 1) -+#define RE_ICASE (RE_INVALID_INTERVAL_ORD << 1) - - /* This bit is used internally like RE_CONTEXT_INDEP_ANCHORS but only - for ^, because it is difficult to scan the regex backwards to find - whether ^ should be special. */ --# define RE_CARET_ANCHORS_HERE (RE_ICASE << 1) -+#define RE_CARET_ANCHORS_HERE (RE_ICASE << 1) - - /* If this bit is set, then \{ cannot be first in an bre or - immediately after an alternation or begin-group operator. */ --# define RE_CONTEXT_INVALID_DUP (RE_CARET_ANCHORS_HERE << 1) -+#define RE_CONTEXT_INVALID_DUP (RE_CARET_ANCHORS_HERE << 1) - - /* If this bit is set, then no_sub will be set to 1 during - re_compile_pattern. */ --# define RE_NO_SUB (RE_CONTEXT_INVALID_DUP << 1) --#endif -+#define RE_NO_SUB (RE_CONTEXT_INVALID_DUP << 1) - - /* This global variable defines the particular regexp syntax to use (for - some interfaces). When a regexp is compiled, the syntax used is -@@ -182,7 +180,6 @@ typedef unsigned long int reg_syntax_t; - already-compiled regexps. */ - extern reg_syntax_t re_syntax_options; - --#ifdef __USE_GNU - /* Define combinations of the above bits for the standard possibilities. - (The [[[ comments delimit what gets put into the Texinfo file, so - don't delete them!) */ -@@ -257,12 +254,11 @@ extern reg_syntax_t re_syntax_options; - /* Maximum number of duplicates an interval can allow. Some systems - (erroneously) define this in other header files, but we want our - value, so remove any previous define. */ --# ifdef RE_DUP_MAX --# undef RE_DUP_MAX --# endif --/* If sizeof(int) == 2, then ((1 << 15) - 1) overflows. */ --# define RE_DUP_MAX (0x7fff) -+#ifdef RE_DUP_MAX -+# undef RE_DUP_MAX - #endif -+/* If sizeof(int) == 2, then ((1 << 15) - 1) overflows. */ -+#define RE_DUP_MAX (0x7fff) - - - /* POSIX `cflags' bits (i.e., information for `regcomp'). */ -@@ -341,16 +337,7 @@ typedef enum - private to the regex routines. */ - - #ifndef RE_TRANSLATE_TYPE --# define __RE_TRANSLATE_TYPE unsigned char * --# ifdef __USE_GNU --# define RE_TRANSLATE_TYPE __RE_TRANSLATE_TYPE --# endif --#endif -- --#ifdef __USE_GNU --# define __REPB_PREFIX(name) name --#else --# define __REPB_PREFIX(name) __##name -+# define RE_TRANSLATE_TYPE unsigned char * - #endif - - struct re_pattern_buffer -@@ -358,27 +345,27 @@ struct re_pattern_buffer - /* Space that holds the compiled pattern. It is declared as - `unsigned char *' because its elements are sometimes used as - array indexes. */ -- unsigned char *__REPB_PREFIX(buffer); -+ unsigned char *buffer; - - /* Number of bytes to which `buffer' points. */ -- unsigned long int __REPB_PREFIX(allocated); -+ unsigned long int allocated; - - /* Number of bytes actually used in `buffer'. */ -- unsigned long int __REPB_PREFIX(used); -+ unsigned long int used; - - /* Syntax setting with which the pattern was compiled. */ -- reg_syntax_t __REPB_PREFIX(syntax); -+ reg_syntax_t syntax; - - /* Pointer to a fastmap, if any, otherwise zero. re_search uses the - fastmap, if there is one, to skip over impossible starting points - for matches. */ -- char *__REPB_PREFIX(fastmap); -+ char *fastmap; - - /* Either a translate table to apply to all characters before - comparing them, or zero for no translation. The translation is - applied to a pattern when it is compiled and to a string when it - is matched. */ -- __RE_TRANSLATE_TYPE __REPB_PREFIX(translate); -+ RE_TRANSLATE_TYPE translate; - - /* Number of subexpressions found by the compiler. */ - size_t re_nsub; -@@ -387,36 +374,34 @@ struct re_pattern_buffer - Well, in truth it's used only in `re_search_2', to see whether or - not we should use the fastmap, so we don't set this absolutely - perfectly; see `re_compile_fastmap' (the `duplicate' case). */ -- unsigned __REPB_PREFIX(can_be_null) : 1; -+ unsigned can_be_null : 1; - - /* If REGS_UNALLOCATED, allocate space in the `regs' structure - for `max (RE_NREGS, re_nsub + 1)' groups. - If REGS_REALLOCATE, reallocate space if necessary. - If REGS_FIXED, use what's there. */ --#ifdef __USE_GNU --# define REGS_UNALLOCATED 0 --# define REGS_REALLOCATE 1 --# define REGS_FIXED 2 --#endif -- unsigned __REPB_PREFIX(regs_allocated) : 2; -+#define REGS_UNALLOCATED 0 -+#define REGS_REALLOCATE 1 -+#define REGS_FIXED 2 -+ unsigned regs_allocated : 2; - - /* Set to zero when `regex_compile' compiles a pattern; set to one - by `re_compile_fastmap' if it updates the fastmap. */ -- unsigned __REPB_PREFIX(fastmap_accurate) : 1; -+ unsigned fastmap_accurate : 1; - - /* If set, `re_match_2' does not return information about - subexpressions. */ -- unsigned __REPB_PREFIX(no_sub) : 1; -+ unsigned no_sub : 1; - - /* If set, a beginning-of-line anchor doesn't match at the beginning - of the string. */ -- unsigned __REPB_PREFIX(not_bol) : 1; -+ unsigned not_bol : 1; - - /* Similarly for an end-of-line anchor. */ -- unsigned __REPB_PREFIX(not_eol) : 1; -+ unsigned not_eol : 1; - - /* If true, an anchor at a newline matches. */ -- unsigned __REPB_PREFIX(newline_anchor) : 1; -+ unsigned newline_anchor : 1; - }; - - typedef struct re_pattern_buffer regex_t; -@@ -425,7 +410,6 @@ typedef struct re_pattern_buffer regex_t; - typedef int regoff_t; - - --#ifdef __USE_GNU - /* This is the structure we store register match data in. See - regex.texinfo for a full description of what registers match. */ - struct re_registers -@@ -439,9 +423,8 @@ struct re_registers - /* If `regs_allocated' is REGS_UNALLOCATED in the pattern buffer, - `re_match_2' returns information about at least this many registers - the first time a `regs' structure is passed. */ --# ifndef RE_NREGS --# define RE_NREGS 30 --# endif -+#ifndef RE_NREGS -+# define RE_NREGS 30 - #endif - - -@@ -456,7 +439,6 @@ typedef struct - - /* Declarations for routines. */ - --#ifdef __USE_GNU - /* Sets the current default syntax to SYNTAX, and return the old syntax. - You can also simply assign to the `re_syntax_options' variable. */ - extern reg_syntax_t re_set_syntax (reg_syntax_t __syntax); -@@ -521,9 +503,8 @@ extern void re_set_registers (struct re_pattern_buffer *__buffer, - struct re_registers *__regs, - unsigned int __num_regs, - regoff_t *__starts, regoff_t *__ends); --#endif /* Use GNU */ - --#if defined _REGEX_RE_COMP || (defined _LIBC && defined __USE_BSD) -+#if defined _REGEX_RE_COMP || defined _LIBC - # ifndef _CRAY - /* 4.2 bsd compatibility. */ - extern char *re_comp (const char *); -diff --git a/resolv/netdb.h b/resolv/netdb.h -index a260c48..7c5c9c9 100644 ---- resolv/netdb.h -+++ resolv/netdb.h -@@ -62,6 +62,8 @@ extern int *__h_errno_location (void) __THROW __attribute__ ((__const__)); - - - /* Possible values left in `h_errno'. */ -+#define NETDB_INTERNAL -1 /* See errno. */ -+#define NETDB_SUCCESS 0 /* No problem. */ - #define HOST_NOT_FOUND 1 /* Authoritative Answer Host not found. */ - #define TRY_AGAIN 2 /* Non-Authoritative Host not found, - or SERVERFAIL. */ -@@ -69,11 +71,7 @@ extern int *__h_errno_location (void) __THROW __attribute__ ((__const__)); - NOTIMP. */ - #define NO_DATA 4 /* Valid name, no data record of requested - type. */ --#if defined __USE_MISC || defined __USE_GNU --# define NETDB_INTERNAL -1 /* See errno. */ --# define NETDB_SUCCESS 0 /* No problem. */ --# define NO_ADDRESS NO_DATA /* No address, look for MX record. */ --#endif -+#define NO_ADDRESS NO_DATA /* No address, look for MX record. */ - - #ifdef __USE_XOPEN2K - /* Highest reserved Internet port number. */ -@@ -85,14 +83,13 @@ extern int *__h_errno_location (void) __THROW __attribute__ ((__const__)); - # define SCOPE_DELIMITER '%' - #endif - --#if defined __USE_MISC || defined __USE_GNU - /* Print error indicated by `h_errno' variable on standard error. STR - if non-null is printed before the error string. */ - extern void herror (__const char *__str) __THROW; - - /* Return string associated with error ERR_NUM. */ - extern __const char *hstrerror (int __err_num) __THROW; --#endif -+ - - - /* Description of data base entry for a single host. */ -@@ -103,9 +100,7 @@ struct hostent - int h_addrtype; /* Host address type. */ - int h_length; /* Length of address. */ - char **h_addr_list; /* List of addresses from name server. */ --#if defined __USE_MISC || defined __USE_GNU --# define h_addr h_addr_list[0] /* Address, for backward compatibility.*/ --#endif -+#define h_addr h_addr_list[0] /* Address, for backward compatibility. */ - }; - - /* Open host data base files and mark them as staying open even after -@@ -595,15 +590,15 @@ struct gaicb - # define EAI_NONAME -2 /* NAME or SERVICE is unknown. */ - # define EAI_AGAIN -3 /* Temporary failure in name resolution. */ - # define EAI_FAIL -4 /* Non-recoverable failure in name res. */ -+# define EAI_NODATA -5 /* No address associated with NAME. */ - # define EAI_FAMILY -6 /* `ai_family' not supported. */ - # define EAI_SOCKTYPE -7 /* `ai_socktype' not supported. */ - # define EAI_SERVICE -8 /* SERVICE not supported for `ai_socktype'. */ -+# define EAI_ADDRFAMILY -9 /* Address family for NAME not supported. */ - # define EAI_MEMORY -10 /* Memory allocation failure. */ - # define EAI_SYSTEM -11 /* System error returned in `errno'. */ - # define EAI_OVERFLOW -12 /* Argument buffer overflow. */ - # ifdef __USE_GNU --# define EAI_NODATA -5 /* No address associated with NAME. */ --# define EAI_ADDRFAMILY -9 /* Address family for NAME not supported. */ - # define EAI_INPROGRESS -100 /* Processing request in progress. */ - # define EAI_CANCELED -101 /* Request canceled. */ - # define EAI_NOTCANCELED -102 /* Request not canceled. */ -@@ -612,10 +607,8 @@ struct gaicb - # define EAI_IDN_ENCODE -105 /* IDN encoding failed. */ - # endif - --# ifdef __USE_MISC --# define NI_MAXHOST 1025 --# define NI_MAXSERV 32 --# endif -+# define NI_MAXHOST 1025 -+# define NI_MAXSERV 32 - - # define NI_NUMERICHOST 1 /* Don't try to look up hostname. */ - # define NI_NUMERICSERV 2 /* Don't convert port number to name. */ -diff --git a/sysdeps/unix/sysv/linux/bits/in.h b/sysdeps/unix/sysv/linux/bits/in.h -index 433c033..6880a2e 100644 ---- sysdeps/unix/sysv/linux/bits/in.h -+++ sysdeps/unix/sysv/linux/bits/in.h -@@ -1,4 +1,4 @@ --/* Copyright (C) 1991-1999, 2000, 2004, 2008 Free Software Foundation, Inc. -+/* Copyright (C) 1991-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 -@@ -43,18 +43,16 @@ - #define IP_ADD_SOURCE_MEMBERSHIP 39 /* ip_mreq_source: join source group */ - #define IP_DROP_SOURCE_MEMBERSHIP 40 /* ip_mreq_source: leave source group */ - #define IP_MSFILTER 41 --#if defined __USE_MISC || defined __USE_GNU --# define MCAST_JOIN_GROUP 42 /* group_req: join any-source group */ --# define MCAST_BLOCK_SOURCE 43 /* group_source_req: block from given group */ --# define MCAST_UNBLOCK_SOURCE 44 /* group_source_req: unblock from given group*/ --# define MCAST_LEAVE_GROUP 45 /* group_req: leave any-source group */ --# define MCAST_JOIN_SOURCE_GROUP 46 /* group_source_req: join source-spec gr */ --# define MCAST_LEAVE_SOURCE_GROUP 47 /* group_source_req: leave source-spec gr*/ --# define MCAST_MSFILTER 48 -- --# define MCAST_EXCLUDE 0 --# define MCAST_INCLUDE 1 --#endif -+#define MCAST_JOIN_GROUP 42 /* group_req: join any-source group */ -+#define MCAST_BLOCK_SOURCE 43 /* group_source_req: block from given group */ -+#define MCAST_UNBLOCK_SOURCE 44 /* group_source_req: unblock from given group*/ -+#define MCAST_LEAVE_GROUP 45 /* group_req: leave any-source group */ -+#define MCAST_JOIN_SOURCE_GROUP 46 /* group_source_req: join source-spec gr */ -+#define MCAST_LEAVE_SOURCE_GROUP 47 /* group_source_req: leave source-spec gr*/ -+#define MCAST_MSFILTER 48 -+ -+#define MCAST_EXCLUDE 0 -+#define MCAST_INCLUDE 1 - - #define IP_ROUTER_ALERT 5 /* bool */ - #define IP_PKTINFO 8 /* bool */ -@@ -78,7 +76,6 @@ - #define IP_DEFAULT_MULTICAST_LOOP 1 - #define IP_MAX_MEMBERSHIPS 20 - --#if defined __USE_MISC || defined __USE_GNU - /* Structure used to describe IP options for IP_OPTIONS and IP_RETOPTS. - The `ip_dst' field is used for the first-hop gateway when using a - source route (this gets put into the header proper). */ -@@ -103,7 +100,6 @@ struct in_pktinfo - struct in_addr ipi_spec_dst; /* Routing destination address */ - struct in_addr ipi_addr; /* Header destination address */ - }; --#endif - - /* Options for use with `getsockopt' and `setsockopt' at the IPv6 level. - The first word in the comment at the right is the data type used; -diff --git a/sysdeps/unix/sysv/linux/bits/socket.h b/sysdeps/unix/sysv/linux/bits/socket.h -index ceb6013..11bb607 100644 ---- sysdeps/unix/sysv/linux/bits/socket.h -+++ sysdeps/unix/sysv/linux/bits/socket.h -@@ -26,8 +26,10 @@ - #endif - - #define __need_size_t -+#define __need_NULL - #include - -+#include - #include - - /* Type for length arguments in socket calls. */ -@@ -154,7 +156,11 @@ struct sockaddr - - /* Structure large enough to hold any socket address (with the historical - exception of AF_UNIX). We reserve 128 bytes. */ --#define __ss_aligntype unsigned long int -+#if ULONG_MAX > 0xffffffff -+# define __ss_aligntype __uint64_t -+#else -+# define __ss_aligntype __uint32_t -+#endif - #define _SS_SIZE 128 - #define _SS_PADSIZE (_SS_SIZE - (2 * sizeof (__ss_aligntype))) - -@@ -257,7 +263,7 @@ struct cmsghdr - #define CMSG_NXTHDR(mhdr, cmsg) __cmsg_nxthdr (mhdr, cmsg) - #define CMSG_FIRSTHDR(mhdr) \ - ((size_t) (mhdr)->msg_controllen >= sizeof (struct cmsghdr) \ -- ? (struct cmsghdr *) (mhdr)->msg_control : (struct cmsghdr *) 0) -+ ? (struct cmsghdr *) (mhdr)->msg_control : (struct cmsghdr *) NULL) - #define CMSG_ALIGN(len) (((len) + sizeof (size_t) - 1) \ - & (size_t) ~(sizeof (size_t) - 1)) - #define CMSG_SPACE(len) (CMSG_ALIGN (len) \ -@@ -301,74 +307,18 @@ enum - #endif - }; - --#ifdef __USE_GNU - /* User visible structure for SCM_CREDENTIALS message */ -+ - struct ucred - { - pid_t pid; /* PID of sending process. */ - uid_t uid; /* UID of sending process. */ - gid_t gid; /* GID of sending process. */ - }; --#endif -- --/* Ugly workaround for unclean kernel headers. */ --#if !defined __USE_MISC && !defined __USE_GNU --# ifndef FIOGETOWN --# define __SYS_SOCKET_H_undef_FIOGETOWN --# endif --# ifndef FIOSETOWN --# define __SYS_SOCKET_H_undef_FIOSETOWN --# endif --# ifndef SIOCATMARK --# define __SYS_SOCKET_H_undef_SIOCATMARK --# endif --# ifndef SIOCGPGRP --# define __SYS_SOCKET_H_undef_SIOCGPGRP --# endif --# ifndef SIOCGSTAMP --# define __SYS_SOCKET_H_undef_SIOCGSTAMP --# endif --# ifndef SIOCGSTAMPNS --# define __SYS_SOCKET_H_undef_SIOCGSTAMPNS --# endif --# ifndef SIOCSPGRP --# define __SYS_SOCKET_H_undef_SIOCSPGRP --# endif --#endif - - /* Get socket manipulation related informations from kernel headers. */ - #include - --#if !defined __USE_MISC && !defined __USE_GNU --# ifdef __SYS_SOCKET_H_undef_FIOGETOWN --# undef __SYS_SOCKET_H_undef_FIOGETOWN --# undef FIOGETOWN --# endif --# ifdef __SYS_SOCKET_H_undef_FIOSETOWN --# undef __SYS_SOCKET_H_undef_FIOSETOWN --# undef FIOSETOWN --# endif --# ifdef __SYS_SOCKET_H_undef_SIOCATMARK --# undef __SYS_SOCKET_H_undef_SIOCATMARK --# undef SIOCATMARK --# endif --# ifdef __SYS_SOCKET_H_undef_SIOCGPGRP --# undef __SYS_SOCKET_H_undef_SIOCGPGRP --# undef SIOCGPGRP --# endif --# ifdef __SYS_SOCKET_H_undef_SIOCGSTAMP --# undef __SYS_SOCKET_H_undef_SIOCGSTAMP --# undef SIOCGSTAMP --# endif --# ifdef __SYS_SOCKET_H_undef_SIOCGSTAMPNS --# undef __SYS_SOCKET_H_undef_SIOCGSTAMPNS --# undef SIOCGSTAMPNS --# endif --# ifdef __SYS_SOCKET_H_undef_SIOCSPGRP --# undef __SYS_SOCKET_H_undef_SIOCSPGRP --# undef SIOCSPGRP --# endif --#endif - - /* Structure used to manipulate the SO_LINGER option. */ - struct linger -diff --git a/sysdeps/unix/sysv/linux/x86_64/bits/stat.h b/sysdeps/unix/sysv/linux/x86_64/bits/stat.h -index 286c1a2..add2c8e 100644 ---- sysdeps/unix/sysv/linux/x86_64/bits/stat.h -+++ sysdeps/unix/sysv/linux/x86_64/bits/stat.h -@@ -61,7 +61,7 @@ struct stat - __uid_t st_uid; /* User ID of the file's owner. */ - __gid_t st_gid; /* Group ID of the file's group.*/ - #if __WORDSIZE == 64 -- int __pad0; -+ int pad0; - #endif - __dev_t st_rdev; /* Device number, if device. */ - #if __WORDSIZE == 32 -@@ -129,7 +129,7 @@ struct stat64 - __uid_t st_uid; /* User ID of the file's owner. */ - __gid_t st_gid; /* Group ID of the file's group.*/ - #if __WORDSIZE == 64 -- int __pad0; -+ int pad0; - __dev_t st_rdev; /* Device number, if device. */ - __off_t st_size; /* Size of file, in bytes. */ - #else -diff --git a/sysdeps/posix/getaddrinfo.c b/sysdeps/posix/getaddrinfo.c -index 9a27efd..c911345 100644 ---- sysdeps/posix/getaddrinfo.c -+++ sysdeps/posix/getaddrinfo.c -@@ -1105,22 +1105,22 @@ static const struct prefixentry *labels; - static const struct prefixentry default_labels[] = - { - /* See RFC 3484 for the details. */ -- { { .__in6_u -- = { .__u6_addr8 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01 } } -- }, 128, 0 }, -- { { .__in6_u -- = { .__u6_addr8 = { 0x20, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } } -- }, 16, 2 }, -- { { .__in6_u -- = { .__u6_addr8 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } } -- }, 96, 3 }, -- { { .__in6_u -- = { .__u6_addr8 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -- 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00 } } -- }, 96, 4 }, -+ { { .in6_u -+ = { .u6_addr8 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01 } } }, -+ 128, 0 }, -+ { { .in6_u -+ = { .u6_addr8 = { 0x20, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } } }, -+ 16, 2 }, -+ { { .in6_u -+ = { .u6_addr8 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } } }, -+ 96, 3 }, -+ { { .in6_u -+ = { .u6_addr8 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -+ 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00 } } }, -+ 96, 4 }, - /* The next two entries differ from RFC 3484. We need to treat - IPv6 site-local addresses special because they are never NATed, - unlike site-locale IPv4 addresses. If this would not happen, on -@@ -1128,23 +1128,23 @@ static const struct prefixentry default_labels[] = - sorting would prefer the IPv6 site-local addresses, causing - unnecessary delays when trying to connect to a global IPv6 address - through a site-local IPv6 address. */ -- { { .__in6_u -- = { .__u6_addr8 = { 0xfe, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } } -- }, 10, 5 }, -- { { .__in6_u -- = { .__u6_addr8 = { 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } } -- }, 7, 6 }, -+ { { .in6_u -+ = { .u6_addr8 = { 0xfe, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } } }, -+ 10, 5 }, -+ { { .in6_u -+ = { .u6_addr8 = { 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } } }, -+ 7, 6 }, - /* Additional rule for Teredo tunnels. */ -- { { .__in6_u -- = { .__u6_addr8 = { 0x20, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } } -- }, 32, 7 }, -- { { .__in6_u -- = { .__u6_addr8 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } } -- }, 0, 1 } -+ { { .in6_u -+ = { .u6_addr8 = { 0x20, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } } }, -+ 32, 7 }, -+ { { .in6_u -+ = { .u6_addr8 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } } }, -+ 0, 1 } - }; - - -@@ -1155,26 +1155,26 @@ static const struct prefixentry *precedence; - static const struct prefixentry default_precedence[] = - { - /* See RFC 3484 for the details. */ -- { { .__in6_u -- = { .__u6_addr8 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01 } } -- }, 128, 50 }, -- { { .__in6_u -- = { .__u6_addr8 = { 0x20, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } } -- }, 16, 30 }, -- { { .__in6_u -- = { .__u6_addr8 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } } -- }, 96, 20 }, -- { { .__in6_u -- = { .__u6_addr8 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -- 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00 } } -- }, 96, 10 }, -- { { .__in6_u -- = { .__u6_addr8 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } } -- }, 0, 40 } -+ { { .in6_u -+ = { .u6_addr8 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01 } } }, -+ 128, 50 }, -+ { { .in6_u -+ = { .u6_addr8 = { 0x20, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } } }, -+ 16, 30 }, -+ { { .in6_u -+ = { .u6_addr8 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } } }, -+ 96, 20 }, -+ { { .in6_u -+ = { .u6_addr8 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -+ 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00 } } }, -+ 96, 10 }, -+ { { .in6_u -+ = { .u6_addr8 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } } }, -+ 0, 40 } - }; - - diff --git a/glibc.changes b/glibc.changes index 2077d67..8603162 100644 --- a/glibc.changes +++ b/glibc.changes @@ -1,3 +1,20 @@ +------------------------------------------------------------------- +Fri Jun 12 12:19:34 CEST 2009 - pbaudis@suse.cz + +- Update to glibc-2.10.1-9cf557216c of glibc/pb-stable.git glibc-2.10-branch + (Still the same source is used for glibc-ports.) + * Fix 100% CPU usage by Java apps because of bad futex calls [bnc#509096] + +------------------------------------------------------------------- +Mon Jun 8 17:58:50 CEST 2009 - pbaudis@suse.cz + +- Fix race condition in the mcheck free() hook [bnc#509398] + +------------------------------------------------------------------- +Fri Jun 5 00:46:59 CEST 2009 - pbaudis@suse.cz + +- Remove temporary revert of a namespace leakage cleanup in glibc-2.8 + ------------------------------------------------------------------- Fri May 22 22:45:10 CEST 2009 - pbaudis@suse.cz @@ -5,6 +22,7 @@ Fri May 22 22:45:10 CEST 2009 - pbaudis@suse.cz maintained by me at repo.or.cz; contains backports of various bugfixes. (Still the same source is used for glibc-ports.) - Stop using separate tarball for nptl. +- Add ARM support, pulling in glibc-ports snapshot when compiling for ARM. ------------------------------------------------------------------- Fri May 15 22:13:33 CEST 2009 - pbaudis@suse.cz diff --git a/glibc.spec b/glibc.spec index 6a5e303..d40f300 100644 --- a/glibc.spec +++ b/glibc.spec @@ -69,13 +69,13 @@ Obsoletes: glibc-32bit Provides: rtld(GNU_HASH) AutoReqProv: on Version: 2.10.1 -Release: 1 +Release: 3 Url: http://www.gnu.org/software/libc/libc.html PreReq: filesystem BuildRoot: %{_tmppath}/%{name}-%{version}-build # The glibc source comes from http://repo.or.cz/w/glibc/pb-stable.git # glibc-2.10-branch. -Source: glibc-%{version}-e38af591a8.tar.bz2 +Source: glibc-%{version}-9cf557216c.tar.bz2 Source2: glibc-ports-%{version}-2b2b217196.tar.bz2 Source3: noversion.tar.bz2 Source4: manpages.tar.bz2 @@ -125,7 +125,6 @@ Patch30: glibc-2.6-configure.diff Patch31: glibc-2.2-sunrpc.diff Patch32: glibc-2.8-getconf.diff Patch33: getaddrinfo-ipv6-sanity.diff -Patch34: glibc-2.8-revert-nscleanup.diff Patch35: ppc-atomic.diff Patch36: glibc-2.8-clone.diff Patch37: glibc-nss-deepbind.diff @@ -137,6 +136,7 @@ Patch42: glibc-no-unwind-tables.diff Patch43: glibc-2.10-nscd-nostack.diff Patch44: glibc-cpusetsize.diff Patch45: glibc-nis-splitgroups.diff +Patch46: glibc-2.10-mcheck-free-race.diff Patch500: ARM_glibc-2.10.1-local-eabi-wchar.diff Patch501: ARM_glibc-2.10.1-local-hwcap-updates.diff Patch502: ARM_glibc-2.10.1-local-lowlevellock.diff @@ -329,7 +329,6 @@ rm sysdeps/x86_64/fpu/s_sincos.S %patch31 %patch32 %patch33 -%patch34 %patch35 %patch36 %patch37 @@ -341,6 +340,7 @@ rm sysdeps/x86_64/fpu/s_sincos.S %patch43 %patch44 %patch45 +%patch46 %ifarch %arm armv5tel armv7l %patch500 %patch501 @@ -1058,11 +1058,20 @@ exit 0 %{_libdir}/libdl_p.a %changelog +* Fri Jun 12 2009 pbaudis@suse.cz +- Update to glibc-2.10.1-9cf557216c of glibc/pb-stable.git glibc-2.10-branch + (Still the same source is used for glibc-ports.) + * Fix 100%% CPU usage by Java apps because of bad futex calls [bnc#509096] +* Mon Jun 08 2009 pbaudis@suse.cz +- Fix race condition in the mcheck free() hook [bnc#509398] +* Fri Jun 05 2009 pbaudis@suse.cz +- Remove temporary revert of a namespace leakage cleanup in glibc-2.8 * Fri May 22 2009 pbaudis@suse.cz - Update to glibc-2.10.1-e38af591a8 of glibc/pb-stable.git glibc-2.10-branch maintained by me at repo.or.cz; contains backports of various bugfixes. (Still the same source is used for glibc-ports.) - Stop using separate tarball for nptl. +- Add ARM support, pulling in glibc-ports snapshot when compiling for ARM. * Fri May 15 2009 pbaudis@suse.cz - Add support for multiple group records for a single group when using nss_compat (configurable in /etc/default/nss) [bnc#480991]