]> git.sur5r.net Git - cc65/commitdiff
Write the high level debug info to the object file.
authoruz <uz@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Mon, 29 Aug 2011 20:02:06 +0000 (20:02 +0000)
committeruz <uz@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Mon, 29 Aug 2011 20:02:06 +0000 (20:02 +0000)
git-svn-id: svn://svn.cc65.org/cc65/trunk@5281 b7a2c559-68d2-44c3-8de9-860c34a00d81

src/ca65/dbginfo.c
src/ca65/dbginfo.h
src/ca65/symtab.c

index 7411e2d158d8a59291a4ece043d1cf11f28ee1cd..e4f50159f51dd5ac7ae283b8e9309c3e111f938a 100644 (file)
@@ -45,7 +45,9 @@
 #include "error.h"
 #include "expr.h"
 #include "filetab.h"
+#include "global.h"
 #include "lineinfo.h"
+#include "objfile.h"
 #include "nexttok.h"
 #include "symtab.h"
 
@@ -277,7 +279,7 @@ void DbgInfoSym (void)
     unsigned    AsmName = EMPTY_STRING_ID;
     unsigned    Flags;
     int         Offs;
-    HLDbgSym*   S;                           
+    HLDbgSym*   S;
 
 
     /* Parameters are separated by a comma */
@@ -351,3 +353,39 @@ void DbgInfoSym (void)
 
 
 
+void WriteHLDbgSyms (void)
+/* Write a list of all high level language symbols to the object file. */
+{
+    unsigned I;
+
+    /* Only if debug info is enabled */
+    if (DbgSyms) {
+
+        /* Write the symbol count to the list */
+        ObjWriteVar (CollCount (&HLDbgSyms));
+
+        /* Walk through list and write all symbols to the file. */
+        for (I = 0; I < CollCount (&HLDbgSyms); ++I) {
+
+            /* Get the next symbol */
+            const HLDbgSym* S = CollAtUnchecked (&HLDbgSyms, I);
+
+            /* Write the symbol data */
+            ObjWriteVar (S->Flags);
+            ObjWriteVar (S->Name);
+            ObjWriteVar (S->AsmName);
+            ObjWriteVar (S->Offs);
+            ObjWriteVar (S->Type);
+            ObjWriteVar (S->ScopeId);
+        }
+
+    } else {
+
+        /* Write a count of zero */
+        ObjWriteVar (0);
+
+    }
+}
+
+
+
index 1334c06b26da3be19a8df31b75fd55b9fc29b51e..5604067b2a2b88786af85823a78b1048db0311cb 100644 (file)
@@ -56,6 +56,9 @@ void DbgInfoLine (void);
 void DbgInfoSym (void);
 /* Parse and handle SYM subcommand of the .dbg pseudo instruction */
 
+void WriteHLDbgSyms (void);
+/* Write a list of all high level language symbols to the object file. */
+
 
 
 /* End of dbginfo.h */
index e0d6f830987ee6ce19e2404302b4265a5316e224..acb1ed3bba386494481302f5d240293527074679 100644 (file)
 #include "xmalloc.h"
 
 /* ca65 */
-#include "global.h"
+#include "dbginfo.h"
 #include "error.h"
 #include "expr.h"
+#include "global.h"
 #include "objfile.h"
 #include "scanner.h"
 #include "segment.h"
@@ -909,6 +910,9 @@ void WriteDbgSyms (void)
 
     }
 
+    /* Write the high level symbols */
+    WriteHLDbgSyms ();
+
     /* Done writing debug symbols */
     ObjEndDbgSyms ();
 }