* elfread.c (elf_symtab_read): Do not ignore .L symbols if they are
	BSF_SYNTHETIC.

gdb/testsuite/
	* gdb.base/callfuncs.c (Lcallfunc, callfunc): New functions.
	* gdb.base/callfuncs.exp (print callfunc (Lcallfunc, 5)): New test.
This commit is contained in:
Jan Kratochvil 2011-04-17 18:09:02 +00:00
parent 626e728214
commit 90359a1673
5 changed files with 32 additions and 1 deletions

View File

@ -1,3 +1,8 @@
2011-04-17 Jan Kratochvil <jan.kratochvil@redhat.com>
* elfread.c (elf_symtab_read): Do not ignore .L symbols if they are
BSF_SYNTHETIC.
2011-04-17 Jan Kratochvil <jan.kratochvil@redhat.com>
Fix Python access to inlined frames.

View File

@ -412,7 +412,11 @@ elf_symtab_read (struct objfile *objfile, int type,
else
ms_type = mst_text;
}
else if ((sym->name[0] == '.' && sym->name[1] == 'L')
/* The BSF_SYNTHETIC check is there to omit ppc64 function
descriptors mistaken for static functions starting with 'L'.
*/
else if ((sym->name[0] == '.' && sym->name[1] == 'L'
&& (sym->flags & BSF_SYNTHETIC) == 0)
|| ((sym->flags & BSF_LOCAL)
&& sym->name[0] == '$'
&& sym->name[1] == 'L'))

View File

@ -1,3 +1,8 @@
2011-04-17 Jan Kratochvil <jan.kratochvil@redhat.com>
* gdb.base/callfuncs.c (Lcallfunc, callfunc): New functions.
* gdb.base/callfuncs.exp (print callfunc (Lcallfunc, 5)): New test.
2011-04-17 Jan Kratochvil <jan.kratochvil@redhat.com>
Fix Python access to inlined frames.

View File

@ -510,3 +510,15 @@ int main ()
t_structs_c(struct_val1);
return 0 ;
}
static int
Lcallfunc (int arg)
{
return arg + 1;
}
int
callfunc (int (*func) (int value), int value)
{
return Lcallfunc (0) * 0 + func (value) * 2;
}

View File

@ -458,3 +458,8 @@ if {![target_info exists gdb,nosignals] && ![istarget "*-*-uclinux*"]} {
gdb_test {set $sp = $old_sp}
}
# Test function descriptor resolution - the separate debug info .opd section
# handling vs. local labels `.L'... as `Lcallfunc' starts with `L'.
gdb_test "print callfunc (Lcallfunc, 5)" " = 12"