Date: Tue, 28 Jan 1997 11:27:32 +0100 (MET) From: Robert Hoehne To: DJGPP workers Subject: Patch for go32.h Message-Id: Mime-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII Here is now the patch for go32.h from the gcc sources. As already said in the previous diskussion, this patch allows to use the stabs debugging information and it fixes also the the bug with the wrong filename when compiling a file like 'foo.cpp'. This patch is designed to leave the "old" coff debugging information as default (that means when you select -g). If you want to have stabs debugging as default change the first "#if 0" to "#if 1" (which is commented). Independent from you choice, coff or stabs debugging can be selected with '-gcoff' or '-gstabs'. And again the warning: Do NOT mix coff and stabs debugging information, which will produce non-debugging exe's. BTW: The changes are taken mostly from other header files in the gcc-distrib. *** gnu/gcc-2721/config/i386/go32.h~ Fri May 12 13:24:30 1995 --- gnu/gcc-2721/config/i386/go32.h Mon Jan 27 21:07:12 1997 *************** *** 1,5 **** --- 1,13 ---- /* Configuration for an i386 running MS-DOS with djgpp/go32. */ + #define DBX_DEBUGGING_INFO /* support for stabs debugging info */ + #define PREFERRED_DEBUGGING_TYPE SDB_DEBUG /* leave sdb as default */ + #define NO_STAB_H /* DJGPP has no stab.h */ + #if 0 /* enable this, if '-g' should select stabs debugging + #undef PREFERRED_DEBUGGING_TYPE + #define PREFERRED_DEBUGGING_TYPE DBX_DEBUG + #endif + /* Don't assume anything about the header files. */ #define NO_IMPLICIT_EXTERN_C *************** *** 61,64 **** --- 69,112 ---- fprintf (FILE, "\n"); \ } while (0) + /* Output at beginning of assembler file. */ + /* The .file command should always begin the output. */ + /* Use the main_input_filename instead of dump_base_name */ + + #undef ASM_FILE_START + #define ASM_FILE_START(FILE) \ + do { \ + output_file_directive (FILE, main_input_filename); \ + } while (0) + + /* Be function-relative for block and source line stab directives. */ + + #define DBX_BLOCKS_FUNCTION_RELATIVE 1 + + /* but, to make this work, functions must appear prior to line info */ + + #define DBX_FUNCTION_FIRST + + /* Generate a blank trailing N_SO to mark the end of the .o file, since + we can't depend upon the linker to mark .o file boundaries with + embedded stabs. */ + + #define DBX_OUTPUT_MAIN_SOURCE_FILE_END(FILE, FILENAME) \ + fprintf (FILE, \ + "\t.text\n\t.stabs \"\",%d,0,0,Letext\nLetext:\n", N_SO) + + #undef ASM_OUTPUT_SOURCE_LINE + #define ASM_OUTPUT_SOURCE_LINE(file, line) \ + if ( write_symbols == DBX_DEBUG ) \ + { static int sym_lineno = 1; \ + fprintf (file, ".stabn 68,0,%d,.LM%d-", \ + line, sym_lineno); \ + assemble_name (file, \ + XSTR (XEXP (DECL_RTL (current_function_decl), 0), 0)); \ + fprintf (file, "\n.LM%d:\n", sym_lineno); \ + sym_lineno += 1; } \ + else { \ + fprintf (file, "\t.ln\t%d\n", \ + ((sdb_begin_function_line > -1) \ + ? line - sdb_begin_function_line : 1)); }