1
0
mirror of https://github.com/cc65/cc65.git synced 2024-11-19 06:31:31 +00:00

Changed format of debug info file

git-svn-id: svn://svn.cc65.org/cc65/trunk@2748 b7a2c559-68d2-44c3-8de9-860c34a00d81
This commit is contained in:
cuz 2003-12-13 19:55:22 +00:00
parent 1b2c277f8b
commit 108134f43d
6 changed files with 29 additions and 21 deletions

View File

@ -7,7 +7,7 @@
/* */ /* */
/* */ /* */
/* (C) 2003 Ullrich von Bassewitz */ /* (C) 2003 Ullrich von Bassewitz */
/* Römerstrasse 52 */ /* Römerstraße 52 */
/* D-70794 Filderstadt */ /* D-70794 Filderstadt */
/* EMail: uz@cc65.org */ /* EMail: uz@cc65.org */
/* */ /* */
@ -64,6 +64,9 @@ void CreateDbgFile (void)
Error ("Cannot create debug file `%s': %s", DbgFileName, strerror (errno)); Error ("Cannot create debug file `%s': %s", DbgFileName, strerror (errno));
} }
/* Clear the debug sym table (used to detect duplicates) */
ClearDbgSymTable ();
/* Output the segment info */ /* Output the segment info */
PrintDbgSegments (F); PrintDbgSegments (F);

View File

@ -7,7 +7,7 @@
/* */ /* */
/* */ /* */
/* (C) 2001-2003 Ullrich von Bassewitz */ /* (C) 2001-2003 Ullrich von Bassewitz */
/* Römerstrasse 52 */ /* Römerstraße 52 */
/* D-70794 Filderstadt */ /* D-70794 Filderstadt */
/* EMail: uz@cc65.org */ /* EMail: uz@cc65.org */
/* */ /* */
@ -55,11 +55,11 @@ void PrintDbgInfo (ObjData* O, FILE* F)
/* Output the files section */ /* Output the files section */
for (I = 0; I < O->FileCount; ++I) { for (I = 0; I < O->FileCount; ++I) {
const FileInfo* FI = O->Files[I]; const FileInfo* FI = O->Files[I];
fprintf (F, "file\t\"%s\", %lu, %lu\n", fprintf (F, "file\t\"%s\",size=%lu,mtime=0x%08lX\n",
GetString (FI->Name), FI->Size, FI->MTime); GetString (FI->Name), FI->Size, FI->MTime);
} }
/* Output the lines */ /* Output the line infos */
for (I = 0; I < O->LineInfoCount; ++I) { for (I = 0; I < O->LineInfoCount; ++I) {
/* Get this line info */ /* Get this line info */
@ -74,7 +74,8 @@ void PrintDbgInfo (ObjData* O, FILE* F)
} }
/* Name and line number */ /* Name and line number */
fprintf (F, "line\t\"%s\", %lu", GetString (LI->File->Name), LI->Pos.Line); fprintf (F, "line\t\"%s\",line=%lu", GetString (LI->File->Name),
LI->Pos.Line);
/* Code ranges */ /* Code ranges */
for (J = 0; J < CollCount (CodeRanges); ++J) { for (J = 0; J < CollCount (CodeRanges); ++J) {
@ -83,7 +84,7 @@ void PrintDbgInfo (ObjData* O, FILE* F)
const CodeRange* R = CollConstAt (CodeRanges, J); const CodeRange* R = CollConstAt (CodeRanges, J);
/* Print it */ /* Print it */
fprintf (F, ", %06lX-%06lX", R->Offs, R->Offs + R->Size - 1); fprintf (F, ",range=0x%06lX-0x%06lX", R->Offs, R->Offs + R->Size - 1);
} }
/* Terminate the line */ /* Terminate the line */

View File

@ -7,7 +7,7 @@
/* */ /* */
/* */ /* */
/* (C) 1998-2003 Ullrich von Bassewitz */ /* (C) 1998-2003 Ullrich von Bassewitz */
/* Römerstrasse 52 */ /* Römerstraße 52 */
/* D-70794 Filderstadt */ /* D-70794 Filderstadt */
/* EMail: uz@cc65.org */ /* EMail: uz@cc65.org */
/* */ /* */
@ -36,6 +36,7 @@
#include <string.h> #include <string.h>
/* common */ /* common */
#include "addrsize.h"
#include "check.h" #include "check.h"
#include "symdefs.h" #include "symdefs.h"
#include "xmalloc.h" #include "xmalloc.h"
@ -98,9 +99,9 @@ static DbgSym* GetDbgSym (DbgSym* D, long Val)
{ {
/* Create the hash. We hash over the symbol value */ /* Create the hash. We hash over the symbol value */
unsigned Hash = ((Val >> 24) & 0xFF) ^ unsigned Hash = ((Val >> 24) & 0xFF) ^
((Val >> 16) & 0xFF) ^ ((Val >> 16) & 0xFF) ^
((Val >> 8) & 0xFF) ^ ((Val >> 8) & 0xFF) ^
((Val >> 0) & 0xFF); ((Val >> 0) & 0xFF);
/* Check for this symbol */ /* Check for this symbol */
DbgSym* Sym = DbgSymPool[Hash]; DbgSym* Sym = DbgSymPool[Hash];
@ -166,7 +167,7 @@ DbgSym* ReadDbgSym (FILE* F, ObjData* O)
static void ClearDbgSymTable (void) void ClearDbgSymTable (void)
/* Clear the debug symbol table */ /* Clear the debug symbol table */
{ {
unsigned I; unsigned I;
@ -197,9 +198,6 @@ void PrintDbgSyms (ObjData* O, FILE* F)
{ {
unsigned I; unsigned I;
/* Clear the debug sym table */
ClearDbgSymTable ();
/* Walk through all debug symbols in this module */ /* Walk through all debug symbols in this module */
for (I = 0; I < O->DbgSymCount; ++I) { for (I = 0; I < O->DbgSymCount; ++I) {
@ -219,9 +217,10 @@ void PrintDbgSyms (ObjData* O, FILE* F)
/* Emit the debug file line */ /* Emit the debug file line */
fprintf (F, fprintf (F,
"sym\t\"%s\", %08lX, %s\n", "sym\t\"%s\",value=0x%08lX,addrsize=%s,type=%s\n",
GetString (D->Name), GetString (D->Name),
Val, Val,
AddrSizeToStr (D->AddrSize),
IS_EXP_LABEL (D->Type)? "label" : "equate"); IS_EXP_LABEL (D->Type)? "label" : "equate");
/* Insert the symbol into the table */ /* Insert the symbol into the table */
@ -237,9 +236,6 @@ void PrintDbgSymLabels (ObjData* O, FILE* F)
{ {
unsigned I; unsigned I;
/* Clear the debug sym table */
ClearDbgSymTable ();
/* Walk through all debug symbols in this module */ /* Walk through all debug symbols in this module */
for (I = 0; I < O->DbgSymCount; ++I) { for (I = 0; I < O->DbgSymCount; ++I) {

View File

@ -82,6 +82,11 @@ DbgSym* ReadDbgSym (FILE* F, ObjData* Obj);
long GetDbgSymVal (DbgSym* D); long GetDbgSymVal (DbgSym* D);
/* Get the value of this symbol */ /* Get the value of this symbol */
void ClearDbgSymTable (void);
/* Clear the debug symbol table. Must be called before outputting debug syms
* or debug labels the first time.
*/
void PrintDbgSyms (ObjData* O, FILE* F); void PrintDbgSyms (ObjData* O, FILE* F);
/* Print the debug symbols in a debug file */ /* Print the debug symbols in a debug file */

View File

@ -7,7 +7,7 @@
/* */ /* */
/* */ /* */
/* (C) 1998-2003 Ullrich von Bassewitz */ /* (C) 1998-2003 Ullrich von Bassewitz */
/* Römerstrasse 52 */ /* Römerstraße 52 */
/* D-70794 Filderstadt */ /* D-70794 Filderstadt */
/* EMail: uz@cc65.org */ /* EMail: uz@cc65.org */
/* */ /* */
@ -133,6 +133,9 @@ void CreateLabelFile (void)
Error ("Cannot create label file `%s': %s", LabelFileName, strerror (errno)); Error ("Cannot create label file `%s': %s", LabelFileName, strerror (errno));
} }
/* Clear the debug sym table (used to detect duplicates) */
ClearDbgSymTable ();
/* Print the labels for the export symbols */ /* Print the labels for the export symbols */
PrintExportLabels (F); PrintExportLabels (F);

View File

@ -635,7 +635,7 @@ void PrintDbgSegments (FILE* F)
if (S->Size > 0) { if (S->Size > 0) {
/* Print the segment data */ /* Print the segment data */
fprintf (F, "segment\t\"%s\", 0x%06lX, 0x%04lX, %s, %s\n", fprintf (F, "segment\t\"%s\",start=0x%06lX,size=0x%04lX,addrsize=%s,type=%s\n",
GetString (S->Name), S->PC, S->Size, GetString (S->Name), S->PC, S->Size,
AddrSizeToStr (S->AddrSize), AddrSizeToStr (S->AddrSize),
S->ReadOnly? "ro" : "rw"); S->ReadOnly? "ro" : "rw");