From: cuz Date: Sat, 14 Jul 2001 14:44:07 +0000 (+0000) Subject: Add dbginfo module X-Git-Tag: V2.12.0~2785 X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=ac6fdcc55bfb9b75346cac1ea5513ebe02b7300c;p=cc65 Add dbginfo module git-svn-id: svn://svn.cc65.org/cc65/trunk@782 b7a2c559-68d2-44c3-8de9-860c34a00d81 --- diff --git a/src/ld65/dbginfo.c b/src/ld65/dbginfo.c new file mode 100644 index 000000000..8da698aeb --- /dev/null +++ b/src/ld65/dbginfo.c @@ -0,0 +1,94 @@ +/*****************************************************************************/ +/* */ +/* dbginfo.c */ +/* */ +/* Debug info handling for the ld65 linker */ +/* */ +/* */ +/* */ +/* (C) 2001 Ullrich von Bassewitz */ +/* Wacholderweg 14 */ +/* D-70597 Stuttgart */ +/* EMail: uz@cc65.org */ +/* */ +/* */ +/* This software is provided 'as-is', without any expressed or implied */ +/* warranty. In no event will the authors be held liable for any damages */ +/* arising from the use of this software. */ +/* */ +/* Permission is granted to anyone to use this software for any purpose, */ +/* including commercial applications, and to alter it and redistribute it */ +/* freely, subject to the following restrictions: */ +/* */ +/* 1. The origin of this software must not be misrepresented; you must not */ +/* claim that you wrote the original software. If you use this software */ +/* in a product, an acknowledgment in the product documentation would be */ +/* appreciated but is not required. */ +/* 2. Altered source versions must be plainly marked as such, and must not */ +/* be misrepresented as being the original software. */ +/* 3. This notice may not be removed or altered from any source */ +/* distribution. */ +/* */ +/*****************************************************************************/ + + + +/* ld65 */ +#include "fileinfo.h" +#include "lineinfo.h" +#include "dbginfo.h" + + + +/*****************************************************************************/ +/* Code */ +/*****************************************************************************/ + + + +void PrintDbgInfo (ObjData* O, FILE* F) +/* Print the debug info into a file */ +{ + unsigned I, J; + + /* Output the files section */ + for (I = 0; I < O->FileCount; ++I) { + const FileInfo* FI = O->Files[I]; + fprintf (F, "file\t\"%s\", %lu, %lu\n", FI->Name, FI->Size, FI->MTime); + } + + /* Output the lines */ + for (I = 0; I < O->LineInfoCount; ++I) { + + /* Get this line info */ + const LineInfo* LI = O->LineInfos[I]; + + /* Get a pointer to the code ranges */ + const Collection* CodeRanges = &LI->CodeRanges; + + /* We must have code ranges, otherwise ignore the entry */ + if (CollCount (CodeRanges) == 0) { + continue; + } + + /* Name and line number */ + fprintf (F, "line\t\"%s\", %lu", LI->File->Name, LI->Pos.Line); + + /* Code ranges */ + for (J = 0; J < CollCount (CodeRanges); ++J) { + + /* Get this code range */ + const CodeRange* R = CollConstAt (CodeRanges, J); + + /* Print it */ + fprintf (F, ", %06lX-%06lX", R->Offs, R->Offs + R->Size - 1); + } + + /* Terminate the line */ + fprintf (F, "\n"); + } +} + + + + diff --git a/src/ld65/dbginfo.h b/src/ld65/dbginfo.h new file mode 100644 index 000000000..5c88370d4 --- /dev/null +++ b/src/ld65/dbginfo.h @@ -0,0 +1,66 @@ +/*****************************************************************************/ +/* */ +/* dbginfo.h */ +/* */ +/* Debug info handling for the ld65 linker */ +/* */ +/* */ +/* */ +/* (C) 2001 Ullrich von Bassewitz */ +/* Wacholderweg 14 */ +/* D-70597 Stuttgart */ +/* EMail: uz@cc65.org */ +/* */ +/* */ +/* This software is provided 'as-is', without any expressed or implied */ +/* warranty. In no event will the authors be held liable for any damages */ +/* arising from the use of this software. */ +/* */ +/* Permission is granted to anyone to use this software for any purpose, */ +/* including commercial applications, and to alter it and redistribute it */ +/* freely, subject to the following restrictions: */ +/* */ +/* 1. The origin of this software must not be misrepresented; you must not */ +/* claim that you wrote the original software. If you use this software */ +/* in a product, an acknowledgment in the product documentation would be */ +/* appreciated but is not required. */ +/* 2. Altered source versions must be plainly marked as such, and must not */ +/* be misrepresented as being the original software. */ +/* 3. This notice may not be removed or altered from any source */ +/* distribution. */ +/* */ +/*****************************************************************************/ + + + +#ifndef DBGINFO_H +#define DBGINFO_H + + + +#include + +/* ld65 */ +#include "objdata.h" + + + +/*****************************************************************************/ +/* Code */ +/*****************************************************************************/ + + + +void PrintDbgInfo (ObjData* O, FILE* F); +/* Print the debug info into a file */ + + + +/* End of dbginfo.h */ + +#endif + + + + +