This is the mail archive of the glibc-cvs@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Community source repository for glibc add-on ports branch, master, updated. glibc-2.14-22-g9a7e109


This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "Community source repository for glibc add-on ports".

The branch, master has been updated
       via  9a7e10917d5b1e3cf2cae864b336c1a4d1deb3c0 (commit)
       via  5c3bd235210874d41a5c851cfe147bf057199a95 (commit)
       via  09272d2c9fb2e6c73679d25e227e55c29f4362de (commit)
       via  86a90a837cde86d73d23216ea22cb153cddf4959 (commit)
       via  0507f293c9b67d8eec92e8178308d72f1ed88449 (commit)
       via  bf5316f3a608b608da66b4d6e9b61a4da035fb35 (commit)
       via  989edf2cb0254faa4c7a2e46410bede16c2c0219 (commit)
      from  560d4a5882df782e1ede396870ec18e382842bae (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
http://sources.redhat.com/git/gitweb.cgi?p=glibc-ports.git;a=commitdiff;h=9a7e10917d5b1e3cf2cae864b336c1a4d1deb3c0

commit 9a7e10917d5b1e3cf2cae864b336c1a4d1deb3c0
Author: Andreas Schwab <schwab@redhat.com>
Date:   Wed Oct 5 11:53:16 2011 +0200

    mips: don't call ifunc functions in trace mode

diff --git a/ChangeLog.mips b/ChangeLog.mips
index 8da2af2..5d9d772 100644
--- a/ChangeLog.mips
+++ b/ChangeLog.mips
@@ -1,3 +1,8 @@
+2011-10-05  Andreas Schwab  <schwab@redhat.com>
+
+	* sysdeps/mips/dl-machine.h (elf_machine_rel, elf_machine_rela)
+	(elf_machine_lazy_rel): Add parameter skip_ifunc.
+
 2011-09-13  Joseph Myers  <joseph@codesourcery.com>
 
 	* sysdeps/unix/sysv/linux/mips/bits/socket.h (__cmsg_nxthdr): Cast
@@ -389,7 +394,7 @@
 	Update comment.
 	* sysdeps/unix/sysv/linux/mips/kernel_rt_sigframe.h: New file.
 	* sysdeps/unix/sysv/linux/mips/ucontext_i.sym: New file.
-	* sysdeps/unix/sysv/linux/mips/Makefile (gen-as-const-headers): 
+	* sysdeps/unix/sysv/linux/mips/Makefile (gen-as-const-headers):
 	Add ucontext_i.sym.
 
 2009-04-18  Joseph Myers  <joseph@codesourcery.com>
@@ -594,7 +599,7 @@
 
 2008-04-02  Aurelien Jarno  <aurelien@aurel32.net>
 
-	* sysdeps/unix/sysv/linux/mips/mips64/n32/syscalls.list: Add 
+	* sysdeps/unix/sysv/linux/mips/mips64/n32/syscalls.list: Add
 	truncate and ftruncate systems calls.
 	* sysdeps/unix/sysv/linux/mips/mips64/n32/ftruncate64.c: Make an
 	empty file.
@@ -980,7 +985,7 @@
 	(lll_robust_mutex_dead, lll_robust_mutex_trylock, lll_robust_mutex_lock,
 	lll_robust_mutex_cond_lock, lll_robust_mutex_timedlock,
 	lll_robust_mutex_unlock): New macros.
-	(__lll_robust_lock_wait, __lll_robust_timedlock_wait): New prototypes.	
+	(__lll_robust_lock_wait, __lll_robust_timedlock_wait): New prototypes.
 	* sysdeps/unix/sysv/linux/mips/nptl/pt-vfork.S: Use correct path to
 	vfork.S.
 	* sysdeps/unix/sysv/linux/mips/nptl/vfork.S: Likewise.
diff --git a/sysdeps/mips/dl-machine.h b/sysdeps/mips/dl-machine.h
index 26e1fcb..3e1d402 100644
--- a/sysdeps/mips/dl-machine.h
+++ b/sysdeps/mips/dl-machine.h
@@ -528,7 +528,7 @@ elf_machine_reloc (struct link_map *map, ElfW(Addr) r_info,
 			      strtab + refsym->st_name);
 	  }
 	memcpy (reloc_addr, (void *) value,
-	        MIN (sym->st_size, refsym->st_size));
+		MIN (sym->st_size, refsym->st_size));
 	break;
       }
 
@@ -559,7 +559,7 @@ auto inline void
 __attribute__ ((always_inline))
 elf_machine_rel (struct link_map *map, const ElfW(Rel) *reloc,
 		 const ElfW(Sym) *sym, const struct r_found_version *version,
-		 void *const reloc_addr)
+		 void *const reloc_addr, int skip_ifunc)
 {
   elf_machine_reloc (map, reloc->r_info, sym, version, reloc_addr, 0, 1);
 }
@@ -575,7 +575,8 @@ elf_machine_rel_relative (ElfW(Addr) l_addr, const ElfW(Rel) *reloc,
 auto inline void
 __attribute__((always_inline))
 elf_machine_lazy_rel (struct link_map *map,
-		      ElfW(Addr) l_addr, const ElfW(Rel) *reloc)
+		      ElfW(Addr) l_addr, const ElfW(Rel) *reloc,
+		      int skip_ifunc)
 {
   ElfW(Addr) *const reloc_addr = (void *) (l_addr + reloc->r_offset);
   const unsigned int r_type = ELFW(R_TYPE) (reloc->r_info);
@@ -598,7 +599,7 @@ auto inline void
 __attribute__ ((always_inline))
 elf_machine_rela (struct link_map *map, const ElfW(Rela) *reloc,
 		  const ElfW(Sym) *sym, const struct r_found_version *version,
-		 void *const reloc_addr)
+		  void *const reloc_addr, int skip_ifunc)
 {
   elf_machine_reloc (map, reloc->r_info, sym, version, reloc_addr,
 		     reloc->r_addend, 0);
@@ -626,7 +627,7 @@ elf_machine_got_rel (struct link_map *map, int lazy)
     ({									  \
       const ElfW(Sym) *ref = sym;					  \
       const struct r_found_version *version				  \
-        = vernum ? &map->l_versions[vernum[sym_index] & 0x7fff] : NULL;	  \
+	= vernum ? &map->l_versions[vernum[sym_index] & 0x7fff] : NULL;	  \
       struct link_map *sym_map;						  \
       sym_map = RESOLVE_MAP (&ref, version, reloc);			  \
       ref ? sym_map->l_addr + ref->st_value : 0;			  \
@@ -648,7 +649,7 @@ elf_machine_got_rel (struct link_map *map, int lazy)
       i = (got[1] & ELF_MIPS_GNU_GOT1_MASK)? 2 : 1;
 
       /* Add the run-time displacement to all local got entries if
-         needed.  */
+	 needed.  */
       if (__builtin_expect (map->l_addr != 0, 0))
 	{
 	  while (i < n)

http://sources.redhat.com/git/gitweb.cgi?p=glibc-ports.git;a=commitdiff;h=5c3bd235210874d41a5c851cfe147bf057199a95

commit 5c3bd235210874d41a5c851cfe147bf057199a95
Author: Andreas Schwab <schwab@redhat.com>
Date:   Wed Oct 5 11:53:01 2011 +0200

    m68k: don't call ifunc functions in trace mode

diff --git a/ChangeLog.m68k b/ChangeLog.m68k
index bac7afe..0e99a0f 100644
--- a/ChangeLog.m68k
+++ b/ChangeLog.m68k
@@ -1,3 +1,8 @@
+2011-10-05  Andreas Schwab  <schwab@redhat.com>
+
+	* sysdeps/m68k/dl-machine.h (elf_machine_rela)
+	(elf_machine_lazy_rel): Add parameter skip_ifunc.
+
 2011-09-11  Andreas Schwab  <schwab@linux-m68k.org>
 
 	* sysdeps/m68k/nptl/tls.h: Don't define USE_TLS.
diff --git a/sysdeps/m68k/dl-machine.h b/sysdeps/m68k/dl-machine.h
index 8f8091e..5127212 100644
--- a/sysdeps/m68k/dl-machine.h
+++ b/sysdeps/m68k/dl-machine.h
@@ -211,7 +211,7 @@ elf_machine_plt_value (struct link_map *map, const Elf32_Rela *reloc,
 auto inline void __attribute__ ((unused, always_inline))
 elf_machine_rela (struct link_map *map, const Elf32_Rela *reloc,
 		  const Elf32_Sym *sym, const struct r_found_version *version,
-		  void *const reloc_addr_arg)
+		  void *const reloc_addr_arg, int skip_ifunc)
 {
   Elf32_Addr *const reloc_addr = reloc_addr_arg;
   const unsigned int r_type = ELF32_R_TYPE (reloc->r_info);
@@ -307,7 +307,8 @@ elf_machine_rela_relative (Elf32_Addr l_addr, const Elf32_Rela *reloc,
 
 auto inline void __attribute__ ((unused, always_inline))
 elf_machine_lazy_rel (struct link_map *map,
-		      Elf32_Addr l_addr, const Elf32_Rela *reloc)
+		      Elf32_Addr l_addr, const Elf32_Rela *reloc,
+		      int skip_ifunc)
 {
   Elf32_Addr *const reloc_addr = (void *) (l_addr + reloc->r_offset);
   if (ELF32_R_TYPE (reloc->r_info) == R_68K_JMP_SLOT)

http://sources.redhat.com/git/gitweb.cgi?p=glibc-ports.git;a=commitdiff;h=09272d2c9fb2e6c73679d25e227e55c29f4362de

commit 09272d2c9fb2e6c73679d25e227e55c29f4362de
Author: Andreas Schwab <schwab@redhat.com>
Date:   Wed Oct 5 11:52:45 2011 +0200

    hppa: don't call ifunc functions in trace mode

diff --git a/ChangeLog.hppa b/ChangeLog.hppa
index 2ccc911..f4cabb6 100644
--- a/ChangeLog.hppa
+++ b/ChangeLog.hppa
@@ -1,7 +1,12 @@
+2011-10-05  Andreas Schwab  <schwab@redhat.com>
+
+	* sysdeps/hppa/dl-machine.h (elf_machine_rela)
+	(elf_machine_lazy_rel): Add parameter skip_ifunc.
+
 2010-06-24  Carlos O'Donell  <carlos@codesourcery.com>
 
-	* sysdeps/unix/sysv/linux/hppa/nptl/pt-vfork.S: Only create stack 
-	frame around call to SYSCALL_ERROR_HANDLER. Do not restore %rp 
+	* sysdeps/unix/sysv/linux/hppa/nptl/pt-vfork.S: Only create stack
+	frame around call to SYSCALL_ERROR_HANDLER. Do not restore %rp
 	from the stack frame on successfull return.
 
 2010-06-23  Carlos O'Donell  <carlos@codesourcery.com>
@@ -10,12 +15,12 @@
 	Document that this function is a non-standard calling ABI.
 	Document register usage.
 	(__getcontext): Use normal %sp without adjustment. Use named
-	resgister %sp. 
+	resgister %sp.
 	* sysdeps/unix/sysv/linux/hppa/makecontext.c: Remove FRAME_SIZE.
 	Define FRAME_SIZE_UL, FRAME_SIZE_BYTES, ARGS.
-	(__makecontext): Create and setup a stack frame. 
+	(__makecontext): Create and setup a stack frame.
 	* sysdeps/unix/sysv/linux/hppa/setcontext.S (__setcontext):
-	Use named register %sp. Do not use oSS_SP. 
+	Use named register %sp. Do not use oSS_SP.
 
 2010-06-07  Andreas Schwab  <schwab@redhat.com>
 
diff --git a/sysdeps/hppa/dl-machine.h b/sysdeps/hppa/dl-machine.h
index e462fd3..72dba8f 100644
--- a/sysdeps/hppa/dl-machine.h
+++ b/sysdeps/hppa/dl-machine.h
@@ -1,5 +1,5 @@
 /* Machine-dependent ELF dynamic relocation inline functions.  PA-RISC version.
-   Copyright (C) 1995-1997,1999-2003
+   Copyright (C) 1995-1997,1999-2003,2011
 	Free Software Foundation, Inc.
    Contributed by David Huggins-Daines <dhd@debian.org>
    This file is part of the GNU C Library.
@@ -33,19 +33,19 @@
 #include <abort-instr.h>
 #include <tls.h>
 
-/* These two definitions must match the definition of the stub in 
+/* These two definitions must match the definition of the stub in
    bfd/elf32-hppa.c (see plt_stub[]).
-   
+
    a. Define the size of the *entire* stub we place at the end of the PLT
    table (right up against the GOT).
-   
+
    b. Define the number of bytes back from the GOT to the entry point of
    the PLT stub. You see the PLT stub must be entered in the middle
-   so it can depwi to find it's own address (long jump stub) 
-   
+   so it can depwi to find it's own address (long jump stub)
+
    c. Define the size of a single PLT entry so we can jump over the
    last entry to get the stub address */
-	
+
 #define SIZEOF_PLT_STUB (7*4)
 #define GOT_FROM_PLT_STUB (4*4)
 #define PLT_ENTRY_SIZE (2*4)
@@ -110,8 +110,8 @@ elf_machine_load_address (void)
   return dynamic - elf_machine_dynamic ();
 }
 
-/* Fixup a PLT entry to bounce directly to the function at VALUE. */ 
-static inline struct fdesc __attribute__ ((always_inline)) 
+/* Fixup a PLT entry to bounce directly to the function at VALUE. */
+static inline struct fdesc __attribute__ ((always_inline))
 elf_machine_fixup_plt (struct link_map *map, lookup_t t,
 		       const Elf32_Rela *reloc,
 		       Elf32_Addr *reloc_addr, struct fdesc value)
@@ -127,7 +127,7 @@ elf_machine_fixup_plt (struct link_map *map, lookup_t t,
 }
 
 /* Return the final value of a plt relocation.  */
-static inline struct fdesc 
+static inline struct fdesc
 elf_machine_plt_value (struct link_map *map, const Elf32_Rela *reloc,
 		       struct fdesc value)
 {
@@ -149,106 +149,106 @@ elf_machine_runtime_setup (struct link_map *l, int lazy, int profile)
     unsigned char c[8];
     Elf32_Addr i[2];
   } sig = {{0x00,0xc0,0xff,0xee, 0xde,0xad,0xbe,0xef}};
-		
+
   /* If we don't have a PLT we can just skip all this... */
   if (__builtin_expect (l->l_info[DT_JMPREL] == NULL,0))
     return lazy;
-  
-  /* All paths use these values */ 
+
+  /* All paths use these values */
   l_addr = l->l_addr;
   jmprel = D_PTR(l, l_info[DT_JMPREL]);
   end_jmprel = jmprel + l->l_info[DT_PLTRELSZ]->d_un.d_val;
-  
+
   extern void _dl_runtime_resolve (void);
   extern void _dl_runtime_profile (void);
- 
+
   /* Linking lazily */
   if (lazy)
     {
       /* FIXME: Search for the got, but backwards through the relocs, technically we should
-         find it on the first try. However, assuming the relocs got out of order the 
-         routine is made a bit more robust by searching them all in case of failure. */
+	 find it on the first try. However, assuming the relocs got out of order the
+	 routine is made a bit more robust by searching them all in case of failure. */
       for (iplt = (end_jmprel - sizeof(Elf32_Rela)); iplt >= jmprel; iplt -= sizeof (Elf32_Rela))
-        {
-	      
+	{
+
 	  reloc = (const Elf32_Rela *) iplt;
-          r_type = ELF32_R_TYPE (reloc->r_info);
-          r_sym = ELF32_R_SYM (reloc->r_info);
+	  r_type = ELF32_R_TYPE (reloc->r_info);
+	  r_sym = ELF32_R_SYM (reloc->r_info);
 
-          got = (Elf32_Addr *) (reloc->r_offset + l_addr + PLT_ENTRY_SIZE + SIZEOF_PLT_STUB);
+	  got = (Elf32_Addr *) (reloc->r_offset + l_addr + PLT_ENTRY_SIZE + SIZEOF_PLT_STUB);
 
-          /* If we aren't an IPLT, and we aren't NONE then it's a bad reloc */
-          if (__builtin_expect (r_type != R_PARISC_IPLT, 0))
+	  /* If we aren't an IPLT, and we aren't NONE then it's a bad reloc */
+	  if (__builtin_expect (r_type != R_PARISC_IPLT, 0))
 	    {
 	      if (__builtin_expect (r_type != R_PARISC_NONE, 0))
-	        _dl_reloc_bad_type (l, r_type, 1);
+		_dl_reloc_bad_type (l, r_type, 1);
 	      continue;
 	    }
-	
-          /* Check for the plt_stub that binutils placed here for us 
-             to use with _dl_runtime_resolve  */
-          if (got[-2] != sig.i[0] || got[-1] != sig.i[1])
-            {
-              got = NULL; /* Not the stub... keep looking */
-            } 
-          else 
+
+	  /* Check for the plt_stub that binutils placed here for us
+	     to use with _dl_runtime_resolve  */
+	  if (got[-2] != sig.i[0] || got[-1] != sig.i[1])
+	    {
+	      got = NULL; /* Not the stub... keep looking */
+	    }
+	  else
 	    {
-              /* Found the GOT! */       	
-              register Elf32_Addr ltp __asm__ ("%r19");
-              
-              /* Identify this shared object. Second entry in the got. */
-              got[1] = (Elf32_Addr) l;
-              
-              /* This function will be called to perform the relocation. */
-              if (__builtin_expect (!profile, 1))
-                {
-                  /* If a static application called us, then _dl_runtime_resolve is not
+	      /* Found the GOT! */
+	      register Elf32_Addr ltp __asm__ ("%r19");
+
+	      /* Identify this shared object. Second entry in the got. */
+	      got[1] = (Elf32_Addr) l;
+
+	      /* This function will be called to perform the relocation. */
+	      if (__builtin_expect (!profile, 1))
+		{
+		  /* If a static application called us, then _dl_runtime_resolve is not
 		     a function descriptor, but the *real* address of the function... */
 		  if((unsigned long) &_dl_runtime_resolve & 3)
 		    {
-                      got[-2] = (Elf32_Addr) ((struct fdesc *) 
-                                  ((unsigned long) &_dl_runtime_resolve & ~3))->ip;
+		      got[-2] = (Elf32_Addr) ((struct fdesc *)
+				  ((unsigned long) &_dl_runtime_resolve & ~3))->ip;
 		    }
 		  else
 		    {
 		      /* Static executable! */
-                      got[-2] = (Elf32_Addr) &_dl_runtime_resolve;
+		      got[-2] = (Elf32_Addr) &_dl_runtime_resolve;
 		    }
-                }
-              else
-	        {
-	          if (GLRO(dl_profile) != NULL
+		}
+	      else
+		{
+		  if (GLRO(dl_profile) != NULL
 		      && _dl_name_match_p (GLRO(dl_profile), l))
-	            {
+		    {
 		      /* This is the object we are looking for.  Say that
-		         we really want profiling and the timers are
-		         started.  */
-                      GL(dl_profile_map) = l;
-                    }
+			 we really want profiling and the timers are
+			 started.  */
+		      GL(dl_profile_map) = l;
+		    }
 
 		  if((unsigned long) &_dl_runtime_profile & 3)
 		    {
-                      got[-2] = (Elf32_Addr) ((struct fdesc *)
-                                  ((unsigned long) &_dl_runtime_profile & ~3))->ip;
+		      got[-2] = (Elf32_Addr) ((struct fdesc *)
+				  ((unsigned long) &_dl_runtime_profile & ~3))->ip;
 		    }
 		  else
 		    {
 		      /* Static executable */
-                      got[-2] = (Elf32_Addr) &_dl_runtime_profile;
+		      got[-2] = (Elf32_Addr) &_dl_runtime_profile;
 		    }
-                }
-              /* Plunk in the gp of this function descriptor so we 
-	         can make the call to _dl_runtime_xxxxxx */
-              got[-1] = ltp;
-              break;
-              /* Done looking for the GOT, and stub is setup */
-            } /* else we found the GOT */
-        } /* for, walk the relocs backwards */
-
-      if(!got) 
-        return 0; /* No lazy linking for you! */
-  
-      /* Process all the relocs, now that we know the GOT... */    
+		}
+	      /* Plunk in the gp of this function descriptor so we
+		 can make the call to _dl_runtime_xxxxxx */
+	      got[-1] = ltp;
+	      break;
+	      /* Done looking for the GOT, and stub is setup */
+	    } /* else we found the GOT */
+	} /* for, walk the relocs backwards */
+
+      if(!got)
+	return 0; /* No lazy linking for you! */
+
+      /* Process all the relocs, now that we know the GOT... */
       for (iplt = jmprel; iplt < end_jmprel; iplt += sizeof (Elf32_Rela))
 	{
 	  reloc = (const Elf32_Rela *) iplt;
@@ -276,25 +276,25 @@ elf_machine_runtime_setup (struct link_map *l, int lazy, int profile)
 		  fptr->gp = D_PTR (l, l_info[DT_PLTGOT]);
 		}
 	    } /* r_type == R_PARISC_IPLT */
-	} /* for all the relocations */ 
+	} /* for all the relocations */
     } /* if lazy */
   else
     {
       for (iplt = jmprel; iplt < end_jmprel; iplt += sizeof (Elf32_Rela))
-        {
-          reloc = (const Elf32_Rela *) iplt;
-          r_type = ELF32_R_TYPE (reloc->r_info);
-          r_sym = ELF32_R_SYM (reloc->r_info);
-
-          if (__builtin_expect ((r_type == R_PARISC_IPLT) && (r_sym == 0), 1))
-            {
-              fptr = (struct fdesc *) (reloc->r_offset + l_addr);
-              /* Relocate this *ABS* entry, set only the gp, the rest is set later
-                 when elf_machine_rela_relative is called (WITHOUT the linkmap)  */
-              fptr->gp = D_PTR (l, l_info[DT_PLTGOT]);
-            } /* r_type == R_PARISC_IPLT */
-        } /* for all the relocations */ 
-    }	  
+	{
+	  reloc = (const Elf32_Rela *) iplt;
+	  r_type = ELF32_R_TYPE (reloc->r_info);
+	  r_sym = ELF32_R_SYM (reloc->r_info);
+
+	  if (__builtin_expect ((r_type == R_PARISC_IPLT) && (r_sym == 0), 1))
+	    {
+	      fptr = (struct fdesc *) (reloc->r_offset + l_addr);
+	      /* Relocate this *ABS* entry, set only the gp, the rest is set later
+		 when elf_machine_rela_relative is called (WITHOUT the linkmap)  */
+	      fptr->gp = D_PTR (l, l_info[DT_PLTGOT]);
+	    } /* r_type == R_PARISC_IPLT */
+	} /* for all the relocations */
+    }
   return lazy;
 }
 
@@ -441,7 +441,7 @@ asm (									\
 "	ldw	-44(%sp),%r24\n"					\
 									\
 	/* _dl_fini is a local function in the loader, so we construct	\
-           a false OPD here and pass this to the application.  */	\
+	   a false OPD here and pass this to the application.  */	\
 	/* FIXME: Should be able to use P%, and LR RR to have the	\
 	   the linker construct a proper OPD.  */			\
 "	.section .data\n"						\
@@ -462,7 +462,7 @@ asm (									\
 "	depi	2,31,2,%r23\n"	/* delay slot */			\
 );
 
-/* ELF_RTYPE_CLASS_PLT iff TYPE describes relocation of a PLT entry or 
+/* ELF_RTYPE_CLASS_PLT iff TYPE describes relocation of a PLT entry or
    a TLS variable, so references should not be allowed to define the value.
    ELF_RTYPE_CLASS_NOCOPY iff TYPE should not be allowed to resolve to one
    of the main executable's symbols, as for a COPY reloc.  */
@@ -505,7 +505,7 @@ dl_platform_init (void)
 	/* Avoid an empty string which would disturb us.  */
 		GLRO(dl_platform) = NULL;
 }
-	
+
 #endif /* !dl_machine_h */
 
 /* These are only actually used where RESOLVE_MAP is defined, anyway. */
@@ -523,11 +523,12 @@ dl_platform_init (void)
    | (((as14) & 0x2000) >> 13))
 
 auto void __attribute__((always_inline))
-elf_machine_rela (struct link_map *map, 
+elf_machine_rela (struct link_map *map,
     		  const Elf32_Rela *reloc,
-		  const Elf32_Sym *sym, 
+		  const Elf32_Sym *sym,
 		  const struct r_found_version *version,
-		  void *const reloc_addr_arg)
+		  void *const reloc_addr_arg,
+		  int skip_ifunc)
 {
   Elf32_Addr *const reloc_addr = reloc_addr_arg;
   const Elf32_Sym *const refsym = sym;
@@ -557,7 +558,7 @@ elf_machine_rela (struct link_map *map,
 # else
   sym_map = RESOLVE_MAP (&sym, version, r_type);
 # endif
-  
+
   if (sym_map)
     {
       value = sym ? sym_map->l_addr + sym->st_value : 0;
@@ -584,7 +585,7 @@ elf_machine_rela (struct link_map *map,
     case R_PARISC_DIR21L:
       {
 	unsigned int insn = *(unsigned int *)reloc_addr;
-        value = sym_map->l_addr + sym->st_value 
+	value = sym_map->l_addr + sym->st_value
 		+ ((reloc->r_addend + 0x1000) & -0x2000);
 	value = value >> 11;
 	insn = (insn &~ 0x1fffff) | reassemble_21 (value);
@@ -595,7 +596,7 @@ elf_machine_rela (struct link_map *map,
     case R_PARISC_DIR14R:
       {
 	unsigned int insn = *(unsigned int *)reloc_addr;
-	value = ((sym_map->l_addr + sym->st_value) & 0x7ff) 
+	value = ((sym_map->l_addr + sym->st_value) & 0x7ff)
 		+ (((reloc->r_addend & 0x1fff) ^ 0x1000) - 0x1000);
 	insn = (insn &~ 0x3fff) | reassemble_14 (value);
 	*(unsigned int *)reloc_addr = insn;
@@ -604,17 +605,17 @@ elf_machine_rela (struct link_map *map,
 
     case R_PARISC_PLABEL32:
       /* Easy rule: If there is a symbol and it is global, then we
-         need to make a dynamic function descriptor.  Otherwise we
-         have the address of a PLT slot for a local symbol which we
-         know to be unique. */
+	 need to make a dynamic function descriptor.  Otherwise we
+	 have the address of a PLT slot for a local symbol which we
+	 know to be unique. */
       if (sym == NULL
 	  || sym_map == NULL
 	  || ELF32_ST_BIND (sym->st_info) == STB_LOCAL)
-        {
+	{
 	  break;
-        }
+	}
       /* Set bit 30 to indicate to $$dyncall that this is a PLABEL.
-         We have to do this outside of the generic function descriptor
+	 We have to do this outside of the generic function descriptor
 	 code, since it doesn't know about our requirement for setting
 	 protection bits */
       value = (Elf32_Addr)((unsigned int)_dl_make_fptr (sym_map, sym, value) | 2);
@@ -625,17 +626,17 @@ elf_machine_rela (struct link_map *map,
       {
 	unsigned int insn = *(unsigned int *)reloc_addr;
 
-        if (__builtin_expect (sym == NULL, 0))
-          break;
+	if (__builtin_expect (sym == NULL, 0))
+	  break;
 
-        value = (Elf32_Addr)((unsigned int)_dl_make_fptr (sym_map, sym, value) | 2);
+	value = (Elf32_Addr)((unsigned int)_dl_make_fptr (sym_map, sym, value) | 2);
 
-        if (r_type == R_PARISC_PLABEL21L)
+	if (r_type == R_PARISC_PLABEL21L)
 	  {
 	    value >>= 11;
 	    insn = (insn &~ 0x1fffff) | reassemble_21 (value);
 	  }
-        else
+	else
 	  {
 	    value &= 0x7ff;
 	    insn = (insn &~ 0x3fff) | reassemble_14 (value);
@@ -647,16 +648,16 @@ elf_machine_rela (struct link_map *map,
 
     case R_PARISC_IPLT:
       if (__builtin_expect (sym_map != NULL, 1))
-        {
-	  elf_machine_fixup_plt (NULL, sym_map, reloc, reloc_addr, 
+	{
+	  elf_machine_fixup_plt (NULL, sym_map, reloc, reloc_addr,
 	      			 DL_FIXUP_MAKE_VALUE(sym_map, value));
-        } 
-      else 
-        {
+	}
+      else
+	{
 	  /* If we get here, it's a (weak) undefined sym.  */
-	  elf_machine_fixup_plt (NULL, map, reloc, reloc_addr, 
+	  elf_machine_fixup_plt (NULL, map, reloc, reloc_addr,
 	      			 DL_FIXUP_MAKE_VALUE(map, value));
-        }
+	}
       return;
 
     case R_PARISC_COPY:
@@ -687,21 +688,21 @@ elf_machine_rela (struct link_map *map,
 
     case R_PARISC_TLS_DTPOFF32:
       /* During relocation all TLS symbols are defined and used.
-         Therefore the offset is already correct.  */
+	 Therefore the offset is already correct.  */
       if (sym != NULL)
-        *reloc_addr = sym->st_value;
+	*reloc_addr = sym->st_value;
       return;
 
     case R_PARISC_TLS_TPREL32:
       /* The offset is negative, forward from the thread pointer */
       if (sym != NULL)
-        {
-          CHECK_STATIC_TLS (map, sym_map);
+	{
+	  CHECK_STATIC_TLS (map, sym_map);
 	  value = sym_map->l_tls_offset + sym->st_value + reloc->r_addend;
 	}
       break;
 #endif	/* use TLS */
-      
+
     case R_PARISC_NONE:	/* Alright, Wilbur. */
       return;
 
@@ -721,13 +722,13 @@ elf_machine_rela_relative (Elf32_Addr l_addr,
 {
   unsigned long const r_type = ELF32_R_TYPE (reloc->r_info);
   Elf32_Addr *const reloc_addr = reloc_addr_arg;
-  static char msgbuf[] = { "Unknown" }; 
+  static char msgbuf[] = { "Unknown" };
   struct link_map map;
   Elf32_Addr value;
 
   value = l_addr + reloc->r_addend;
 
-  if (ELF32_R_SYM (reloc->r_info) != 0){ 
+  if (ELF32_R_SYM (reloc->r_info) != 0){
     _dl_error_printf ("%s: In elf_machine_rela_relative "
 		      "ELF32_R_SYM (reloc->r_info) != 0. Aborting.",
 		      rtld_progname ?: "<program name unknown>");
@@ -769,7 +770,8 @@ elf_machine_rela_relative (Elf32_Addr l_addr,
 
 auto void __attribute__((always_inline))
 elf_machine_lazy_rel (struct link_map *map,
-		      Elf32_Addr l_addr, const Elf32_Rela *reloc)
+		      Elf32_Addr l_addr, const Elf32_Rela *reloc,
+		      int skip_ifunc)
 {
   /* We don't have anything to do here.  elf_machine_runtime_setup has
      done all the relocs already.  */

http://sources.redhat.com/git/gitweb.cgi?p=glibc-ports.git;a=commitdiff;h=86a90a837cde86d73d23216ea22cb153cddf4959

commit 86a90a837cde86d73d23216ea22cb153cddf4959
Author: Andreas Schwab <schwab@redhat.com>
Date:   Wed Oct 5 11:52:26 2011 +0200

    cris: don't call ifunc functions in trace mode

diff --git a/ChangeLog.cris b/ChangeLog.cris
index 810b53b..da1ad97 100644
--- a/ChangeLog.cris
+++ b/ChangeLog.cris
@@ -1,3 +1,8 @@
+2011-10-05  Andreas Schwab  <schwab@redhat.com>
+
+	* sysdeps/cris/dl-machine.h (elf_machine_rela)
+	(elf_machine_lazy_rel): Add parameter skip_ifunc.
+
 2007-10-22  Daniel Jacobowitz  <dan@codesourcery.com>
 
 	* sysdeps/unix/sysv/linux/cris/bits/fcntl.h (F_DUPFD_CLOEXEC): Define.
diff --git a/sysdeps/cris/dl-machine.h b/sysdeps/cris/dl-machine.h
index 368733e..cc3701e 100644
--- a/sysdeps/cris/dl-machine.h
+++ b/sysdeps/cris/dl-machine.h
@@ -1,5 +1,5 @@
 /* Machine-dependent ELF dynamic relocation inline functions.  CRIS version.
-   Copyright (C) 1996-2001, 2002, 2003 Free Software Foundation, Inc.
+   Copyright (C) 1996-2001, 2002, 2003, 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
@@ -285,7 +285,7 @@ elf_machine_plt_value (struct link_map *map, const Elf32_Rela *reloc,
 static inline void
 elf_machine_rela (struct link_map *map, const Elf32_Rela *reloc,
 		  const Elf32_Sym *sym, const struct r_found_version *version,
-		  void *const reloc_addr_arg)
+		  void *const reloc_addr_arg, int skip_ifunc)
 {
   Elf32_Addr *const reloc_addr = reloc_addr_arg;
   const unsigned int r_type = ELF32_R_TYPE (reloc->r_info);
@@ -378,7 +378,8 @@ elf_machine_rela_relative (Elf32_Addr l_addr, const Elf32_Rela *reloc,
 
 static inline void
 elf_machine_lazy_rel (struct link_map *map,
-		      Elf32_Addr l_addr, const Elf32_Rela *reloc)
+		      Elf32_Addr l_addr, const Elf32_Rela *reloc,
+		      int skip_ifunc)
 {
   Elf32_Addr *const reloc_addr = (void *) (l_addr + reloc->r_offset);
   const unsigned int r_type = ELF32_R_TYPE (reloc->r_info);

http://sources.redhat.com/git/gitweb.cgi?p=glibc-ports.git;a=commitdiff;h=0507f293c9b67d8eec92e8178308d72f1ed88449

commit 0507f293c9b67d8eec92e8178308d72f1ed88449
Author: Andreas Schwab <schwab@redhat.com>
Date:   Wed Oct 5 11:51:41 2011 +0200

    arm: don't call ifunc functions in trace mode

diff --git a/ChangeLog.arm b/ChangeLog.arm
index 51e477c..ba319b8 100644
--- a/ChangeLog.arm
+++ b/ChangeLog.arm
@@ -1,3 +1,9 @@
+2011-10-05  Andreas Schwab  <schwab@redhat.com>
+
+	* sysdeps/arm/dl-machine.h (elf_machine_rel, elf_machine_rela)
+	(elf_machine_lazy_rel): Add parameter skip_ifunc, don't call ifunc
+	function if non-zero.
+
 2011-09-13  Joseph Myers  <joseph@codesourcery.com>
 
 	* sysdeps/arm/elf/configure.in: Always test for TLS support and
@@ -370,7 +376,7 @@
 	file.
 
 2009-10-22  Andrew Stubbs  <ams@codesourcery.com>
-            Julian Brown  <julian@codesourcery.com>
+	    Julian Brown  <julian@codesourcery.com>
 
 	* sysdeps/arm/eabi/setjmp.S (__sigsetjmp): Replace deprecated
 	instruction fstmiax with vstmia.
@@ -415,9 +421,9 @@
 	(setup_aeabi_stdio): New function.  Add it to .preinit_array.
 
 2009-06-24  Maxim Kuvyrkov  <maxim@codesourcery.com>
-            Mark Mitchell  <mark@codesourcery.com>
-            Joseph Myers  <joseph@codesourcery.com>
-            Kazu Hirata  <kazu@codesourcery.com>
+	    Mark Mitchell  <mark@codesourcery.com>
+	    Joseph Myers  <joseph@codesourcery.com>
+	    Kazu Hirata  <kazu@codesourcery.com>
 
 	* sysdeps/arm/eabi/backtrace.c: New.
 	* sysdeps/arm/eabi/Makefile (CFLAGS-backtrace.c): Add
@@ -478,17 +484,17 @@
 
 2009-02-13  Khem Raj  <raj.khem@gmail.com>
 
-	* sysdeps/unix/sysv/linux/arm/nptl/unwind-forcedunwind.c 
+	* sysdeps/unix/sysv/linux/arm/nptl/unwind-forcedunwind.c
 	(libgcc_s_handle): New variable.
 	(pthread_cancel_init): Depend in libgcc_s_handle for decision to
 	load DSO.  Assign last.
 	(__unwind_freeres): New function.
 
-	* sysdeps/unix/sysv/linux/arm/eabi/nptl/unwind-forcedunwind.c: 
+	* sysdeps/unix/sysv/linux/arm/eabi/nptl/unwind-forcedunwind.c:
 	Likewise.
 
 2009-02-05  Paul Brook  <paul@codesourcery.com>
-            Joseph Myers  <joseph@codesourcery.com>
+	    Joseph Myers  <joseph@codesourcery.com>
 
 	* sysdeps/arm/dl-machine.h (elf_machine_dynamic): Ditto.
 	(elf_machine_load_address): Clear T bit of PLT entry contents.
@@ -894,7 +900,7 @@
 
 2006-06-08  Mark Shinwell  <shinwell@codesourcery.com>
 
-        * sysdeps/arm/nptl/pthreaddef.h (CURRENT_STACK_FRAME): Add -12.
+	* sysdeps/arm/nptl/pthreaddef.h (CURRENT_STACK_FRAME): Add -12.
 
 2006-06-08  Daniel Jacobowitz  <dan@codesourcery.com>
 
diff --git a/sysdeps/arm/dl-machine.h b/sysdeps/arm/dl-machine.h
index 1ba7700..5a58965 100644
--- a/sysdeps/arm/dl-machine.h
+++ b/sysdeps/arm/dl-machine.h
@@ -335,7 +335,7 @@ auto inline void
 __attribute__ ((always_inline))
 elf_machine_rel (struct link_map *map, const Elf32_Rel *reloc,
 		 const Elf32_Sym *sym, const struct r_found_version *version,
-		 void *const reloc_addr_arg)
+		 void *const reloc_addr_arg, int skip_ifunc)
 {
   Elf32_Addr *const reloc_addr = reloc_addr_arg;
   const unsigned int r_type = ELF32_R_TYPE (reloc->r_info);
@@ -369,9 +369,9 @@ elf_machine_rel (struct link_map *map, const Elf32_Rel *reloc,
       Elf32_Addr value = sym_map == NULL ? 0 : sym_map->l_addr + sym->st_value;
 
       if (sym != NULL
-	  && __builtin_expect (ELFW(ST_TYPE) (sym->st_info) == STT_GNU_IFUNC,
-			       0)
-	  && __builtin_expect (sym->st_shndx != SHN_UNDEF, 1))
+	  && __builtin_expect (ELFW(ST_TYPE) (sym->st_info) == STT_GNU_IFUNC, 0)
+	  && __builtin_expect (sym->st_shndx != SHN_UNDEF, 1)
+	  && __builtin_expect (!skip_ifunc, 1))
 	value = ((Elf32_Addr (*) (void)) value) ();
 
       switch (r_type)
@@ -430,7 +430,7 @@ elf_machine_rel (struct link_map *map, const Elf32_Rel *reloc,
 	  }
 	case R_ARM_TLS_DESC:
 	  {
-            struct tlsdesc volatile *td =
+	    struct tlsdesc volatile *td =
 	      (struct tlsdesc volatile *)reloc_addr;
 
 # ifndef RTLD_BOOTSTRAP
@@ -454,10 +454,10 @@ elf_machine_rel (struct link_map *map, const Elf32_Rel *reloc,
 		else
 #  endif
 # endif
-	        {
+		{
 		  td->argument.value = value + sym_map->l_tls_offset;
 		  td->entry = _dl_tlsdesc_return;
-	        }
+		}
 	      }
 	    }
 	    break;
@@ -525,7 +525,7 @@ auto inline void
 __attribute__ ((always_inline))
 elf_machine_rela (struct link_map *map, const Elf32_Rela *reloc,
 		  const Elf32_Sym *sym, const struct r_found_version *version,
-		  void *const reloc_addr_arg)
+		  void *const reloc_addr_arg, int skip_ifunc)
 {
   Elf32_Addr *const reloc_addr = reloc_addr_arg;
   const unsigned int r_type = ELF32_R_TYPE (reloc->r_info);
@@ -543,9 +543,9 @@ elf_machine_rela (struct link_map *map, const Elf32_Rela *reloc,
       Elf32_Addr value = sym_map == NULL ? 0 : sym_map->l_addr + sym->st_value;
 
       if (sym != NULL
-	  && __builtin_expect (ELFW(ST_TYPE) (sym->st_info) == STT_GNU_IFUNC,
-			       0)
-	  && __builtin_expect (sym->st_shndx != SHN_UNDEF, 1))
+	  && __builtin_expect (ELFW(ST_TYPE) (sym->st_info) == STT_GNU_IFUNC, 0)
+	  && __builtin_expect (sym->st_shndx != SHN_UNDEF, 1)
+	  && __builtin_expect (!skip_ifunc, 1))
 	value = ((Elf32_Addr (*) (void)) value) ();
 
       switch (r_type)
@@ -656,7 +656,8 @@ elf_machine_rela_relative (Elf32_Addr l_addr, const Elf32_Rela *reloc,
 auto inline void
 __attribute__ ((always_inline))
 elf_machine_lazy_rel (struct link_map *map,
-		      Elf32_Addr l_addr, const Elf32_Rel *reloc)
+		      Elf32_Addr l_addr, const Elf32_Rel *reloc,
+		      int skip_ifunc)
 {
   Elf32_Addr *const reloc_addr = (void *) (l_addr + reloc->r_offset);
   const unsigned int r_type = ELF32_R_TYPE (reloc->r_info);
@@ -674,8 +675,8 @@ elf_machine_lazy_rel (struct link_map *map,
 	(struct tlsdesc volatile *)reloc_addr;
 
       /* The linker must have given us the parameter we need in the
-         first GOT entry, and left the second one empty. We fill the
-         last with the resolver address */
+	 first GOT entry, and left the second one empty. We fill the
+	 last with the resolver address */
       assert (td->entry == 0);
       td->entry = (void*)(D_PTR (map, l_info[ADDRIDX (DT_TLSDESC_PLT)])
 			  + map->l_addr);

http://sources.redhat.com/git/gitweb.cgi?p=glibc-ports.git;a=commitdiff;h=bf5316f3a608b608da66b4d6e9b61a4da035fb35

commit bf5316f3a608b608da66b4d6e9b61a4da035fb35
Author: Andreas Schwab <schwab@redhat.com>
Date:   Wed Oct 5 11:51:18 2011 +0200

    am33: don't call ifunc functions in trace mode

diff --git a/ChangeLog.am33 b/ChangeLog.am33
index e9b19bd..ccffef3 100644
--- a/ChangeLog.am33
+++ b/ChangeLog.am33
@@ -1,3 +1,8 @@
+2011-10-05  Andreas Schwab  <schwab@redhat.com>
+
+	* sysdeps/am33/dl-machine.h (elf_machine_rela)
+	(elf_machine_lazy_rel): Add parameter skip_ifunc.
+
 2007-10-22  Daniel Jacobowitz  <dan@codesourcery.com>
 
 	* sysdeps/unix/sysv/linux/am33/bits/fcntl.h (F_DUPFD_CLOEXEC): Define.
diff --git a/sysdeps/am33/dl-machine.h b/sysdeps/am33/dl-machine.h
index 808fd9c..ffd866a 100644
--- a/sysdeps/am33/dl-machine.h
+++ b/sysdeps/am33/dl-machine.h
@@ -1,5 +1,5 @@
 /* Machine-dependent ELF dynamic relocation inline functions.  AM33 version.
-   Copyright (C) 1995,96,97,98,99,2000,2001, 2004
+   Copyright (C) 1995,96,97,98,99,2000,2001, 2004, 2011
    Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
@@ -296,7 +296,7 @@ elf_machine_plt_value (struct link_map *map, const Elf32_Rela *reloc,
 static inline void
 elf_machine_rela (struct link_map *map, const Elf32_Rela *reloc,
 		  const Elf32_Sym *sym, const struct r_found_version *version,
-		  void *const reloc_addr_arg)
+		  void *const reloc_addr_arg, int skip_ifunc)
 {
   const unsigned int r_type = ELF32_R_TYPE (reloc->r_info);
   Elf32_Addr value, *reloc_addr;
@@ -457,7 +457,8 @@ elf_machine_rela_relative (Elf32_Addr l_addr, const Elf32_Rela *reloc,
 
 static inline void
 elf_machine_lazy_rel (struct link_map *map,
-		      Elf32_Addr l_addr, const Elf32_Rela *reloc)
+		      Elf32_Addr l_addr, const Elf32_Rela *reloc,
+		      int skip_ifunc)
 {
   unsigned long int const r_type = ELF32_R_TYPE (reloc->r_info);
 

http://sources.redhat.com/git/gitweb.cgi?p=glibc-ports.git;a=commitdiff;h=989edf2cb0254faa4c7a2e46410bede16c2c0219

commit 989edf2cb0254faa4c7a2e46410bede16c2c0219
Author: Andreas Schwab <schwab@redhat.com>
Date:   Wed Oct 5 11:50:05 2011 +0200

    alpha: don't call ifunc functions in trace mode

diff --git a/ChangeLog.alpha b/ChangeLog.alpha
index 55f8768..b7d6bb1 100644
--- a/ChangeLog.alpha
+++ b/ChangeLog.alpha
@@ -1,3 +1,8 @@
+2011-10-05  Andreas Schwab  <schwab@redhat.com>
+
+	* sysdeps/alpha/dl-machine.h (elf_machine_rela)
+	(elf_machine_lazy_rel): Add parameter skip_ifunc.
+
 2011-03-28  Aurelien Jarno  <aurelien@aurel32.net>
 
 	* sysdeps/unix/sysv/linux/alpha/____longjmp_chk.S(____longjmp_chk):
@@ -48,7 +53,7 @@
 	Define without 64-bit aliases.
 
 2010-05-03  Aurelien Jarno  <aurelien@aurel32.net>
- 
+
 	* sysdeps/alpha/memchr.S: Use prefetch load.
 	* sysdeps/alpha/alphaev6/memchr.S: Likewise.
 
diff --git a/sysdeps/alpha/dl-machine.h b/sysdeps/alpha/dl-machine.h
index e4a5022..2790ae5 100644
--- a/sysdeps/alpha/dl-machine.h
+++ b/sysdeps/alpha/dl-machine.h
@@ -1,5 +1,5 @@
 /* Machine-dependent ELF dynamic relocation inline functions.  Alpha version.
-   Copyright (C) 1996-2005, 2006 Free Software Foundation, Inc.
+   Copyright (C) 1996-2005, 2006, 2011 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Richard Henderson <rth@tamu.edu>.
 
@@ -371,7 +371,8 @@ elf_machine_rela (struct link_map *map,
 		  const Elf64_Rela *reloc,
 		  const Elf64_Sym *sym,
 		  const struct r_found_version *version,
-		  void *const reloc_addr_arg)
+		  void *const reloc_addr_arg,
+		  int skip_ifunc)
 {
   Elf64_Addr *const reloc_addr = reloc_addr_arg;
   unsigned long int const r_type = ELF64_R_TYPE (reloc->r_info);
@@ -514,7 +515,8 @@ elf_machine_rela_relative (Elf64_Addr l_addr, const Elf64_Rela *reloc,
 auto inline void
 __attribute__ ((always_inline))
 elf_machine_lazy_rel (struct link_map *map,
-		      Elf64_Addr l_addr, const Elf64_Rela *reloc)
+		      Elf64_Addr l_addr, const Elf64_Rela *reloc,
+		      int skip_ifunc)
 {
   Elf64_Addr * const reloc_addr = (void *)(l_addr + reloc->r_offset);
   unsigned long int const r_type = ELF64_R_TYPE (reloc->r_info);

-----------------------------------------------------------------------

Summary of changes:
 ChangeLog.alpha            |    7 +-
 ChangeLog.am33             |    5 +
 ChangeLog.arm              |   22 +++--
 ChangeLog.cris             |    5 +
 ChangeLog.hppa             |   15 ++-
 ChangeLog.m68k             |    5 +
 ChangeLog.mips             |   11 ++-
 sysdeps/alpha/dl-machine.h |    8 +-
 sysdeps/am33/dl-machine.h  |    7 +-
 sysdeps/arm/dl-machine.h   |   29 +++---
 sysdeps/cris/dl-machine.h  |    7 +-
 sysdeps/hppa/dl-machine.h  |  244 ++++++++++++++++++++++----------------------
 sysdeps/m68k/dl-machine.h  |    5 +-
 sysdeps/mips/dl-machine.h  |   13 ++-
 14 files changed, 214 insertions(+), 169 deletions(-)


hooks/post-receive
-- 
Community source repository for glibc add-on ports


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]