Daniel, We generate following DWARF2 instructions for stack alignment prologue. Basically we use expression to calculate CFA. But it run into some segfault in libmudflap and libjava. Do you have any hints what's wrong?
DW_CFA_def_cfa: r4 (esp) ofs 4 DW_CFA_offset: r8 (eip) at cfa-4 DW_CFA_nop DW_CFA_nop 0000001c 0000002c 00000020 FDE cie=00000000 pc=00000000..00000083 DW_CFA_advance_loc: 1 to 00000001 DW_CFA_def_cfa_offset: 8 DW_CFA_offset: r7 (edi) at cfa-8 DW_CFA_advance_loc: 4 to 00000005 DW_CFA_def_cfa: r7 (edi) ofs 0 DW_CFA_advance_loc: 7 to 0000000c DW_CFA_expression: r5 (ebp) (DW_OP_breg5: 0) DW_CFA_advance_loc: 37 to 00000031 DW_CFA_def_cfa_expression (DW_OP_breg5: -4; DW_OP_deref) DW_CFA_expression: r6 (esi) (DW_OP_breg5: -8) DW_CFA_expression: r3 (ebx) (DW_OP_breg5: -12) 00000000 <_Z3bariii>: 0: 57 push %edi 1: 8d 7c 24 08 lea 0x8(%esp),%edi 5: 83 e4 e0 and $0xffffffe0,%esp 8: ff 77 fc pushl -0x4(%edi) b: 55 push %ebp c: 89 e5 mov %esp,%ebp e: 81 ec 88 00 00 00 sub $0x88,%esp 14: 89 45 c4 mov %eax,-0x3c(%ebp) 17: 89 c8 mov %ecx,%eax 19: 83 c0 1e add $0x1e,%eax 1c: 83 e0 f0 and $0xfffffff0,%eax 1f: 89 5c 24 7c mov %ebx,0x7c(%esp) 23: 89 b4 24 80 00 00 00 mov %esi,0x80(%esp) 2a: 89 bc 24 84 00 00 00 mov %edi,0x84(%esp) 31: 29 c4 sub %eax,%esp Thanks - Joey