Need help for modifying the format of debug
stephen
chency666@gmail.com
Fri Mar 4 04:33:00 GMT 2011
Dear all,
I met one problem when I tried to modify the debug format from gcc.
Supposing there is a program :
1:void main()
2:{
3: int i=1;
4: if (i>1)
5: {
6: i=2;
7: if(i == 2)
8: {
9: i=i+1;
10: i=3;
11: }
12: i=i-1;
13: }
14: i=i+1;
15:}
Using gcc-avr, part of the assembler code (statement 6,7 and 9) will be:
.stabn 68,0,6,.LM3-.LFBB1 --
.LM3: |
MOV A,2 |
MOV Y+1,A |- for statement 6
MOV A,2 |
MOV Y+1,A --
.stabn 68,0,7,.LM4-.LFBB1 --
.LM4: |- for statement 7
.... --
.stabn 68,0,9,.LM5-.LFBB1 --
.LM5: |
INC Y+1 |- for statement 9
SZ [0AH].2 |
INC Y+1 --
we want to set a scope id for each statement, for example,
void main()
{
int i=1; -------------------> scope = 1;
if (i>1)
{
i=2; --------------------> scope =2; because it is inside a brace;
if(i == 2)
{
i=i+1; --------------------> scope =3; because it is inside two brace;
i=3; --------------------> scope =3; because it is inside two brace;
}
i=i-1; --------------------> scope =2; because it is inside a brace;
}
i=i+1; --------------------> scope =1;
}
And we want to add this scope information in the assembler code, like
this. (As soon as it reaches a "{", the scope will add "1" and the
scope will remove "1" when it reaches a "}" )
scope 2 ------------------------ we want to add this "scope" information
.stabn 68,0,6,.LM3-.LFBB1 --
.LM3: |
MOV A,2 |
MOV Y+1,A |- for statement 6
MOV A,2 |
MOV Y+1,A --
.stabn 68,0,7,.LM4-.LFBB1 --
.LM4: |- for statement 7
.... --
scope 3 ---------------------- we want to add this "scope"
information
.stabn 68,0,9,.LM5-.LFBB1 --
.LM5: |
INC Y+1 |- for statement 9
SZ [0AH].2 |
INC Y+1 --
Gcc generates the assembler code from the RTL tree. There is not any
information for "{" and "}" in the RTL.
But I also found basic block struct has a variable "loop_depth", can I use it?
What is the easiest way to implement this.
Thank you very much.
More information about the Gcc-help
mailing list