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

[commits] r13243 - in /fsf/trunk/ports: ChangeLog.mips sysdeps/mips/dl-lookup.c



Author: eglibc
Date: Wed Mar 23 00:04:18 2011
New Revision: 13243

Log:
Import glibc-ports-mainline for 2011-03-23

Modified:
    fsf/trunk/ports/ChangeLog.mips
    fsf/trunk/ports/sysdeps/mips/dl-lookup.c

Modified: fsf/trunk/ports/ChangeLog.mips
==============================================================================
--- fsf/trunk/ports/ChangeLog.mips (original)
+++ fsf/trunk/ports/ChangeLog.mips Wed Mar 23 00:04:18 2011
@@ -1,3 +1,7 @@
+2011-03-22  Joseph Myers  <joseph@xxxxxxxxxxxxxxxx>
+
+	* sysdeps/mips/dl-lookup.c: Update from generic version.
+
 2011-01-25  Joseph Myers  <joseph@xxxxxxxxxxxxxxxx>
 
 	* sysdeps/unix/sysv/linux/mips/bits/mman.h (MADV_HUGEPAGE,

Modified: fsf/trunk/ports/sysdeps/mips/dl-lookup.c
==============================================================================
--- fsf/trunk/ports/sysdeps/mips/dl-lookup.c (original)
+++ fsf/trunk/ports/sysdeps/mips/dl-lookup.c Wed Mar 23 00:04:18 2011
@@ -1,7 +1,6 @@
 /* Look up a symbol in the loaded objects.
    MIPS/Linux version - special handling of non-PIC undefined symbol rules.
-   Copyright (C) 1995-2005, 2006, 2007, 2009, 2010
-   Free Software Foundation, Inc.
+   Copyright (C) 1995-2007, 2009, 2010, 2011 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
@@ -381,8 +380,19 @@
 		      if (entries[idx].hashval == new_hash
 			  && strcmp (entries[idx].name, undef_name) == 0)
 			{
-			  result->s = entries[idx].sym;
-			  result->m = (struct link_map *) entries[idx].map;
+			  if ((type_class & ELF_RTYPE_CLASS_COPY) != 0)
+			    {
+			      /* We possibly have to initialize the central
+				 copy from the copy addressed through the
+				 relocation.  */
+			      result->s = sym;
+			      result->m = (struct link_map *) map;
+			    }
+			  else
+			    {
+			      result->s = entries[idx].sym;
+			      result->m = (struct link_map *) entries[idx].map;
+			    }
 			  __rtld_lock_unlock_recursive (tab->lock);
 			  return 1;
 			}