]> git.sur5r.net Git - cc65/commitdiff
New module to handle initializers
authorcuz <cuz@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Fri, 3 Nov 2000 09:31:18 +0000 (09:31 +0000)
committercuz <cuz@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Fri, 3 Nov 2000 09:31:18 +0000 (09:31 +0000)
git-svn-id: svn://svn.cc65.org/cc65/trunk@432 b7a2c559-68d2-44c3-8de9-860c34a00d81

src/ld65/exports.c
src/ld65/initfunc.c [new file with mode: 0644]
src/ld65/initfunc.h [new file with mode: 0644]
src/ld65/make/gcc.mak

index 1b58fb84a5169d0d43a44968f4588f5f8b42a2d5..ae72b280f6893d1e9264e2e881d6c6d6a565ce9e 100644 (file)
@@ -48,6 +48,7 @@
 #include "global.h"
 #include "error.h"
 #include "fileio.h"
+#include "initfunc.h"
 #include "objdata.h"
 #include "expr.h"
 #include "exports.h"
@@ -75,13 +76,10 @@ static Export**             ExpPool  = 0;           /* Exports array */
 /* Defines for the flags in Export */
 #define EXP_USERMARK           0x0001
 
-/* List of all exports that are also initializers */
-static Collection      Initializers = STATIC_COLLECTION_INITIALIZER;
-
 
 
 /*****************************************************************************/
-/*                             Import handling                              */
+/*                             Import handling                              */
 /*****************************************************************************/
 
 
@@ -233,7 +231,7 @@ void InsertExport (Export* E)
 
     /* If this is an initializer, insert it into the initializer list */
     if (IS_EXP_INIT (E->Type)) {
-       CollAppend (&Initializers, E);
+       AddInitFunc (E);
     }
 
     /* Create a hash value for the given name */
@@ -265,7 +263,7 @@ void InsertExport (Export* E)
                            ImpOpen -= E->ImpCount;     /* Decrease open imports now */
                    xfree (L);
                    /* We must run through the import list and change the
-                    * export pointer now.
+                    * export pointer now.
                     */
                    Imp = E->ImpList;
                    while (Imp) {
diff --git a/src/ld65/initfunc.c b/src/ld65/initfunc.c
new file mode 100644 (file)
index 0000000..60ea528
--- /dev/null
@@ -0,0 +1,79 @@
+/*****************************************************************************/
+/*                                                                           */
+/*                               initfunc.c                                 */
+/*                                                                           */
+/*                     Init/cleanup function handling                       */
+/*                                                                           */
+/*                                                                           */
+/*                                                                           */
+/* (C) 2000      Ullrich von Bassewitz                                       */
+/*               Wacholderweg 14                                             */
+/*               D-70597 Stuttgart                                           */
+/* EMail:        uz@musoftware.de                                            */
+/*                                                                           */
+/*                                                                           */
+/* 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.                                                          */
+/*                                                                           */
+/*****************************************************************************/
+
+
+
+/* common */
+#include "coll.h"
+
+/* ld65 */
+#include "exports.h"
+#include "segments.h"
+#include "initfunc.h"
+
+
+
+/*****************************************************************************/
+/*                                  Data                                    */
+/*****************************************************************************/
+
+
+
+/* List of all exports that are also initializers/cleanup functions */
+static Collection   InitFunctions      = STATIC_COLLECTION_INITIALIZER;
+static Collection   CleanupFunctions   = STATIC_COLLECTION_INITIALIZER;
+
+
+
+/*****************************************************************************/
+/*                                          Code                                    */
+/*****************************************************************************/
+
+
+
+void AddInitFunc (Export* E)
+/* Add the given export to the list of initializers */
+{
+    CollAppend (&InitFunctions, E);
+}
+
+
+
+void AddCleanupFunc (Export* E)
+/* Add the given export to the list of cleanup functions */
+{
+    CollAppend (&CleanupFunctions, E);
+}
+
+
+
diff --git a/src/ld65/initfunc.h b/src/ld65/initfunc.h
new file mode 100644 (file)
index 0000000..fef48e1
--- /dev/null
@@ -0,0 +1,71 @@
+/*****************************************************************************/
+/*                                                                           */
+/*                               initfunc.h                                 */
+/*                                                                           */
+/*                     Init/cleanup function handling                       */
+/*                                                                           */
+/*                                                                           */
+/*                                                                           */
+/* (C) 2000      Ullrich von Bassewitz                                       */
+/*               Wacholderweg 14                                             */
+/*               D-70597 Stuttgart                                           */
+/* EMail:        uz@musoftware.de                                            */
+/*                                                                           */
+/*                                                                           */
+/* 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 INITFUNC_H
+#define INITFUNC_H
+
+
+
+/*****************************************************************************/
+/*                                Forwards                                  */
+/*****************************************************************************/
+
+
+
+struct Export;
+
+
+
+/*****************************************************************************/
+/*                                          Code                                    */
+/*****************************************************************************/
+
+
+
+void AddInitFunc (struct Export* E);
+/* Add the given export to the list of initializers */
+
+void AddCleanupFunc (struct Export* E);
+/* Add the given export to the list of cleanup functions */
+
+
+
+/* End of initfunc.h */
+
+#endif
+
+
+
+
index 8db28cb6d49ca0661ce96affbe49bab1e17a41d1..62cab150640bff902bbe721047c55b0a10805f1e 100644 (file)
@@ -28,6 +28,7 @@ OBJS =        bin.o           \
        fileio.o        \
        fragment.o      \
        global.o        \
+       initfunc.o      \
        library.o       \
        main.o          \
        mapfile.o       \