The GDB setting you need is set backtrace past-main on:
Backtraces will continue past the user entry point.
(gdb) set backtrace past-main on
(gdb) start
(gdb) bt
#0 main (argc=argc@entry=1, argv=argv@entry=0x7ffffffee1a8) at hoist.c:7
#1 0x00007fffff0802e1 in __libc_start_main (main=0x8000580 <main>, argc=1, argv=0x7ffffffee1a8, init=<optimized out>,
fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7ffffffee198) at ../csu/libc-start.c:291
#2 0x000000000800069a in _start ()
(gdb) fr 1
#1 0x00007fffff0802e1 in __libc_start_main (main=0x8000580 <main>, argc=1, argv=0x7ffffffee1a8, init=<optimized out>,
fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7ffffffee198) at ../csu/libc-start.c:291
291 ../csu/libc-start.c: No such file or directory.
After installing the glibc source as described in GDB complaining about missing raise.c
:
(gdb) fr 1
#1 0x00007fffff0802e1 in __libc_start_main (main=0x8000580 <main>, argc=1, argv=0x7ffffffee1a8, init=<optimized out>,
fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7ffffffee198) at ../csu/libc-start.c:291
291 result = main (argc, argv, __environ MAIN_AUXVEC_PARAM);