mirror of
https://github.com/cc65/cc65.git
synced 2025-01-13 09:31:53 +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:
parent
8f969056e1
commit
bf8f23d5f4
@ -61,6 +61,7 @@ static Scope* NewScope (ObjData* Obj, unsigned Id)
|
|||||||
S->Id = Id;
|
S->Id = Id;
|
||||||
S->Obj = Obj;
|
S->Obj = Obj;
|
||||||
S->Size = 0;
|
S->Size = 0;
|
||||||
|
S->LabelId = ~0U;
|
||||||
S->Spans = EmptyCollection;
|
S->Spans = EmptyCollection;
|
||||||
|
|
||||||
/* Return the new entry */
|
/* Return the new entry */
|
||||||
@ -84,6 +85,9 @@ Scope* ReadScope (FILE* F, ObjData* Obj, unsigned Id)
|
|||||||
if (SCOPE_HAS_SIZE (S->Flags)) {
|
if (SCOPE_HAS_SIZE (S->Flags)) {
|
||||||
S->Size = ReadVar (F);
|
S->Size = ReadVar (F);
|
||||||
}
|
}
|
||||||
|
if (SCOPE_HAS_LABEL (S->Flags)) {
|
||||||
|
S->LabelId = ReadVar (F);
|
||||||
|
}
|
||||||
|
|
||||||
/* Read the segment ranges for this scope */
|
/* Read the segment ranges for this scope */
|
||||||
ReadSpans (&S->Spans, F, Obj);
|
ReadSpans (&S->Spans, F, Obj);
|
||||||
@ -124,6 +128,10 @@ void PrintDbgScopes (FILE* F)
|
|||||||
if (S->Id != S->ParentId) {
|
if (S->Id != S->ParentId) {
|
||||||
fprintf (F, ",parent=%u", O->ScopeBaseId + 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 */
|
/* Terminate the output line */
|
||||||
fputc ('\n', F);
|
fputc ('\n', F);
|
||||||
|
@ -59,8 +59,9 @@
|
|||||||
typedef struct Scope Scope;
|
typedef struct Scope Scope;
|
||||||
struct Scope {
|
struct Scope {
|
||||||
unsigned Id; /* Id of 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 ParentId; /* Id of parent scope */
|
||||||
|
unsigned LabelId; /* Id of the scope label if any */
|
||||||
unsigned LexicalLevel; /* Lexical level */
|
unsigned LexicalLevel; /* Lexical level */
|
||||||
unsigned Flags;
|
unsigned Flags;
|
||||||
unsigned Type; /* Type of scope */
|
unsigned Type; /* Type of scope */
|
||||||
|
Loading…
x
Reference in New Issue
Block a user