Hi, On Tue, 2009-10-27 at 21:20 +0000, Richard Sandiford wrote: [...] > OK with those changes, Just applied the above changes, and added one more for not getting the ra_fp_offset when -pg is not enabled: @@ -9619,6 +9622,9 @@ mips_for_each_saved_gpr_and_fpr (HOST_WIDE_INT sp_offset, for (regno = GP_REG_LAST; regno >= GP_REG_FIRST; regno--) if (BITSET_P (cfun->machine->frame.mask, regno - GP_REG_FIRST)) { + /* Record the ra offset for use by mips_function_profiler. */ + if (crtl->profile && regno == RETURN_ADDR_REGNUM) + cfun->machine->frame.ra_fp_offset = offset + sp_offset; mips_save_restore_reg (word_mode, regno, offset, fn); offset -= UNITS_PER_WORD; } "crtl->profile &&" was added. > thanks, if it passing testing, and if > Ralf is happy with the linux side. > Just appended that patch with the above changes to the latest gcc 4.5 in the git repository, and tested it, which works well. this is the result of a non-leaf function: ffffffff80243c08 <copy_process>: ffffffff80243c08: 67bdff40 daddiu sp,sp,-192 ffffffff80243c0c: ffbe00b0 sd s8,176(sp) ffffffff80243c10: 03a0f02d move s8,sp ffffffff80243c14: ffbf00b8 sd ra,184(sp) [...] ffffffff80243c38: 3c038021 lui v1,0x8021 ffffffff80243c3c: 64631530 daddiu v1,v1,5424 ffffffff80243c40: 03e0082d move at,ra ffffffff80243c44: 0060f809 jalr v1 ffffffff80243c48: 67ac00b8 daddiu t0,sp,184 --> Here it is and for a leaf function: ffffffff802054d0 <au1k_wait>: ffffffff802054d0: 67bdfff0 daddiu sp,sp,-16 ffffffff802054d4: ffbe0008 sd s8,8(sp) ffffffff802054d8: 03a0f02d move s8,sp ffffffff802054dc: 3c038021 lui v1,0x8021 ffffffff802054e0: 64631530 daddiu v1,v1,5424 ffffffff802054e4: 03e0082d move at,ra ffffffff802054e8: 0060f809 jalr v1 ffffffff802054ec: 0000602d move t0,zero --> Here it is and with this new feature, I can safely remove the old ftrace_get_parent_addr() and add several more instructions to make function graph tracer work. and also, 'Cause this feature used the t0($12) register, I must change the temp registers I have used in the patches of ftrace for MIPS(t0 --> t1, t1 --> t2, t2-> t3...). no more touch. The latest revision of this patch will be sent out in the next E-mail, and also, the -v8 revision of ftrace for MIPS will be sent out with this new feature of Gcc asap. Thanks & Regards, Wu Zhangjin