http://gcc.gnu.org/bugzilla/show_bug.cgi?id=28854
--- Comment #5 from Uros Bizjak <ubizjak at gmail dot com> 2011-10-24 14:44:49 UTC --- Just FYI, this is due to the fact that _start from /usr/crt1.o has a FDE: $ objdump --dwarf /usr/lib/crt1.o /usr/lib/crt1.o: file format elf64-alpha Contents of the .eh_frame section: 00000000 00000010 00000000 CIE Version: 1 Augmentation: "zR" Code alignment factor: 4 Data alignment factor: -8 Return address column: 15 Augmentation data: 1b DW_CFA_def_cfa_register: r30 DW_CFA_nop 00000014 00000010 00000018 FDE cie=00000000 pc=00000000..0000003c DW_CFA_advance_loc: 20 to 00000014 DW_CFA_def_cfa_register: r15 This FDE of _start function is discovered by uw_frame_state_for, and only after this recursion if (context->ra == 0) return _URC_END_OF_STACK; is triggered. So if there is a bug at all, it is in glibc - perhaps_start should not set FDE.