[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

r4136 - glibc-package/branches/eglibc-2.11/debian/patches



Author: schizo
Date: 2010-02-06 19:59:47 +0000 (Sat, 06 Feb 2010)
New Revision: 4136

Modified:
   glibc-package/branches/eglibc-2.11/debian/patches/series
   glibc-package/branches/eglibc-2.11/debian/patches/svn-updates.diff
Log:
Update svn-updates.diff

Modified: glibc-package/branches/eglibc-2.11/debian/patches/series
===================================================================
--- glibc-package/branches/eglibc-2.11/debian/patches/series	2010-02-05 20:12:38 UTC (rev 4135)
+++ glibc-package/branches/eglibc-2.11/debian/patches/series	2010-02-06 19:59:47 UTC (rev 4136)
@@ -1,4 +1,4 @@
-# svn-updates.diff
+svn-updates.diff
 
 locale/check-unknown-symbols.diff
 locale/fix-LC_COLLATE-rules.diff

Modified: glibc-package/branches/eglibc-2.11/debian/patches/svn-updates.diff
===================================================================
--- glibc-package/branches/eglibc-2.11/debian/patches/svn-updates.diff	2010-02-05 20:12:38 UTC (rev 4135)
+++ glibc-package/branches/eglibc-2.11/debian/patches/svn-updates.diff	2010-02-06 19:59:47 UTC (rev 4136)
@@ -0,0 +1,757 @@
+SVN update of svn://svn.eglibc.org/branches/eglibc-2_11 from revision 9563
+
+--- a/include/link.h	(revision 9563)
++++ b/include/link.h	(revision 9815)
+@@ -1,6 +1,6 @@
+ /* Data structure for communication from the run-time dynamic linker for
+    loaded ELF shared objects.
+-   Copyright (C) 1995-2006, 2007 Free Software Foundation, Inc.
++   Copyright (C) 1995-2006, 2007, 2009 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
+@@ -180,7 +180,6 @@
+     unsigned int l_need_tls_init:1; /* Nonzero if GL(dl_init_static_tls)
+ 				       should be called on this link map
+ 				       when relocation finishes.  */
+-    unsigned int l_used:1;	/* Nonzero if the DSO is used.  */
+     unsigned int l_auditing:1;	/* Nonzero if the DSO is used in auditing.  */
+     unsigned int l_audit_any_plt:1; /* Nonzero if at least one audit module
+ 				       is interested in the PLT interception.*/
+@@ -239,13 +238,16 @@
+     struct link_map **l_initfini;
+ 
+     /* List of the dependencies introduced through symbol binding.  */
+-    unsigned int l_reldepsmax;
+     struct link_map_reldeps
+       {
+ 	unsigned int act;
+ 	struct link_map *list[];
+       } *l_reldeps;
++    unsigned int l_reldepsmax;
+ 
++    /* Nonzero if the DSO is used.  */
++    unsigned int l_used;
++
+     /* Various flag words.  */
+     ElfW(Word) l_feature_1;
+     ElfW(Word) l_flags_1;
+--- a/ChangeLog	(revision 9563)
++++ b/ChangeLog	(revision 9815)
+@@ -1,3 +1,34 @@
++2010-01-14  Ulrich Drepper  <drepper@redhat.com>
++
++	[BZ #11127]
++	* posix/regcomp.c (alc_eclosure_iter): Do not ignore
++	re_node_set_insert failure; return REG_ESPACE.
++	Patch by Paul Eggert.
++
++2010-01-06  Ulrich Drepper  <drepper@redhat.com>
++
++	* dirent/dirent.h: Fix typo in feature selection macro use.
++
++2009-12-15  Ulrich Drepper  <drepper@redhat.com>
++
++	* include/link.h (struct link_map): Move l_used into its own word.
++	* elf/dl-lookup.c (_dl_lookup_symbol_x): Only update l_used when it is
++	still zero.
++	* elf/dl-object.c (_dl_new_object): Set dl_used if we know it is
++	never really used.
++
++2009-12-10  Ulrich Drepper  <drepper@redhat.com>
++
++	[BZ #11000]
++	* nis/nss_nis/nis-hosts.c (_nss_nis_gethostbyname4_r): Always set
++	*herrnop before returning.
++	* nis/nss_nisplus/nisplus-hosts.c (internal_gethostbyname2_r):
++	Likewise.
++	* nss/nss_files/files-hosts.c (_nss_files_gethostbyname4_r): Handle
++	TRYAGAIN errors separately.
++	* sysdeps/posix/getaddrinfo.c (gaih_inet): Fix error handling of
++	*name4_r after functions.
++
+ 2009-11-24  Ulrich Drepper  <drepper@redhat.com>
+ 
+ 	* sysdeps/unix/grantpt.c (grantpt): Use CLOSE_ALL_FDS is available
+--- a/sysdeps/posix/getaddrinfo.c	(revision 9563)
++++ b/sysdeps/posix/getaddrinfo.c	(revision 9815)
+@@ -719,13 +719,8 @@
+ 		      if (status != NSS_STATUS_TRYAGAIN
+ 			  || rc != ERANGE || herrno != NETDB_INTERNAL)
+ 			{
+-			  if (herrno == NETDB_INTERNAL)
+-			    {
+-			      __set_h_errno (herrno);
+-			      _res.options = old_res_options;
+-			      return -EAI_SYSTEM;
+-			    }
+-			  if (herrno == TRY_AGAIN)
++			  if (status == NSS_STATUS_TRYAGAIN
++			      && herrno == TRY_AGAIN)
+ 			    no_data = EAI_AGAIN;
+ 			  else
+ 			    no_data = herrno == NO_DATA;
+--- a/nss/nss_files/files-hosts.c	(revision 9563)
++++ b/nss/nss_files/files-hosts.c	(revision 9815)
+@@ -423,6 +423,11 @@
+       if (! keep_stream)
+ 	internal_endent ();
+     }
++  else if (status == NSS_STATUS_TRYAGAIN)
++    {
++      *errnop = errno;
++      *herrnop = TRY_AGAIN;
++    }
+   else
+     {
+       *errnop = errno;
+--- a/dirent/dirent.h	(revision 9563)
++++ b/dirent/dirent.h	(revision 9815)
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1991-2000, 2003-2005, 2009 Free Software Foundation, Inc.
++/* Copyright (C) 1991-2000,2003-2005,2009,2010 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
+@@ -218,7 +218,7 @@
+ extern long int telldir (DIR *__dirp) __THROW __nonnull ((1));
+ #endif
+ 
+-#if defined __USE_BSD || defined __USE_MISC || defined __XOPEN_2K8
++#if defined __USE_BSD || defined __USE_MISC || defined __XOPEN2K8
+ 
+ /* Return the file descriptor used by DIRP.  */
+ extern int dirfd (DIR *__dirp) __THROW __nonnull ((1));
+--- a/posix/regcomp.c	(revision 9563)
++++ b/posix/regcomp.c	(revision 9815)
+@@ -1,6 +1,5 @@
+ /* Extended regular expression matching and search library.
+-   Copyright (C) 2002,2003,2004,2005,2006,2007,2009
+-   Free Software Foundation, Inc.
++   Copyright (C) 2002-2007,2009,2010 Free Software Foundation, Inc.
+    This file is part of the GNU C Library.
+    Contributed by Isamu Hasegawa <isamu@yamato.ibm.com>.
+ 
+@@ -622,7 +621,7 @@
+ 	    re_dfastate_t *state = entry->array[j];
+ 	    free_state (state);
+ 	  }
+-        re_free (entry->array);
++	re_free (entry->array);
+       }
+   re_free (dfa->state_table);
+ #ifdef RE_ENABLE_I18N
+@@ -1076,8 +1075,8 @@
+ 	  }
+ 	break;
+       case OP_PERIOD:
+-        has_period = 1;
+-        break;
++	has_period = 1;
++	break;
+       case OP_BACK_REF:
+       case OP_ALT:
+       case END_OF_RE:
+@@ -1090,7 +1089,7 @@
+       case SIMPLE_BRACKET:
+ 	/* Just double check.  The non-ASCII range starts at 0x80.  */
+ 	assert (0x80 % BITSET_WORD_BITS == 0);
+-        for (i = 0x80 / BITSET_WORD_BITS; i < BITSET_WORDS; ++i)
++	for (i = 0x80 / BITSET_WORD_BITS; i < BITSET_WORDS; ++i)
+ 	  if (dfa->nodes[node].opr.sbcset[i])
+ 	    return;
+ 	break;
+@@ -1171,7 +1170,7 @@
+     {
+       dfa->inveclosures = re_malloc (re_node_set, dfa->nodes_len);
+       if (BE (dfa->inveclosures == NULL, 0))
+-        return REG_ESPACE;
++	return REG_ESPACE;
+       ret = calc_inveclosure (dfa);
+     }
+ 
+@@ -1193,16 +1192,16 @@
+ 	 if that's the only child).  */
+       while (node->left || node->right)
+ 	if (node->left)
+-          node = node->left;
+-        else
+-          node = node->right;
++	  node = node->left;
++	else
++	  node = node->right;
+ 
+       do
+ 	{
+ 	  reg_errcode_t err = fn (extra, node);
+ 	  if (BE (err != REG_NOERROR, 0))
+ 	    return err;
+-          if (node->parent == NULL)
++	  if (node->parent == NULL)
+ 	    return REG_NOERROR;
+ 	  prev = node;
+ 	  node = node->parent;
+@@ -1236,7 +1235,7 @@
+ 	      prev = node;
+ 	      node = node->parent;
+ 	      if (!node)
+-	        return REG_NOERROR;
++		return REG_NOERROR;
+ 	    }
+ 	  node = node->right;
+ 	}
+@@ -1259,13 +1258,13 @@
+     }
+ 
+   else if (node->token.type == SUBEXP
+-           && node->left && node->left->token.type == SUBEXP)
++	   && node->left && node->left->token.type == SUBEXP)
+     {
+       int other_idx = node->left->token.opr.idx;
+ 
+       node->left = node->left->left;
+       if (node->left)
+-        node->left->parent = node;
++	node->left->parent = node;
+ 
+       dfa->subexp_map[other_idx] = dfa->subexp_map[node->token.opr.idx];
+       if (other_idx < BITSET_WORD_BITS)
+@@ -1350,9 +1349,9 @@
+       node->first = node;
+       node->node_idx = re_dfa_add_node (dfa, node->token);
+       if (BE (node->node_idx == -1, 0))
+-        return REG_ESPACE;
++	return REG_ESPACE;
+       if (node->token.type == ANCHOR)
+-        dfa->nodes[node->node_idx].constraint = node->token.opr.ctx_type;
++	dfa->nodes[node->node_idx].constraint = node->token.opr.ctx_type;
+     }
+   return REG_NOERROR;
+ }
+@@ -1374,7 +1373,7 @@
+       if (node->left)
+ 	node->left->next = node->next;
+       if (node->right)
+-        node->right->next = node->next;
++	node->right->next = node->next;
+       break;
+     }
+   return REG_NOERROR;
+@@ -1653,9 +1652,10 @@
+ calc_eclosure_iter (re_node_set *new_set, re_dfa_t *dfa, int node, int root)
+ {
+   reg_errcode_t err;
+-  int i, incomplete;
++  int i;
+   re_node_set eclosure;
+-  incomplete = 0;
++  int ret;
++  int incomplete = 0;
+   err = re_node_set_alloc (&eclosure, dfa->edests[node].nelem + 1);
+   if (BE (err != REG_NOERROR, 0))
+     return err;
+@@ -1710,8 +1710,10 @@
+ 	  }
+       }
+ 
+-  /* Epsilon closures include itself.  */
+-  re_node_set_insert (&eclosure, node);
++  /* An epsilon closure includes itself.  */
++  ret = re_node_set_insert (&eclosure, node);
++  if (BE (ret < 0, 0))
++    return REG_ESPACE;
+   if (incomplete && !root)
+     dfa->eclosures[node].nelem = 0;
+   else
+@@ -2295,7 +2297,7 @@
+ 	  && dfa->word_ops_used == 0)
+ 	init_word_char (dfa);
+       if (token->opr.ctx_type == WORD_DELIM
+-          || token->opr.ctx_type == NOT_WORD_DELIM)
++	  || token->opr.ctx_type == NOT_WORD_DELIM)
+ 	{
+ 	  bin_tree_t *tree_first, *tree_last;
+ 	  if (token->opr.ctx_type == WORD_DELIM)
+@@ -2303,13 +2305,13 @@
+ 	      token->opr.ctx_type = WORD_FIRST;
+ 	      tree_first = create_token_tree (dfa, NULL, NULL, token);
+ 	      token->opr.ctx_type = WORD_LAST;
+-            }
+-          else
+-            {
++	    }
++	  else
++	    {
+ 	      token->opr.ctx_type = INSIDE_WORD;
+ 	      tree_first = create_token_tree (dfa, NULL, NULL, token);
+ 	      token->opr.ctx_type = INSIDE_NOTWORD;
+-            }
++	    }
+ 	  tree_last = create_token_tree (dfa, NULL, NULL, token);
+ 	  tree = create_tree (dfa, tree_first, tree_last, OP_ALT);
+ 	  if (BE (tree_first == NULL || tree_last == NULL || tree == NULL, 0))
+@@ -2420,7 +2422,7 @@
+     {
+       tree = parse_reg_exp (regexp, preg, token, syntax, nest, err);
+       if (BE (*err == REG_NOERROR && token->type != OP_CLOSE_SUBEXP, 0))
+-        *err = REG_EPAREN;
++	*err = REG_EPAREN;
+       if (BE (*err != REG_NOERROR, 0))
+ 	return NULL;
+     }
+@@ -2551,11 +2553,11 @@
+       elem = duplicate_tree (elem, dfa);
+       tree = create_tree (dfa, tree, elem, CONCAT);
+       if (BE (elem == NULL || tree == NULL, 0))
+-        goto parse_dup_op_espace;
++	goto parse_dup_op_espace;
+ 
+       tree = create_tree (dfa, tree, NULL, OP_ALT);
+       if (BE (tree == NULL, 0))
+-        goto parse_dup_op_espace;
++	goto parse_dup_op_espace;
+     }
+ 
+   if (old_tree)
+@@ -2636,9 +2638,9 @@
+        no MBCSET if dfa_mb_cur_max (dfa) == 1.  */
+     if (mbcset)
+       {
+-        /* Check the space of the arrays.  */
+-        if (BE (*range_alloc == mbcset->nranges, 0))
+-          {
++	/* Check the space of the arrays.  */
++	if (BE (*range_alloc == mbcset->nranges, 0))
++	  {
+ 	    /* There is not enough space, need realloc.  */
+ 	    wchar_t *new_array_start, *new_array_end;
+ 	    int new_nranges;
+@@ -2648,9 +2650,9 @@
+ 	    /* Use realloc since mbcset->range_starts and mbcset->range_ends
+ 	       are NULL if *range_alloc == 0.  */
+ 	    new_array_start = re_realloc (mbcset->range_starts, wchar_t,
+-				          new_nranges);
++					  new_nranges);
+ 	    new_array_end = re_realloc (mbcset->range_ends, wchar_t,
+-				        new_nranges);
++					new_nranges);
+ 
+ 	    if (BE (new_array_start == NULL || new_array_end == NULL, 0))
+ 	      return REG_ESPACE;
+@@ -2658,10 +2660,10 @@
+ 	    mbcset->range_starts = new_array_start;
+ 	    mbcset->range_ends = new_array_end;
+ 	    *range_alloc = new_nranges;
+-          }
++	  }
+ 
+-        mbcset->range_starts[mbcset->nranges] = start_wc;
+-        mbcset->range_ends[mbcset->nranges++] = end_wc;
++	mbcset->range_starts[mbcset->nranges] = start_wc;
++	mbcset->range_ends[mbcset->nranges++] = end_wc;
+       }
+ 
+     /* Build the table for single byte characters.  */
+@@ -2888,8 +2890,8 @@
+ 	 build below suffices. */
+       if (nrules > 0 || dfa_mb_cur_max (dfa) > 1)
+ 	{
+-          /* Check the space of the arrays.  */
+-          if (BE (*range_alloc == mbcset->nranges, 0))
++	  /* Check the space of the arrays.  */
++	  if (BE (*range_alloc == mbcset->nranges, 0))
+ 	    {
+ 	      /* There is not enough space, need realloc.  */
+ 	      uint32_t *new_array_start;
+@@ -2901,18 +2903,18 @@
+ 	      new_array_start = re_realloc (mbcset->range_starts, uint32_t,
+ 					    new_nranges);
+ 	      new_array_end = re_realloc (mbcset->range_ends, uint32_t,
+-				          new_nranges);
++					  new_nranges);
+ 
+ 	      if (BE (new_array_start == NULL || new_array_end == NULL, 0))
+-	        return REG_ESPACE;
++		return REG_ESPACE;
+ 
+ 	      mbcset->range_starts = new_array_start;
+ 	      mbcset->range_ends = new_array_end;
+ 	      *range_alloc = new_nranges;
+ 	    }
+ 
+-          mbcset->range_starts[mbcset->nranges] = start_collseq;
+-          mbcset->range_ends[mbcset->nranges++] = end_collseq;
++	  mbcset->range_starts[mbcset->nranges] = start_collseq;
++	  mbcset->range_ends[mbcset->nranges++] = end_collseq;
+ 	}
+ 
+       /* Build the table for single byte characters.  */
+@@ -3254,17 +3256,17 @@
+ 	 of having both SIMPLE_BRACKET and COMPLEX_BRACKET.  */
+       if (sbc_idx < BITSET_WORDS)
+ 	{
+-          /* Build a tree for simple bracket.  */
+-          br_token.type = SIMPLE_BRACKET;
+-          br_token.opr.sbcset = sbcset;
+-          work_tree = create_token_tree (dfa, NULL, NULL, &br_token);
+-          if (BE (work_tree == NULL, 0))
+-            goto parse_bracket_exp_espace;
++	  /* Build a tree for simple bracket.  */
++	  br_token.type = SIMPLE_BRACKET;
++	  br_token.opr.sbcset = sbcset;
++	  work_tree = create_token_tree (dfa, NULL, NULL, &br_token);
++	  if (BE (work_tree == NULL, 0))
++	    goto parse_bracket_exp_espace;
+ 
+-          /* Then join them by ALT node.  */
+-          work_tree = create_tree (dfa, work_tree, mbc_tree, OP_ALT);
+-          if (BE (work_tree == NULL, 0))
+-            goto parse_bracket_exp_espace;
++	  /* Then join them by ALT node.  */
++	  work_tree = create_tree (dfa, work_tree, mbc_tree, OP_ALT);
++	  if (BE (work_tree == NULL, 0))
++	    goto parse_bracket_exp_espace;
+ 	}
+       else
+ 	{
+@@ -3283,7 +3285,7 @@
+       br_token.opr.sbcset = sbcset;
+       work_tree = create_token_tree (dfa, NULL, NULL, &br_token);
+       if (BE (work_tree == NULL, 0))
+-        goto parse_bracket_exp_espace;
++	goto parse_bracket_exp_espace;
+     }
+   return work_tree;
+ 
+@@ -3838,7 +3840,7 @@
+ 	      node = node->parent;
+ 	      dup_node = dup_node->parent;
+ 	      if (!node)
+-	        return dup_root;
++		return dup_root;
+ 	    }
+ 	  node = node->right;
+ 	  p_new = &dup_node->right;
+--- a/nis/nss_nisplus/nisplus-hosts.c	(revision 9563)
++++ b/nis/nss_nisplus/nisplus-hosts.c	(revision 9815)
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1997-2003, 2005, 2006, 2008 Free Software Foundation, Inc.
++/* Copyright (C) 1997-2003, 2005, 2006, 2008, 2009 Free Software Foundation, Inc.
+    This file is part of the GNU C Library.
+    Contributed by Thorsten Kukuk <kukuk@suse.de>, 1997.
+ 
+@@ -38,10 +38,10 @@
+ static u_long tablename_len;
+ 
+ #define NISENTRYVAL(idx, col, res) \
+-        (NIS_RES_OBJECT (res)[idx].EN_data.en_cols.en_cols_val[col].ec_value.ec_value_val)
++	(NIS_RES_OBJECT (res)[idx].EN_data.en_cols.en_cols_val[col].ec_value.ec_value_val)
+ 
+ #define NISENTRYLEN(idx, col, res) \
+-        (NIS_RES_OBJECT (res)[idx].EN_data.en_cols.en_cols_val[col].ec_value.ec_value_len)
++	(NIS_RES_OBJECT (res)[idx].EN_data.en_cols.en_cols_val[col].ec_value.ec_value_len)
+ 
+ /* Get implementation for some internal functions. */
+ #include <resolv/mapv4v6addr.h>
+@@ -287,15 +287,15 @@
+ 	      return NSS_STATUS_TRYAGAIN;
+ 	    }
+ 	  if (niserr2nss (result->status) != NSS_STATUS_SUCCESS)
+-            {
+-              enum nss_status retval = niserr2nss (result->status);
+-              if (retval == NSS_STATUS_TRYAGAIN)
+-                {
+-                  *herrnop = NETDB_INTERNAL;
+-                  *errnop = errno;
+-                }
+-              return retval;
+-            }
++	    {
++	      enum nss_status retval = niserr2nss (result->status);
++	      if (retval == NSS_STATUS_TRYAGAIN)
++		{
++		  *herrnop = NETDB_INTERNAL;
++		  *errnop = errno;
++		}
++	      return retval;
++	    }
+ 
+ 	}
+       else
+@@ -308,18 +308,18 @@
+ 	      return NSS_STATUS_TRYAGAIN;
+ 	    }
+ 	  if (niserr2nss (result->status) != NSS_STATUS_SUCCESS)
+-            {
+-              enum nss_status retval= niserr2nss (result->status);
++	    {
++	      enum nss_status retval= niserr2nss (result->status);
+ 
+ 	      nis_freeresult (result);
+ 	      result = saved_res;
+-              if (retval == NSS_STATUS_TRYAGAIN)
+-                {
+-                  *herrnop = NETDB_INTERNAL;
++	      if (retval == NSS_STATUS_TRYAGAIN)
++		{
++		  *herrnop = NETDB_INTERNAL;
+ 		  *errnop = errno;
+-                }
+-              return retval;
+-            }
++		}
++	      return retval;
++	    }
+ 	}
+ 
+       if (_res.options & RES_USE_INET6)
+@@ -330,13 +330,13 @@
+ 						buflen, errnop, 0);
+ 
+       if (parse_res == -1)
+-        {
++	{
+ 	  nis_freeresult (result);
+ 	  result = saved_res;
+-          *herrnop = NETDB_INTERNAL;
++	  *herrnop = NETDB_INTERNAL;
+ 	  *errnop = ERANGE;
+-          return NSS_STATUS_TRYAGAIN;
+-        }
++	  return NSS_STATUS_TRYAGAIN;
++	}
+       if (saved_res != NULL)
+ 	nis_freeresult (saved_res);
+ 
+@@ -435,6 +435,7 @@
+   if (result == NULL)
+     {
+       *errnop = ENOMEM;
++      *herrnop = NETDB_INTERNAL;
+       return NSS_STATUS_TRYAGAIN;
+     }
+ 
+@@ -444,10 +445,13 @@
+       if (retval == NSS_STATUS_TRYAGAIN)
+ 	{
+ 	  *errnop = errno;
++	  *herrnop = TRY_AGAIN;
++	}
++      else
++	{
++	  __set_errno (olderr);
+ 	  *herrnop = NETDB_INTERNAL;
+ 	}
+-      else
+-	__set_errno (olderr);
+       nis_freeresult (result);
+       return retval;
+     }
+@@ -502,7 +506,7 @@
+ 					  buflen, errnop, h_errnop,
+ 					  AI_V4MAPPED);
+       if (status == NSS_STATUS_SUCCESS)
+-        return status;
++	return status;
+     }
+ 
+   return internal_gethostbyname2_r (name, AF_INET, host, buffer,
+--- a/nis/nss_nis/nis-hosts.c	(revision 9563)
++++ b/nis/nss_nis/nis-hosts.c	(revision 9815)
+@@ -70,20 +70,20 @@
+      {
+        assert ((flags & AI_V4MAPPED) == 0 || af != AF_UNSPEC);
+        if (flags & AI_V4MAPPED)
+-         {
+-           map_v4v6_address ((char *) entdata->host_addr,
+-                             (char *) entdata->host_addr);
+-           result->h_addrtype = AF_INET6;
+-           result->h_length = IN6ADDRSZ;
+-         }
++	 {
++	   map_v4v6_address ((char *) entdata->host_addr,
++			     (char *) entdata->host_addr);
++	   result->h_addrtype = AF_INET6;
++	   result->h_length = IN6ADDRSZ;
++	 }
+        else
+-         {
+-           result->h_addrtype = AF_INET;
+-           result->h_length = INADDRSZ;
+-         }
++	 {
++	   result->h_addrtype = AF_INET;
++	   result->h_length = INADDRSZ;
++	 }
+      }
+    else if (af != AF_INET
+-            && inet_pton (AF_INET6, addr, entdata->host_addr) > 0)
++	    && inet_pton (AF_INET6, addr, entdata->host_addr) > 0)
+      {
+        result->h_addrtype = AF_INET6;
+        result->h_length = IN6ADDRSZ;
+@@ -164,14 +164,14 @@
+       int keylen;
+       int yperr;
+       if (new_start)
+-        yperr = yp_first (domain, "hosts.byname", &outkey, &keylen, &result,
++	yperr = yp_first (domain, "hosts.byname", &outkey, &keylen, &result,
+ 			  &len);
+       else
+-        yperr = yp_next (domain, "hosts.byname", oldkey, oldkeylen, &outkey,
++	yperr = yp_next (domain, "hosts.byname", oldkey, oldkeylen, &outkey,
+ 			 &keylen, &result, &len);
+ 
+       if (__builtin_expect (yperr != YPERR_SUCCESS, 0))
+-        {
++	{
+ 	  enum nss_status retval = yperr2nss (yperr);
+ 
+ 	  switch (retval)
+@@ -191,12 +191,12 @@
+ 	}
+ 
+       if (__builtin_expect ((size_t) (len + 1) > linebuflen, 0))
+-        {
+-          free (result);
++	{
++	  free (result);
+ 	  *h_errnop = NETDB_INTERNAL;
+-          *errnop = ERANGE;
+-          return NSS_STATUS_TRYAGAIN;
+-        }
++	  *errnop = ERANGE;
++	  return NSS_STATUS_TRYAGAIN;
++	}
+ 
+       char *p = strncpy (data->linebuffer, result, len);
+       data->linebuffer[len] = '\0';
+@@ -233,7 +233,7 @@
+   __libc_lock_lock (lock);
+ 
+   status = internal_nis_gethostent_r (host, buffer, buflen, errnop, h_errnop,
+-		        ((_res.options & RES_USE_INET6) ? AF_INET6 : AF_INET),
++			((_res.options & RES_USE_INET6) ? AF_INET6 : AF_INET),
+ 			((_res.options & RES_USE_INET6) ? AI_V4MAPPED : 0 ));
+ 
+   __libc_lock_unlock (lock);
+@@ -346,7 +346,7 @@
+ 
+   return internal_gethostbyname2_r (name, af, host, buffer, buflen, errnop,
+ 				    h_errnop,
+-		        ((_res.options & RES_USE_INET6) ? AI_V4MAPPED : 0));
++			((_res.options & RES_USE_INET6) ? AI_V4MAPPED : 0));
+ }
+ 
+ 
+@@ -456,7 +456,10 @@
+ {
+   char *domain;
+   if (yp_get_default_domain (&domain))
+-    return NSS_STATUS_UNAVAIL;
++    {
++      *herrnop = NO_DATA;
++      return NSS_STATUS_UNAVAIL;
++    }
+ 
+   /* Convert name to lowercase.  */
+   size_t namlen = strlen (name);
+--- a/elf/dl-object.c	(revision 9563)
++++ b/elf/dl-object.c	(revision 9815)
+@@ -1,5 +1,5 @@
+ /* Storage management for the chain of loaded shared objects.
+-   Copyright (C) 1995-2002,2004,2006,2007,2008 Free Software Foundation, Inc.
++   Copyright (C) 1995-2002,2004,2006-2008,2009 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
+@@ -67,6 +67,10 @@
+ 
+   new->l_name = realname;
+   new->l_type = type;
++  /* If we set the bit now since we know it is never used we avoid
++     dirtying the cache line later.  */
++  if ((GLRO(dl_debug_mask) & DL_DEBUG_UNUSED) == 0)
++    new->l_used = 1;
+   new->l_loader = loader;
+ #if NO_TLS_OFFSET != 0
+   new->l_tls_offset = NO_TLS_OFFSET;
+@@ -174,7 +178,7 @@
+ 	  if (result == NULL)
+ 	    {
+ 	      /* We were not able to determine the current directory.
+-	         Note that free(origin) is OK if origin == NULL.  */
++		 Note that free(origin) is OK if origin == NULL.  */
+ 	      free (origin);
+ 	      origin = (char *) -1;
+ 	      goto out;
+--- a/elf/dl-lookup.c	(revision 9563)
++++ b/elf/dl-lookup.c	(revision 9815)
+@@ -777,7 +777,7 @@
+   if (__builtin_expect (protected != 0, 0))
+     {
+       /* It is very tricky.  We need to figure out what value to
+-         return for the protected symbol.  */
++	 return for the protected symbol.  */
+       if (type_class == ELF_RTYPE_CLASS_PLT)
+ 	{
+ 	  if (current_value.s != NULL && current_value.m != undef_map)
+@@ -822,7 +822,8 @@
+ 				  version, type_class, flags, skip_map);
+ 
+   /* The object is used.  */
+-  current_value.m->l_used = 1;
++  if (__builtin_expect (current_value.m->l_used == 0, 0))
++    current_value.m->l_used = 1;
+ 
+   if (__builtin_expect (GLRO(dl_debug_mask)
+ 			& (DL_DEBUG_BINDINGS|DL_DEBUG_PRELINK), 0))
+@@ -844,7 +845,7 @@
+   Elf_Symndx nchain;
+ 
+   if (__builtin_expect (map->l_info[DT_ADDRTAGIDX (DT_GNU_HASH) + DT_NUM
+-  				    + DT_THISPROCNUM + DT_VERSIONTAGNUM
++				    + DT_THISPROCNUM + DT_VERSIONTAGNUM
+ 				    + DT_EXTRANUM + DT_VALNUM] != NULL, 1))
+     {
+       Elf32_Word *hash32
+--- a/ports/sysdeps/mips/dl-lookup.c	(revision 9563)
++++ b/ports/sysdeps/mips/dl-lookup.c	(revision 9815)
+@@ -794,7 +794,7 @@
+   if (__builtin_expect (protected != 0, 0))
+     {
+       /* It is very tricky.  We need to figure out what value to
+-         return for the protected symbol.  */
++	 return for the protected symbol.  */
+       if (type_class == ELF_RTYPE_CLASS_PLT)
+ 	{
+ 	  if (current_value.s != NULL && current_value.m != undef_map)
+@@ -839,7 +839,8 @@
+ 				  version, type_class, flags, skip_map);
+ 
+   /* The object is used.  */
+-  current_value.m->l_used = 1;
++  if (__builtin_expect (current_value.m->l_used == 0, 0))
++    current_value.m->l_used = 1;
+ 
+   if (__builtin_expect (GLRO(dl_debug_mask)
+ 			& (DL_DEBUG_BINDINGS|DL_DEBUG_PRELINK), 0))
+@@ -861,7 +862,7 @@
+   Elf_Symndx nchain;
+ 
+   if (__builtin_expect (map->l_info[DT_ADDRTAGIDX (DT_GNU_HASH) + DT_NUM
+-  				    + DT_THISPROCNUM + DT_VERSIONTAGNUM
++				    + DT_THISPROCNUM + DT_VERSIONTAGNUM
+ 				    + DT_EXTRANUM + DT_VALNUM] != NULL, 1))
+     {
+       Elf32_Word *hash32
+--- a/ports/ChangeLog.mips	(revision 9563)
++++ b/ports/ChangeLog.mips	(revision 9815)
+@@ -1,3 +1,7 @@
++2009-12-16  Joseph Myers  <joseph@codesourcery.com>
++
++	* sysdeps/mips/dl-lookup.c: Update from generic version.
++
+ 2009-12-01  Joseph Myers  <joseph@codesourcery.com>
+ 
+ 	* sysdeps/unix/sysv/linux/mips/mips64/n32/syscalls.list


Reply to: