http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53380
--- Comment #3 from msharov at users dot sourceforge.net 2012-05-22 11:21:41 UTC --- > Did -fno-asynchronous-unwind-tables do what you wanted it to do? In that > disable the unwinding tables when not using exceptions? No, it did not. For example: #include <stdio.h> int calculate (int x, int y) { return (x * y); } void print (void) { printf ("%d", calculate(1,2)); } int main (void) { print(); return (0); } g++ -Os -c -fno-asynchronous-unwind-tables -o tes.o tes.cc readelf --debug-dump=frames tes.o Contents of the .eh_frame section: 00000000 00000014 00000000 CIE Version: 1 Augmentation: "zR" Code alignment factor: 1 Data alignment factor: -8 Return address column: 16 Augmentation data: 1b DW_CFA_def_cfa: r7 (rsp) ofs 8 DW_CFA_offset: r16 (rip) at cfa-8 DW_CFA_nop DW_CFA_nop 00000018 00000010 0000001c FDE cie=00000000 pc=00000000..00000006 DW_CFA_nop DW_CFA_nop DW_CFA_nop 0000002c 00000010 00000030 FDE cie=00000000 pc=00000006..00000017 DW_CFA_nop DW_CFA_nop DW_CFA_nop 00000040 00000014 00000044 FDE cie=00000000 pc=00000000..0000000a DW_CFA_advance_loc: 1 to 00000001 DW_CFA_def_cfa_offset: 16 DW_CFA_advance_loc: 8 to 00000009 DW_CFA_def_cfa_offset: 8 DW_CFA_nop As you can see, all three functions still have unwind entries emitted. According to documentation I saw on the web, -fno-asynchronous-unwind-tables increases unwind information granularity to function-level, meaning that it supposedly avoids stepping cfa unless there is a function call there. While I don't regularly read the unwind tables, I was under impression that this was happening by default.