$ cat strspn.c extern int printf (const char *, ...); extern int strspn (const char *, const char *); int main (void) { printf ("%d.\n", strspn ("1", "1")); } $ gcc -static strspn.c -fno-builtin-strspn $ gdb -ex "b strspn" -ex run ./a.out GNU gdb (GDB) Fedora (7.1-32.fc13) Copyright (C) 2010 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html> This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Type "show copying" and "show warranty" for details. This GDB was configured as "x86_64-redhat-linux-gnu". For bug reporting instructions, please see: <http://www.gnu.org/software/gdb/bugs/>... Reading symbols from /daten/src/test/a.out...(no debugging symbols found)...done. Breakpoint 1 at 0x408fc0 Starting program: /daten/src/test/a.out Breakpoint 1, 0x0000000000408fc0 in strspn () Error in re-setting breakpoint 1: The program being debugged stopped while in a function called from GDB. Evaluation of the expression containing the function (strspn) will be abandoned. When the function is done executing, GDB will silently stop. ../../gdb/infrun.c:5467: internal-error: normal_stop: Assertion `get_frame_type (frame) == DUMMY_FRAME' failed. A problem internal to GDB has been detected, further debugging may prove unreliable. Quit this debugging session? (y or n)
This is a problem due to: * static executable (where too many breakpoints are put at `_start'). * legacy gnu-ifunc patch still using extra inferior calls. The gnu-ifunc support in archer-jankratochvil-ifunc branch going upstream should not have this problem so I will fix when it goes upstream+Fedora.
archer-jankratochvil-ifunc new testcase: PASS: gdb.base/gnu-ifunc.exp: static gnu_ifunc F14 uses updated implementation without this problem. For F13 WONTFIX.