1
0
mirror of https://github.com/cc65/cc65.git synced 2024-06-28 03:29:39 +00:00

Handle scopes with a label correctly. Add the label to the debug info file.

git-svn-id: svn://svn.cc65.org/cc65/trunk@5133 b7a2c559-68d2-44c3-8de9-860c34a00d81
This commit is contained in:
uz 2011-08-07 18:48:08 +00:00
parent 8f969056e1
commit bf8f23d5f4
2 changed files with 12 additions and 3 deletions

View File

@ -61,6 +61,7 @@ static Scope* NewScope (ObjData* Obj, unsigned Id)
S->Id = Id;
S->Obj = Obj;
S->Size = 0;
S->LabelId = ~0U;
S->Spans = EmptyCollection;
/* Return the new entry */
@ -84,6 +85,9 @@ Scope* ReadScope (FILE* F, ObjData* Obj, unsigned Id)
if (SCOPE_HAS_SIZE (S->Flags)) {
S->Size = ReadVar (F);
}
if (SCOPE_HAS_LABEL (S->Flags)) {
S->LabelId = ReadVar (F);
}
/* Read the segment ranges for this scope */
ReadSpans (&S->Spans, F, Obj);
@ -124,7 +128,11 @@ void PrintDbgScopes (FILE* F)
if (S->Id != S->ParentId) {
fprintf (F, ",parent=%u", O->ScopeBaseId + S->ParentId);
}
/* Print the label id if the scope is labeled */
if (SCOPE_HAS_LABEL (S->Flags)) {
fprintf (F, ",sym=%u", O->SymBaseId + S->LabelId);
}
/* Terminate the output line */
fputc ('\n', F);
}

View File

@ -59,9 +59,10 @@
typedef struct Scope Scope;
struct Scope {
unsigned Id; /* Id of scope */
ObjData* Obj; /* Object file that exports the name */
ObjData* Obj; /* Object file that contains the scope */
unsigned ParentId; /* Id of parent scope */
unsigned LexicalLevel; /* Lexical level */
unsigned LabelId; /* Id of the scope label if any */
unsigned LexicalLevel; /* Lexical level */
unsigned Flags;
unsigned Type; /* Type of scope */
unsigned Name; /* Name of scope */