output: call debug init from a central location
authorH. Peter Anvin <hpa@zytor.com>
Sun, 28 Jun 2009 04:54:10 +0000 (21:54 -0700)
committerH. Peter Anvin <hpa@zytor.com>
Sun, 28 Jun 2009 04:55:31 +0000 (21:55 -0700)
We already call current_dfmt->init in the same place (at the very end
of ofmt->init) in all the backends that do it; instead call it
centrally in nasm.c after ofmt->init.

This fixes invalid ELF files with when compiling with -F dwarf, since
the dwarf initialization routine never got called.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
nasm.c
output/outdbg.c
output/outieee.c
output/outobj.c

diff --git a/nasm.c b/nasm.c
index 9d3776a..632d794 100644 (file)
--- a/nasm.c
+++ b/nasm.c
@@ -429,6 +429,7 @@ int main(int argc, char **argv)
             init_labels();
 
             ofmt->init(ofile, report_error, define_label, evaluate);
+            ofmt->current_dfmt->init(ofmt, NULL, ofile, report_error);
 
             assemble_file(inname, depend_ptr);
 
index 72f952e..102e422 100644 (file)
@@ -40,8 +40,6 @@ static void dbg_init(FILE * fp, efunc errfunc, ldfunc ldef, evalfunc eval)
     dbgsect = NULL;
     (void)ldef;
     fprintf(fp, "NASM Output format debug dump\n");
-    of_dbg.current_dfmt->init(&of_dbg, 0, fp, errfunc);
-
 }
 
 static void dbg_cleanup(int debuginfo)
index 74c1fc8..abf493c 100644 (file)
@@ -196,8 +196,8 @@ static void ieee_init(FILE * fp, efunc errfunc, ldfunc ldef, evalfunc eval)
     ieee_entry_seg = NO_SEG;
     ieee_uppercase = false;
     checksum = 0;
-    of_ieee.current_dfmt->init(&of_ieee, NULL, fp, errfunc);
 }
+
 static int ieee_set_info(enum geninfo type, char **val)
 {
     (void)type;
index f51dcd1..fe2de3e 100644 (file)
@@ -634,8 +634,6 @@ static void obj_init(FILE * fp, efunc errfunc, ldfunc ldef, evalfunc eval)
     obj_use32 = false;
     passtwo = 0;
     current_seg = NULL;
-
-    of_obj.current_dfmt->init(&of_obj, NULL, fp, errfunc);
 }
 
 static int obj_set_info(enum geninfo type, char **val)