Linux MIPS Architecture development
 help / color / mirror / Atom feed
* PATCH: missing call-graph data and profiling
@ 2001-08-13  3:55 Simon Gee
  2001-08-13  8:43 ` Andreas Jaeger
  0 siblings, 1 reply; 2+ messages in thread
From: Simon Gee @ 2001-08-13  3:55 UTC (permalink / raw)
  To: linux-mips

When attempting to use profiling under mips-linux the produced gmon.out
file was reported as "missing call -raph data". The problem lay in the
fact that the following from machine-gmon.h:

        "move $5,$31;" \
        "jal __mcount;" \
        "move $4,$1;" \

was assembled as:

0x432458 <_mcount+40>: move $a1,$ra
0x43245c <_mcount+44>: lw $t9,-32724($gp)
0x432460 <_mcount+48>: nop
0x432464 <_mcount+52>: addiu $t9,$t9,8816
0x432468 <_mcount+56>: jalr $t9
0x43246c <_mcount+60>: nop
0x432470 <_mcount+64>: lw $gp,0($s8)
0x432474 <_mcount+68>: move $a0,$at

by gas. Basically, the fact that "jal __mcount" was being expanded
forced "move $4,$1;" out of the delay slot which resulted in the first
argument to __mcount to be incorrect. The following patch against glibc
corrects this problem.

*** sysdeps/mips/machine-gmon.h.orig    Mon Aug 13 12:17:39 2001
--- sysdeps/mips/machine-gmon.h Mon Aug 13 12:18:00 2001
***************
*** 43,50 ****
          "sw $1,16($29);" \
          "sw $31,20($29);" \
          "move $5,$31;" \
-         "jal __mcount;" \
          "move $4,$1;" \
          "lw $4,24($29);" \
          "lw $5,28($29);" \
          "lw $6,32($29);" \
--- 43,51 ----
          "sw $1,16($29);" \
          "sw $31,20($29);" \
          "move $5,$31;" \
          "move $4,$1;" \
+         "jal __mcount;" \
+         "nop;" \
          "lw $4,24($29);" \
          "lw $5,28($29);" \
          "lw $6,32($29);" \

Simon

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2001-08-13  8:44 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2001-08-13  3:55 PATCH: missing call-graph data and profiling Simon Gee
2001-08-13  8:43 ` Andreas Jaeger

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox