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]

GNU C Library master sources branch, master, updated. glibc-2.16-ports-merge-156-gf85fa27


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 "GNU C Library master sources".

The branch, master has been updated
       via  f85fa27058eb7d4b56b8deaf885064cf8d730f68 (commit)
      from  6dcf80c78273c5e0bdcacaf64a9b34fd930b405f (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.git;a=commitdiff;h=f85fa27058eb7d4b56b8deaf885064cf8d730f68

commit f85fa27058eb7d4b56b8deaf885064cf8d730f68
Author: H.J. Lu <hjl.tools@gmail.com>
Date:   Thu Aug 9 16:04:37 2012 -0700

    Avoid DWARF definition DIE on ifunc symbols

diff --git a/ChangeLog b/ChangeLog
index 0a5d89f..2fb941b4 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,33 @@
+2012-08-09  H.J. Lu  <hongjiu.lu@intel.com>
+
+	[BZ #14166]
+	* sysdeps/i386/i686/multiarch/strstr-c.c (strstr): Redefined
+	to __redirect_strstr.
+	(__strstr_sse42): Use typeof __redirect_strstr.
+	(__strstr_ia32): Likewise.
+	(__libc_strstr): New prototype.
+	(strstr): Renamed to ...
+	(__libc_strstr): This.
+	(strstr): New strong alias of __libc_strstr.
+	* sysdeps/x86_64/multiarch/strstr-c.c: Likewise.
+	* sysdeps/unix/sysv/linux/x86_64/time.c (time): Redefined to
+	__redirect_time.
+	Include <time.h>.
+	(__libc_time): New prototype.
+	(time_ifunc): Replace time with __libc_time.
+	(time): New strong alias and hidden definition of __libc_time.
+	(__GI_time): Remove strong alias.
+	* sysdeps/x86_64/multiarch/memmove.c: Don't include <string.h>.
+	Include <stddef.h>.
+	(memmove): Redefined to __redirect_memmove.
+	(__memmove_sse2): Use typeof __redirect_memmove.
+	(__memmove_ssse3): Likewise.
+	(__memmove_ssse3_back): Likewise.
+	(__libc_memmove): New prototype.
+	(memmove): Renamed to ...
+	(__libc_memmove): This.
+	(memmove): New strong alias of __libc_memmove.
+
 2012-08-08  Mark Salter  <msalter@redhat.com>
 
 	* elf/elf.h
diff --git a/NEWS b/NEWS
index 314f4d4..eae9834 100644
--- a/NEWS
+++ b/NEWS
@@ -9,8 +9,8 @@ Version 2.17
 
 * The following bugs are resolved with this release:
 
-  6778, 6808, 13717, 14042, 14150, 14151, 14154, 14157, 14173, 14283, 14298,
-  14307, 14328, 14331, 14336, 14337, 14347, 14349
+  6778, 6808, 13717, 14042, 14166, 14150, 14151, 14154, 14157, 14173, 14283,
+  14298, 14307, 14328, 14331, 14336, 14337, 14347, 14349
 
 * Support for STT_GNU_IFUNC symbols added for s390 and s390x.
   Optimized versions of memcpy, memset, and memcmp added for System z10 and
diff --git a/sysdeps/i386/i686/multiarch/strstr-c.c b/sysdeps/i386/i686/multiarch/strstr-c.c
index 1fcb00e..17c75c5 100644
--- a/sysdeps/i386/i686/multiarch/strstr-c.c
+++ b/sysdeps/i386/i686/multiarch/strstr-c.c
@@ -7,9 +7,20 @@
   __hidden_ver1 (__strstr_ia32, __GI_strstr, __strstr_ia32);
 #endif
 
+/* Redefine strstr so that the compiler won't complain about the type
+   mismatch with the IFUNC selector in strong_alias, below.  */
+#undef strstr
+#define strstr __redirect_strstr
+
 #include "string/strstr.c"
 
-extern char *__strstr_sse42 (const char *, const char *) attribute_hidden;
-extern __typeof (__strstr_ia32) __strstr_ia32 attribute_hidden;
+extern __typeof (__redirect_strstr) __strstr_sse42 attribute_hidden;
+extern __typeof (__redirect_strstr) __strstr_ia32 attribute_hidden;
+
+/* Avoid DWARF definition DIE on ifunc symbol so that GDB can handle
+   ifunc symbol properly.  */
+extern __typeof (__redirect_strstr) __libc_strstr;
+libc_ifunc (__libc_strstr, HAS_SSE4_2 ? __strstr_sse42 : __strstr_ia32)
 
-libc_ifunc (strstr, HAS_SSE4_2 ? __strstr_sse42 : __strstr_ia32);
+#undef strstr
+strong_alias (__libc_strstr, strstr)
diff --git a/sysdeps/unix/sysv/linux/x86_64/time.c b/sysdeps/unix/sysv/linux/x86_64/time.c
index 0e05ddd..65703ca 100644
--- a/sysdeps/unix/sysv/linux/x86_64/time.c
+++ b/sysdeps/unix/sysv/linux/x86_64/time.c
@@ -16,11 +16,20 @@
    <http://www.gnu.org/licenses/>.  */
 
 #ifdef SHARED
+/* Redefine time so that the compiler won't complain about the type
+   mismatch with the IFUNC selector in strong_alias, below.  */
+#undef time
+#define time __redirect_time
+#include <time.h>
+
 #include <dl-vdso.h>
 
 #define VSYSCALL_ADDR_vtime	0xffffffffff600400
 
-void *time_ifunc (void) __asm__ ("time");
+/* Avoid DWARF definition DIE on ifunc symbol so that GDB can handle
+   ifunc symbol properly.  */
+extern __typeof (__redirect_time) __libc_time;
+void *time_ifunc (void) __asm__ ("__libc_time");
 
 void *
 time_ifunc (void)
@@ -30,7 +39,11 @@ time_ifunc (void)
   /* If the vDSO is not available we fall back on the old vsyscall.  */
   return _dl_vdso_vsym ("__vdso_time", &linux26) ?: (void *) VSYSCALL_ADDR_vtime;
 }
-__asm (".type time, %gnu_indirect_function");
+__asm (".type __libc_time, %gnu_indirect_function");
+
+#undef time
+strong_alias (__libc_time, time)
+libc_hidden_ver (__libc_time, time)
 
 #else
 
@@ -45,5 +58,3 @@ time (time_t *t)
 }
 
 #endif
-
-strong_alias (time, __GI_time)
diff --git a/sysdeps/x86_64/multiarch/memmove.c b/sysdeps/x86_64/multiarch/memmove.c
index ca16263..6e91025 100644
--- a/sysdeps/x86_64/multiarch/memmove.c
+++ b/sysdeps/x86_64/multiarch/memmove.c
@@ -17,7 +17,7 @@
    License along with the GNU C Library; if not, see
    <http://www.gnu.org/licenses/>.  */
 
-#include <string.h>
+#include <stddef.h>
 
 #ifndef NOT_IN_libc
 #include <shlib-compat.h>
@@ -29,20 +29,31 @@
 # define libc_hidden_builtin_def(name) \
   __hidden_ver1 (__memmove_sse2, __GI_memmove, __memmove_sse2);
 #endif
-#endif
 
-extern __typeof (memmove) __memmove_sse2 attribute_hidden;
-extern __typeof (memmove) __memmove_ssse3 attribute_hidden;
-extern __typeof (memmove) __memmove_ssse3_back attribute_hidden;
+/* Redefine memmove so that the compiler won't complain about the type
+   mismatch with the IFUNC selector in strong_alias, below.  */
+#undef memmove
+#define memmove __redirect_memmove
+#endif
 
 #include "string/memmove.c"
 
 #ifndef NOT_IN_libc
-libc_ifunc (memmove,
+extern __typeof (__redirect_memmove) __memmove_sse2 attribute_hidden;
+extern __typeof (__redirect_memmove) __memmove_ssse3 attribute_hidden;
+extern __typeof (__redirect_memmove) __memmove_ssse3_back attribute_hidden;
+
+/* Avoid DWARF definition DIE on ifunc symbol so that GDB can handle
+   ifunc symbol properly.  */
+extern __typeof (__redirect_memmove) __libc_memmove;
+libc_ifunc (__libc_memmove,
 	    HAS_SSSE3
 	    ? (HAS_FAST_COPY_BACKWARD
 	       ? __memmove_ssse3_back : __memmove_ssse3)
-	    : __memmove_sse2);
+	    : __memmove_sse2)
+
+#undef memmove
+strong_alias (__libc_memmove, memmove)
 
 #if SHLIB_COMPAT (libc, GLIBC_2_2_5, GLIBC_2_14)
 compat_symbol (libc, memmove, memcpy, GLIBC_2_2_5);
diff --git a/sysdeps/x86_64/multiarch/strstr-c.c b/sysdeps/x86_64/multiarch/strstr-c.c
index b8ed316..795789e 100644
--- a/sysdeps/x86_64/multiarch/strstr-c.c
+++ b/sysdeps/x86_64/multiarch/strstr-c.c
@@ -7,9 +7,20 @@
   __hidden_ver1 (__strstr_sse2, __GI_strstr, __strstr_sse2);
 #endif
 
+/* Redefine strstr so that the compiler won't complain about the type
+   mismatch with the IFUNC selector in strong_alias, below.  */
+#undef strstr
+#define strstr __redirect_strstr
+
 #include "string/strstr.c"
 
-extern char *__strstr_sse42 (const char *, const char *) attribute_hidden;
-extern __typeof (__strstr_sse2) __strstr_sse2 attribute_hidden;
+extern __typeof (__redirect_strstr) __strstr_sse42 attribute_hidden;
+extern __typeof (__redirect_strstr) __strstr_sse2 attribute_hidden;
+
+/* Avoid DWARF definition DIE on ifunc symbol so that GDB can handle
+   ifunc symbol properly.  */
+extern __typeof (__redirect_strstr) __libc_strstr;
+libc_ifunc (__libc_strstr, HAS_SSE4_2 ? __strstr_sse42 : __strstr_sse2)
 
-libc_ifunc (strstr, HAS_SSE4_2 ? __strstr_sse42 : __strstr_sse2);
+#undef strstr
+strong_alias (__libc_strstr, strstr)

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

Summary of changes:
 ChangeLog                              |   30 ++++++++++++++++++++++++++++++
 NEWS                                   |    4 ++--
 sysdeps/i386/i686/multiarch/strstr-c.c |   17 ++++++++++++++---
 sysdeps/unix/sysv/linux/x86_64/time.c  |   19 +++++++++++++++----
 sysdeps/x86_64/multiarch/memmove.c     |   25 ++++++++++++++++++-------
 sysdeps/x86_64/multiarch/strstr-c.c    |   17 ++++++++++++++---
 6 files changed, 93 insertions(+), 19 deletions(-)


hooks/post-receive
-- 
GNU C Library master sources


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