From f85fa27058eb7d4b56b8deaf885064cf8d730f68 Mon Sep 17 00:00:00 2001 From: "H.J. Lu" Date: Thu, 9 Aug 2012 16:04:37 -0700 Subject: Avoid DWARF definition DIE on ifunc symbols --- sysdeps/i386/i686/multiarch/strstr-c.c | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) (limited to 'sysdeps/i386') 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) -- cgit v1.1