This is the mail archive of the
glibc-bugs@sourceware.org
mailing list for the glibc project.
[Bug libc/14166] New: invalid IFUNC DW_AT_linkage_name: memmove strstr time
- From: "jan.kratochvil at redhat dot com" <sourceware-bugzilla at sourceware dot org>
- To: glibc-bugs at sources dot redhat dot com
- Date: Thu, 24 May 2012 19:56:27 +0000
- Subject: [Bug libc/14166] New: invalid IFUNC DW_AT_linkage_name: memmove strstr time
- Auto-submitted: auto-generated
http://sourceware.org/bugzilla/show_bug.cgi?id=14166
Bug #: 14166
Summary: invalid IFUNC DW_AT_linkage_name: memmove strstr time
Product: glibc
Version: 2.15
Status: NEW
Severity: normal
Priority: P2
Component: libc
AssignedTo: unassigned@sourceware.org
ReportedBy: jan.kratochvil@redhat.com
CC: drepper.fsp@gmail.com
Classification: Unclassified
Host: x86_64-unknown-linux-gnu
Created attachment 6422
--> http://sourceware.org/bugzilla/attachment.cgi?id=6422
Broken fix attempt.
$ ./gdb /lib64/libc.so.6
GNU gdb (GDB) 7.4.50.20120523-cvs
(gdb) p memmove
$1 = {<text gnu-indirect-function variable, no debug info>} 0x88a70 <memmove>
(gdb) p memmove
$2 = {void *(void)} 0x88a70 <memmove>
DWARF has no way how to mark a function as IFUNC. Only ELF has a way.
No DWARF DIE definition must use ELF IFUNC symbol names as GDB prefers DWARF
symbols more than ELF symbols.
These DWARF DW_AT_linkage_name symbols are marked in ELF as IFUNC:
__GI___strcasecmp __GI_time __gettimeofday __memmove_chk __sched_cpucount
__strcasestr memmove strstr time
Out of those only these are of concern to users:
memmove strstr time
<0><18c0c5>: Abbrev Number: 1 (DW_TAG_compile_unit)
<18c0cb> DW_AT_name : ../sysdeps/x86_64/multiarch/memmove.c
<1><18c3f8>: Abbrev Number: 27 (DW_TAG_subprogram)
<18c3f9> DW_AT_external : 1
<18c3f9> DW_AT_name : memmove_ifunc
<18c3fd> DW_AT_decl_file : 2
<18c3fe> DW_AT_decl_line : 46
<18c3ff> DW_AT_linkage_name: memmove
^^^^^^^^^^^^^^^^^^^^^^^^^^^
<18c403> DW_AT_prototyped : 1
<18c403> DW_AT_type : <0x18c126>
<18c407> DW_AT_low_pc : 0x88a70
<18c40f> DW_AT_high_pc : 0x88ab7
<18c417> DW_AT_frame_base : 1 byte block: 9c (DW_OP_call_frame_cfa)
<18c419> DW_AT_GNU_all_call_sites: 1
<18c419> DW_AT_sibling : <0x18c43a>
libc_ifunc (memmove,
^^^^^^^
Other uses of libc_ifunc are for example:
libc_ifunc (__strcasestr,
Attached broken fix attempt fails to build:
../sysdeps/x86_64/multiarch/memmove.c: In function '__memmove_ifunc':
../sysdeps/x86_64/multiarch/memmove.c:42:1: error: '__memmove' undeclared
(first use in this function)
--
Configure bugmail: http://sourceware.org/bugzilla/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.