]> granicus.if.org Git - yasm/commitdiff
Allow objfmt initialize and cleanup function pointers to be NULL when not needed.
authorPeter Johnson <peter@tortall.net>
Thu, 8 Aug 2002 00:59:42 +0000 (00:59 -0000)
committerPeter Johnson <peter@tortall.net>
Thu, 8 Aug 2002 00:59:42 +0000 (00:59 -0000)
svn path=/trunk/yasm/; revision=663

frontends/yasm/yasm.c
libyasm/objfmt.h
src/main.c
src/objfmt.h

index 8a7c4c1bf92422044e7d205613d72ff9b8f8224a..4a8b9600a9f605557e73997fc808b1466a23d36d 100644 (file)
@@ -234,7 +234,8 @@ main(int argc, char *argv[])
     }
 
     /* Initialize the object format */
-    cur_objfmt->initialize(in_filename, obj_filename);
+    if (cur_objfmt->initialize)
+       cur_objfmt->initialize(in_filename, obj_filename);
 
     /* Set NASM as the parser */
     cur_parser = find_parser("nasm");
@@ -338,7 +339,7 @@ cleanup(sectionhead *sections)
 {
     sections_delete(sections);
     symrec_delete_all();
-    if (cur_objfmt)
+    if (cur_objfmt && cur_objfmt->cleanup)
        cur_objfmt->cleanup();
     line_shutdown();
 
index 24d96fd7ad250eeee4d70cd21301df558e29b024..527b3a8fc6c757b05f3dc1a5f4ee9d0ebad01be2 100644 (file)
@@ -54,6 +54,7 @@ struct objfmt {
     /* Initializes object output.  Must be called before any other object
      * format functions.  Should NOT open the object file; the filenames are
      * provided solely for informational purposes.
+     * May be NULL if not needed by the object format.
      */
     void (*initialize) (const char *in_filename, const char *obj_filename);
 
@@ -63,7 +64,9 @@ struct objfmt {
      */
     void (*output) (FILE *f, sectionhead *sections);
 
-    /* Cleans up anything allocated by initialize. */
+    /* Cleans up anything allocated by initialize.
+     * May be NULL if not needed by the object format.
+     */
     void (*cleanup) (void);
 
     /* Switch object file sections.  The first val of the valparams should
index 8a7c4c1bf92422044e7d205613d72ff9b8f8224a..4a8b9600a9f605557e73997fc808b1466a23d36d 100644 (file)
@@ -234,7 +234,8 @@ main(int argc, char *argv[])
     }
 
     /* Initialize the object format */
-    cur_objfmt->initialize(in_filename, obj_filename);
+    if (cur_objfmt->initialize)
+       cur_objfmt->initialize(in_filename, obj_filename);
 
     /* Set NASM as the parser */
     cur_parser = find_parser("nasm");
@@ -338,7 +339,7 @@ cleanup(sectionhead *sections)
 {
     sections_delete(sections);
     symrec_delete_all();
-    if (cur_objfmt)
+    if (cur_objfmt && cur_objfmt->cleanup)
        cur_objfmt->cleanup();
     line_shutdown();
 
index 24d96fd7ad250eeee4d70cd21301df558e29b024..527b3a8fc6c757b05f3dc1a5f4ee9d0ebad01be2 100644 (file)
@@ -54,6 +54,7 @@ struct objfmt {
     /* Initializes object output.  Must be called before any other object
      * format functions.  Should NOT open the object file; the filenames are
      * provided solely for informational purposes.
+     * May be NULL if not needed by the object format.
      */
     void (*initialize) (const char *in_filename, const char *obj_filename);
 
@@ -63,7 +64,9 @@ struct objfmt {
      */
     void (*output) (FILE *f, sectionhead *sections);
 
-    /* Cleans up anything allocated by initialize. */
+    /* Cleans up anything allocated by initialize.
+     * May be NULL if not needed by the object format.
+     */
     void (*cleanup) (void);
 
     /* Switch object file sections.  The first val of the valparams should