Hi all, I am working with GCC 4.1.1 for a private target. For the sample program given below, frame description entry generated is not proper.
######## PROGRAM ######### #include <stdio.h> void fun(); int main() { fun(); return 0; } void fun() { int a; int b, c; return; } ####### Read ELF output ############### 00000010 0000001c 00000000 FDE cie=00000000 pc=00000000..00000016 DW_CFA_advance_loc: 2 to 00000002 DW_CFA_def_cfa_offset: 4 DW_CFA_advance_loc: 4 to 00000006 DW_CFA_def_cfa_offset: 8 DW_CFA_offset: r24 at cfa-8 DW_CFA_offset: r14 at cfa-4 DW_CFA_advance_loc: 2 to 00000008 DW_CFA_def_cfa_reg: r14 DW_CFA_nop DW_CFA_nop DW_CFA_nop 00000030 00000014 00000000 FDE cie=00000000 pc=00000016..00000022 DW_CFA_advance_loc: 2 to 00000018 DW_CFA_def_cfa_offset: 4 DW_CFA_offset: r14 at cfa-4 DW_CFA_advance_loc: 2 to 0000001a DW_CFA_def_cfa_reg: r14 ####### objdump #################3 FP - Frame Pointer, SP - Stack Pointer, RP - Return Address Reg No. 00000000 <_main>: 0: 7e7b STR FP,-(SP) 2: 7af9 0000 STR RP,-(SP) 6: cef0 MOV SP,FP 8: 618c 0000 JMP _fun c: e002 MOV 0x0,D0 e: 7af8 0000 LOAD (SP)+,RP 12: 7e76 LOAD (SP)+,FP 14: 880b RET 00000016 <_fun>: 16: 7e7b STR FP,-(SP) 18: cef0 MOV SP,FP 1a: ef30 SUB 0x0c,SP 1c: cfe0 MOV FP,SP 1e: 7e76 LOAD (SP)+,FP 20: 880b RET ####### Dwarf Dump Output ############# fde: < 0><0:0x16><main><fde offset 0x10 length: 0x1c><eh offset none> 00000000: cfa=00(SP/t7) 00000002: cfa=04(SP/t7) 00000006: cfa=08(SP/t7) FP/t6=-4(cfa) RP/t8=-8(cfa) 00000008: cfa=08(FP/t6) FP/t6=-4(cfa) RP/t8=-8(cfa) < 0><0:0xc><main><fde offset 0x30 length: 0x14><eh offset none> 00000000: cfa=00(SP/t7) 00000002: cfa=04(SP/t7) FP/t6=-4(cfa) 00000004: cfa=04(FP/t6) FP/t6=-4(cfa) When looking at the dwarf dump, the starting frame address for function "fun" is given as < 0><0:0xc><main><fde offset 0x30 length: 0x14><eh offset none> ideally it should have been < 0><0x16:0x20><fun><fde offset 0x30 length: 0x14><eh offset none> Any suggestions where to look at for these kinds of behavior? Regards, Rohit