dbxout.c: Include obstack.h.

* dbxout.c: Include obstack.h.
	(ASM_STABS_OP): Take XCOFF_DEBUGGING_INFO into account in
	default definition.
	(ASM_STABD_OP, NO_DBX_MAIN_SOURCE_DIRECTORY, DBX_CONTIN_CHAR):
	Default-define here.
	(DBX_CONTIN_LENGTH): Move definition with others.
	(DBX_FINISH_STABS): New target macro.
	(current_sym_code, current_sym_value, current_sym_addr)
	(current_sym_nchars, CHARS, dbxout_continue)
	(print_int_cst_octal, print_octal, print_wide_int)
	(dbxout_prepare_symbol, dbxout_finish_symbol): Delete.
	(stabstr_ob, stabstr_last_contin_point): New variables.
	(NUMBER_FMT_LOOP): New improper macro.
	(dbxout_int, dbxout_stab_value_zero, dbxout_stab_value_label)
	(dbxout_stab_value_label_diff, dbxout_stab_value_internal_label)
	(dbxout_stab_value_internal_label_diff, dbxout_stabd)
	(dbxout_begin_stabn, dbxout_begin_stabn_sline)
	(dbxout_begin_simple_stabs, dbxout_begin_simple_stabs_desc)
	(dbxout_begin_complex_stabs, dbxout_finish_complex_stabs)
	(stabstr_C, stabstr_S, stabstr_I, stabstr_D, stabstr_U, stabstr_O)
	(stabstr_continue, DECL_ACCESSIBILITY_CHAR)
	New functions and/or proper function-like macros.
	(CONTIN): Use stabstr_continue, unconditionally.
	(get_lang_number): Define unconditionally, with ATTRIBUTE_UNUSED.
	(dbxout_init): Initialize stabstr_ob.  Check
	NO_DBX_MAIN_SOURCE_DIRECTORY.  Only write out the Ltext label
	if it was used.  Use the new interfaces.
	(dbxout_source_file): Remove file argument; always write to
	asm_out_file.  Use the new interfaces.
	(dbxout_type_method_1): Remove second argument which is always
	DECL_ASSEMBLER_NAME of the first argument.  Use the new interfaces.
	(dbxout_type_methods): Remove write-only variables.  Use the
	new interfaces.
	(dbxout_parms): Refactor to remove code duplicated in each of
	several successive if-else-if blocks.  Use the new interfaces.
	(dbxout_function_end, emit_bincl_stab, dbxout_end_source_file)
	(dbxout_source_line, dbxout_finish, dbxout_type_index)
	(dbxout_type_fields, dbxout_range_type, dbxout_type, dbxout_type_name)
	(dbxout_class_name_qualifiers, dbxout_symbol, dbxout_symbol_location)
	(dbxout_symbol_name, dbxout_reg_parms, dbxout_args)
	(dbx_output_lbrac, dbx_output_rbrac, dbxout_block):
	Use the new interfaces.
	* Makefile.in (dbxout.o): Update dependencies.

	* defaults.h: Don't define ASM_STABD_OP.
	* output.h: Prototype new dbxout_* interfaces.
	* system.h: Poison DBX_OUTPUT_GCC_MARKER and DBX_FINISH_SYMBOL.
	* varasm.c: Don't define ASM_STABS_OP.
	(default_stabs_asm_out_constructor, default_stabs_asm_out_destructor):
	Use the new dbxout.c interfaces.  Call sorry if neither
	DBX_DEBUGGING_INFO nor XCOFF_DEBUGGING_INFO is defined.

	* xcoffout.h: Don't define ASM_STABS_OP.
	(DBX_FINISH_SYMBOL): Rewrite and rename DBX_FINISH_STABS.
	(DBX_OUTPUT_MAIN_SOURCE_DIRECTORY, DBX_OUTPUT_GCC_MARKER): Delete.
	(NO_DBX_MAIN_SOURCE_DIRECTORY, NO_DBX_GCC_MARKER): Define.
	(DBX_OUTPUT_MAIN_SOURCE_FILE_END): Change bare block to
	do { ... } while (0) idiom.

	* config/alpha/alpha.c (num_source_filenames): Export.
	* config/alpha/alpha.h (num_source_filenames): Declare.
	(DBX_OUTPUT_SOURCE_LINE): Use new interfaces.
	(SDB_OUTPUT_SOURCE_LINE): Add missing newline.
	* config/m32r/m32r.h (DBX_OUTPUT_SOURCE_LINE): Use new interfaces.
	Always use .debugsym.  Update commentary.
	* config/mips/mips.h (DBX_OUTPUT_SOURCE_LINE): Use new interfaces.
	(SDB_OUTPUT_SOURCE_LINE): Add missing newline.
	* config/rs6000/linux64.h (DBX_OUTPUT_SOURCE_LINE, DBX_OUTPUT_BRAC):
	Use new interfaces.
	* config/rs6000/rs6000.c: If TARGET_MACHO, include gstab.h.
	(macho_branch_islands): Use new interfaces.

	* doc/tm.texi: Update.

From-SVN: r89623
This commit is contained in:
Zack Weinberg 2004-10-27 01:29:42 +00:00
parent ab4375af84
commit 93a27b7bad
15 changed files with 1152 additions and 945 deletions

View File

@ -1,3 +1,79 @@
2004-10-26 Zack Weinberg <zack@codesourcery.com>
* dbxout.c: Include obstack.h.
(ASM_STABS_OP): Take XCOFF_DEBUGGING_INFO into account in
default definition.
(ASM_STABD_OP, NO_DBX_MAIN_SOURCE_DIRECTORY, DBX_CONTIN_CHAR):
Default-define here.
(DBX_CONTIN_LENGTH): Move definition with others.
(DBX_FINISH_STABS): New target macro.
(current_sym_code, current_sym_value, current_sym_addr)
(current_sym_nchars, CHARS, dbxout_continue)
(print_int_cst_octal, print_octal, print_wide_int)
(dbxout_prepare_symbol, dbxout_finish_symbol): Delete.
(stabstr_ob, stabstr_last_contin_point): New variables.
(NUMBER_FMT_LOOP): New improper macro.
(dbxout_int, dbxout_stab_value_zero, dbxout_stab_value_label)
(dbxout_stab_value_label_diff, dbxout_stab_value_internal_label)
(dbxout_stab_value_internal_label_diff, dbxout_stabd)
(dbxout_begin_stabn, dbxout_begin_stabn_sline)
(dbxout_begin_simple_stabs, dbxout_begin_simple_stabs_desc)
(dbxout_begin_complex_stabs, dbxout_finish_complex_stabs)
(stabstr_C, stabstr_S, stabstr_I, stabstr_D, stabstr_U, stabstr_O)
(stabstr_continue, DECL_ACCESSIBILITY_CHAR)
New functions and/or proper function-like macros.
(CONTIN): Use stabstr_continue, unconditionally.
(get_lang_number): Define unconditionally, with ATTRIBUTE_UNUSED.
(dbxout_init): Initialize stabstr_ob. Check
NO_DBX_MAIN_SOURCE_DIRECTORY. Only write out the Ltext label
if it was used. Use the new interfaces.
(dbxout_source_file): Remove file argument; always write to
asm_out_file. Use the new interfaces.
(dbxout_type_method_1): Remove second argument which is always
DECL_ASSEMBLER_NAME of the first argument. Use the new interfaces.
(dbxout_type_methods): Remove write-only variables. Use the
new interfaces.
(dbxout_parms): Refactor to remove code duplicated in each of
several successive if-else-if blocks. Use the new interfaces.
(dbxout_function_end, emit_bincl_stab, dbxout_end_source_file)
(dbxout_source_line, dbxout_finish, dbxout_type_index)
(dbxout_type_fields, dbxout_range_type, dbxout_type, dbxout_type_name)
(dbxout_class_name_qualifiers, dbxout_symbol, dbxout_symbol_location)
(dbxout_symbol_name, dbxout_reg_parms, dbxout_args)
(dbx_output_lbrac, dbx_output_rbrac, dbxout_block):
Use the new interfaces.
* Makefile.in (dbxout.o): Update dependencies.
* defaults.h: Don't define ASM_STABD_OP.
* output.h: Prototype new dbxout_* interfaces.
* system.h: Poison DBX_OUTPUT_GCC_MARKER and DBX_FINISH_SYMBOL.
* varasm.c: Don't define ASM_STABS_OP.
(default_stabs_asm_out_constructor, default_stabs_asm_out_destructor):
Use the new dbxout.c interfaces. Call sorry if neither
DBX_DEBUGGING_INFO nor XCOFF_DEBUGGING_INFO is defined.
* xcoffout.h: Don't define ASM_STABS_OP.
(DBX_FINISH_SYMBOL): Rewrite and rename DBX_FINISH_STABS.
(DBX_OUTPUT_MAIN_SOURCE_DIRECTORY, DBX_OUTPUT_GCC_MARKER): Delete.
(NO_DBX_MAIN_SOURCE_DIRECTORY, NO_DBX_GCC_MARKER): Define.
(DBX_OUTPUT_MAIN_SOURCE_FILE_END): Change bare block to
do { ... } while (0) idiom.
* config/alpha/alpha.c (num_source_filenames): Export.
* config/alpha/alpha.h (num_source_filenames): Declare.
(DBX_OUTPUT_SOURCE_LINE): Use new interfaces.
(SDB_OUTPUT_SOURCE_LINE): Add missing newline.
* config/m32r/m32r.h (DBX_OUTPUT_SOURCE_LINE): Use new interfaces.
Always use .debugsym. Update commentary.
* config/mips/mips.h (DBX_OUTPUT_SOURCE_LINE): Use new interfaces.
(SDB_OUTPUT_SOURCE_LINE): Add missing newline.
* config/rs6000/linux64.h (DBX_OUTPUT_SOURCE_LINE, DBX_OUTPUT_BRAC):
Use new interfaces.
* config/rs6000/rs6000.c: If TARGET_MACHO, include gstab.h.
(macho_branch_islands): Use new interfaces.
* doc/tm.texi: Update.
2004-10-26 Aldy Hernandez <aldyh@redhat.com>
* expr.c (emit_group_store): Do not treat floats as BLKmode.
@ -37,8 +113,8 @@
2004-10-26 Fariborz Jahanian <fjahanian@apple.com>
* config/rs6000/rs6000.md (andsi3_internal8): Set CR when splitting
into rotlsi3.
* config/rs6000/rs6000.md (andsi3_internal8): Set CR when splitting
into rotlsi3.
2004-10-26 Kazu Hirata <kazu@cs.umass.edu>
@ -64,8 +140,8 @@
2004-10-26 Aldy Hernandez <aldyh@redhat.com>
* expr.c (emit_group_load): Handle floats.
(emit_group_store): Same.
* expr.c (emit_group_load): Handle floats.
(emit_group_store): Same.
2004-10-26 Nathan Sidwell <nathan@codesourcery.com>
@ -147,8 +223,8 @@
* gcc/Makefile.in: removed ggc for cgraphunit.
* gcc/cgraph.c.dump_cgraph_node: removed static var analysis.
* gcc/cgraph.h: removed static var analysis data structures and calls.
* gcc/cgraphunit.c:
cgraph_mark_local_and_external_functions:changed name to
* gcc/cgraphunit.c:
cgraph_mark_local_and_external_functions:changed name to
cgraph_mark_local_functions
(print_order,convert_UIDs_in_bitmap,new_static_vars_info,
cgraph_reset_static_var_maps,get_global_static_vars_info,
@ -160,8 +236,8 @@
removed.
(cgraph_optimize,init_cgraph): removed calls to static vars analysis
* gcc/tree-dfa.c find_referenced_vars: removed call to static vars
analysis
* gcc/tree-flow.h static_vars_info: removed
analysis
* gcc/tree-flow.h static_vars_info: removed
* gcc/tree-ssa-operands.c (add_call_clobber_ops,add_call_read_ops):
removed calls to static vars analysis.
get_call_expr_operands: removed callee variable.
@ -228,7 +304,7 @@
2004-10-25 David Billinghurst <David.Billinghurst@riotinto.com>
* config/mips/mips.c(mips_output_filename): Remove unused
* config/mips/mips.c(mips_output_filename): Remove unused
array ltext_label_name
2004-10-24 Geoffrey Keating <geoffk@geoffk.org>
@ -294,7 +370,7 @@
2004-10-22 Eric Christopher <echristo@redhat.com>
* config/rs6000/rs6000.c (setup_incoming_varargs): Align DFmode
* config/rs6000/rs6000.c (setup_incoming_varargs): Align DFmode
saves.
2004-10-22 Aldy Hernandez <aldyh@redhat.com>

View File

@ -1883,7 +1883,7 @@ optabs.o : optabs.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) $(TREE_
dbxout.o : dbxout.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(TREE_H) $(RTL_H) \
$(FLAGS_H) $(REGS_H) debug.h $(TM_P_H) $(TARGET_H) function.h langhooks.h \
insn-config.h reload.h gstab.h xcoffout.h output.h dbxout.h toplev.h \
$(GGC_H) gt-dbxout.h
$(GGC_H) $(OBSTACK_H) gt-dbxout.h
debug.o : debug.c debug.h $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H)
sdbout.o : sdbout.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) debug.h \
$(TREE_H) $(GGC_H) varray.h $(RTL_H) $(REGS_H) $(FLAGS_H) insn-config.h \

View File

@ -6548,7 +6548,7 @@ alpha_expand_prologue (void)
}
/* Count the number of .file directives, so that .loc is up to date. */
static int num_source_filenames = 0;
int num_source_filenames = 0;
/* Output the textual info surrounding the prologue. */

View File

@ -1662,13 +1662,15 @@ extern long alpha_auto_offset;
#define DEBUGGER_ARG_OFFSET(OFFSET, X) (OFFSET + alpha_arg_offset)
/* mips-tfile doesn't understand .stabd directives. */
#define DBX_OUTPUT_SOURCE_LINE(STREAM, LINE, COUNTER) \
fprintf (STREAM, "$LM%d:\n%s%d,0,%d,$LM%d\n", COUNTER, ASM_STABN_OP, \
N_SLINE, LINE, COUNTER)
#define DBX_OUTPUT_SOURCE_LINE(STREAM, LINE, COUNTER) do { \
dbxout_begin_stabn_sline (LINE); \
dbxout_stab_value_internal_label ("LM", &COUNTER); \
} while (0)
/* We want to use MIPS-style .loc directives for SDB line numbers. */
extern int num_source_filenames;
#define SDB_OUTPUT_SOURCE_LINE(STREAM, LINE) \
fprintf (STREAM, "\t.loc\t%d %d", num_source_filenames, LINE)
fprintf (STREAM, "\t.loc\t%d %d\n", num_source_filenames, LINE)
#define ASM_OUTPUT_SOURCE_FILENAME(STREAM, NAME) \
alpha_output_filename (STREAM, NAME)

View File

@ -1517,25 +1517,23 @@ L2: .word STATIC
/* Globalizing directive for a label. */
#define GLOBAL_ASM_OP "\t.global\t"
/* If -Os, don't force line number labels to begin at the beginning of
the word; we still want the assembler to try to put things in parallel,
should that be possible.
For m32r/d, instructions are never in parallel (other than with a nop)
and the simulator and stub both handle a breakpoint in the middle of
a word so don't ever force line number labels to begin at the beginning
of a word. */
/* We do not use DBX_LINES_FUNCTION_RELATIVE or
dbxout_stab_value_internal_label_diff here because
we need to use .debugsym for the line label. */
#define DBX_OUTPUT_SOURCE_LINE(file, line, counter) \
do \
{ \
fprintf (file, ".stabn 68,0,%d,.LM%d-", \
line, counter); \
assemble_name \
(file, XSTR (XEXP (DECL_RTL (current_function_decl), 0), 0)); \
fprintf (file, (optimize_size || TARGET_M32R) \
? "\n\t.debugsym .LM%d\n" \
: "\n.LM%d:\n", \
counter); \
char label[64]; \
ASM_GENERATE_INTERNAL_LABEL (label, "LM", counter); \
\
dbxout_begin_stabn_sline (line); \
assemble_name (file, label); \
putc ('-', file); \
assemble_name (file, begin_label); \
fputs ("\n\t.debugsym ", file); \
assemble_name (file, label); \
putc ('\n', file); \
} \
while (0)

View File

@ -2791,14 +2791,14 @@ while (0)
mips_output_filename (STREAM, NAME)
/* mips-tfile does not understand .stabd directives. */
#define DBX_OUTPUT_SOURCE_LINE(STREAM, LINE, COUNTER) \
fprintf (STREAM, "%sLM%d:\n\t.stabn\t%d,0,%d,%sLM%d\n", \
LOCAL_LABEL_PREFIX, COUNTER, N_SLINE, LINE, \
LOCAL_LABEL_PREFIX, COUNTER)
#define DBX_OUTPUT_SOURCE_LINE(STREAM, LINE, COUNTER) do { \
dbxout_begin_stabn_sline (LINE); \
dbxout_stab_value_internal_label ("LM", &COUNTER); \
} while (0)
/* Use .loc directives for SDB line numbers. */
#define SDB_OUTPUT_SOURCE_LINE(STREAM, LINE) \
fprintf (STREAM, "\t.loc\t%d %d", num_source_filenames, LINE)
fprintf (STREAM, "\t.loc\t%d %d\n", num_source_filenames, LINE)
/* The MIPS implementation uses some labels for its own purpose. The
following lists what labels are created, and are all formed by the

View File

@ -482,30 +482,34 @@ extern int dot_symbols;
&& GET_MODE_CLASS (GET_MODE (X)) == MODE_FLOAT \
&& BITS_PER_WORD == HOST_BITS_PER_INT)))))
/* This ABI cannot use DBX_LINES_FUNCTION_RELATIVE, because we must
use the function code label, not the function descriptor. */
/* This ABI cannot use DBX_LINES_FUNCTION_RELATIVE, nor can it use
dbxout_stab_value_internal_label_diff, because we must
use the function code label, not the function descriptor label. */
#define DBX_OUTPUT_SOURCE_LINE(FILE, LINE, COUNTER) \
do \
{ \
char temp[256]; \
const char *s; \
ASM_GENERATE_INTERNAL_LABEL (temp, "LM", COUNTER); \
fprintf (FILE, "\t.stabn 68,0,%d,", LINE); \
dbxout_begin_stabn_sline (LINE); \
assemble_name (FILE, temp); \
putc ('-', FILE); \
s = XSTR (XEXP (DECL_RTL (current_function_decl), 0), 0); \
rs6000_output_function_entry (FILE, s); \
putc ('\n', FILE); \
(*targetm.asm_out.internal_label) (FILE, "LM", COUNTER); \
targetm.asm_out.internal_label (FILE, "LM", COUNTER); \
COUNTER += 1; \
} \
while (0)
/* Similarly, we want the function code label here. */
#define DBX_OUTPUT_BRAC(FILE, NAME, BRAC) \
/* Similarly, we want the function code label here. Cannot use
dbxout_stab_value_label_diff, as we have to use
rs6000_output_function_entry. FIXME. */
#define DBX_OUTPUT_BRAC(FILE, NAME, BRAC) \
do \
{ \
const char *s; \
fprintf (FILE, "%s%d,0,0,", ASM_STABN_OP, BRAC); \
dbxout_begin_stabn (BRAC); \
assemble_name (FILE, NAME); \
putc ('-', FILE); \
s = XSTR (XEXP (DECL_RTL (current_function_decl), 0), 0); \
@ -522,7 +526,7 @@ while (0)
do \
{ \
const char *s; \
fprintf (FILE, "%s\"\",%d,0,0,", ASM_STABS_OP, N_FUN); \
dbxout_begin_empty_stabs (N_FUN); \
assemble_name (FILE, LSCOPE); \
putc ('-', FILE); \
s = XSTR (XEXP (DECL_RTL (current_function_decl), 0), 0); \

View File

@ -56,6 +56,9 @@
#if TARGET_XCOFF
#include "xcoffout.h" /* get declarations of xcoff_*_section_name */
#endif
#if TARGET_MACHO
#include "gstab.h" /* for N_SLINE */
#endif
#ifndef TARGET_NO_PROTOTYPE
#define TARGET_NO_PROTOTYPE 0
@ -17033,8 +17036,7 @@ macho_branch_islands (void)
strcat (tmp_buf, label);
#if defined (DBX_DEBUGGING_INFO) || defined (XCOFF_DEBUGGING_INFO)
if (write_symbols == DBX_DEBUG || write_symbols == XCOFF_DEBUG)
fprintf (asm_out_file, "\t.stabd 68,0," HOST_WIDE_INT_PRINT_UNSIGNED "\n",
BRANCH_ISLAND_LINE_NUMBER(branch_island));
dbxout_stabd (N_SLINE, BRANCH_ISLAND_LINE_NUMBER (branch_island));
#endif /* DBX_DEBUGGING_INFO || XCOFF_DEBUGGING_INFO */
if (flag_pic)
{
@ -17071,8 +17073,7 @@ macho_branch_islands (void)
output_asm_insn (tmp_buf, 0);
#if defined (DBX_DEBUGGING_INFO) || defined (XCOFF_DEBUGGING_INFO)
if (write_symbols == DBX_DEBUG || write_symbols == XCOFF_DEBUG)
fprintf(asm_out_file, "\t.stabd 68,0," HOST_WIDE_INT_PRINT_UNSIGNED "\n",
BRANCH_ISLAND_LINE_NUMBER (branch_island));
dbxout_stabd (N_SLINE, BRANCH_ISLAND_LINE_NUMBER (branch_island));
#endif /* DBX_DEBUGGING_INFO || XCOFF_DEBUGGING_INFO */
}

File diff suppressed because it is too large Load Diff

View File

@ -73,10 +73,6 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA
} while (0)
#endif
#ifndef ASM_STABD_OP
#define ASM_STABD_OP "\t.stabd\t"
#endif
/* This is how to output an element of a case-vector that is absolute.
Some targets don't use this, but we have to define it anyway. */

View File

@ -8049,26 +8049,36 @@ This describes file names in DBX format.
@defmac DBX_OUTPUT_MAIN_SOURCE_FILENAME (@var{stream}, @var{name})
A C statement to output DBX debugging information to the stdio stream
@var{stream} which indicates that file @var{name} is the main source
@var{stream}, which indicates that file @var{name} is the main source
file---the file specified as the input file for compilation.
This macro is called only once, at the beginning of compilation.
This macro need not be defined if the standard form of output
for DBX debugging information is appropriate.
It may be necessary to refer to a label equal to the beginning of the
text section. You can use @samp{assemble_name (stream, ltext_label_name)}
to do so. If you do this, you must also set the variable
@var{used_ltext_label_name} to @code{true}.
@end defmac
@defmac DBX_OUTPUT_MAIN_SOURCE_DIRECTORY (@var{stream}, @var{name})
A C statement to output DBX debugging information to the stdio stream
@var{stream} which indicates that the current directory during
compilation is named @var{name}.
@defmac NO_DBX_MAIN_SOURCE_DIRECTORY
Define this macro, with value 1, if GCC should not emit an indication
of the current directory for compilation and current source language at
the beginning of the file.
@end defmac
This macro need not be defined if the standard form of output
for DBX debugging information is appropriate.
@defmac NO_DBX_GCC_MARKER
Define this macro, with value 1, if GCC should not emit an indication
that this object file was compiled by GCC@. The default is to emit
an @code{N_OPT} stab at the beginning of every source file, with
@samp{gcc2_compiled.} for the string and value 0.
@end defmac
@defmac DBX_OUTPUT_MAIN_SOURCE_FILE_END (@var{stream}, @var{name})
A C statement to output DBX debugging information at the end of
compilation of the main source file @var{name}.
compilation of the main source file @var{name}. Output should be
written to the stdio stream @var{stream}.
If you don't define this macro, nothing special is output at the end
of compilation, which is correct for most machines.

View File

@ -522,4 +522,24 @@ extern bool default_valid_pointer_mode (enum machine_mode);
extern int default_address_cost (rtx);
/* dbxout helper functions */
#if defined DBX_DEBUGGING_INFO || defined XCOFF_DEBUGGING_INFO
extern void dbxout_int (int);
extern void dbxout_stabd (int, int);
extern void dbxout_begin_stabn (int);
extern void dbxout_begin_stabn_sline (int);
extern void dbxout_begin_empty_stabs (int);
extern void dbxout_begin_simple_stabs (const char *, int);
extern void dbxout_begin_simple_stabs_desc (const char *, int, int);
extern void dbxout_stab_value_zero (void);
extern void dbxout_stab_value_label (const char *);
extern void dbxout_stab_value_label_diff (const char *, const char *);
extern void dbxout_stab_value_internal_label (const char *, int *);
extern void dbxout_stab_value_internal_label_diff (const char *, int *,
const char *);
#endif
#endif /* ! GCC_OUTPUT_H */

View File

@ -656,7 +656,8 @@ extern void fancy_abort (const char *, int, const char *) ATTRIBUTE_NORETURN;
COLLECT_PARSE_FLAG DWARF2_GENERATE_TEXT_SECTION_LABEL WINNING_GDB \
ASM_OUTPUT_FILENAME ASM_OUTPUT_SOURCE_LINE FILE_NAME_JOINER \
GDB_INV_REF_REGPARM_STABS_LETTER DBX_MEMPARM_STABS_LETTER \
PUT_SDB_SRC_FILE STABS_GCC_MARKER DBX_OUTPUT_FUNCTION_END
PUT_SDB_SRC_FILE STABS_GCC_MARKER DBX_OUTPUT_FUNCTION_END \
DBX_OUTPUT_GCC_MARKER DBX_FINISH_SYMBOL
/* Hooks that are no longer used. */
#pragma GCC poison LANG_HOOKS_FUNCTION_MARK LANG_HOOKS_FUNCTION_FREE \

View File

@ -57,10 +57,6 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA
declarations for e.g. AIX 4.x. */
#endif
#ifndef ASM_STABS_OP
#define ASM_STABS_OP "\t.stabs\t"
#endif
/* The (assembler) name of the first globally-visible object output. */
const char *first_global_object_name;
const char *weak_global_object_name;
@ -1023,12 +1019,15 @@ assemble_asm (tree string)
void
default_stabs_asm_out_destructor (rtx symbol, int priority ATTRIBUTE_UNUSED)
{
#if defined DBX_DEBUGGING_INFO || defined XCOFF_DEBUGGING_INFO
/* Tell GNU LD that this is part of the static destructor set.
This will work for any system that uses stabs, most usefully
aout systems. */
fprintf (asm_out_file, "%s\"___DTOR_LIST__\",22,0,0,", ASM_STABS_OP);
assemble_name (asm_out_file, XSTR (symbol, 0));
fputc ('\n', asm_out_file);
dbxout_begin_simple_stabs ("___DTOR_LIST__", 22 /* N_SETT */);
dbxout_stab_value_label (XSTR (symbol, 0));
#else
sorry ("global destructors not supported on this target");
#endif
}
void
@ -1080,12 +1079,15 @@ default_dtor_section_asm_out_destructor (rtx symbol,
void
default_stabs_asm_out_constructor (rtx symbol, int priority ATTRIBUTE_UNUSED)
{
#if defined DBX_DEBUGGING_INFO || defined XCOFF_DEBUGGING_INFO
/* Tell GNU LD that this is part of the static destructor set.
This will work for any system that uses stabs, most usefully
aout systems. */
fprintf (asm_out_file, "%s\"___CTOR_LIST__\",22,0,0,", ASM_STABS_OP);
assemble_name (asm_out_file, XSTR (symbol, 0));
fputc ('\n', asm_out_file);
dbxout_begin_simple_stabs ("___CTOR_LIST__", 22 /* N_SETT */);
dbxout_stab_value_label (XSTR (symbol, 0));
#else
sorry ("global constructors not supported on this target");
#endif
}
void

View File

@ -21,8 +21,6 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA
02111-1307, USA. */
#define ASM_STABS_OP "\t.stabx\t"
/* Tags and typedefs are C_DECL in XCOFF, not C_LSYM. */
#define DBX_TYPE_DECL_STABS_CODE N_DECL
@ -70,32 +68,35 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA
/* Define our own finish symbol function, since xcoff stabs have their
own different format. */
#define DBX_FINISH_SYMBOL(ASMFILE,SYM) \
{ \
if (current_sym_addr && current_sym_code == N_FUN) \
fprintf ((ASMFILE), "\",."); \
else \
fprintf ((ASMFILE), "\","); \
/* If we are writing a function name, we must ensure that \
there is no storage-class suffix on the name. */ \
if (current_sym_addr && current_sym_code == N_FUN \
&& GET_CODE (current_sym_addr) == SYMBOL_REF) \
#define DBX_FINISH_STABS(CODE, LINE, ADDR, LABEL, NUMBER) do { \
if (ADDR) \
{ \
const char *_p = XSTR (current_sym_addr, 0); \
if (*_p == '*') \
fprintf ((ASMFILE), "%s", _p+1); \
/* If we are writing a function name, we must ensure that \
there is no storage-class suffix on the name. */ \
if (CODE == N_FUN && GET_CODE (ADDR) == SYMBOL_REF) \
{ \
const char *_p = XSTR (ADDR, 0); \
if (*_p == '*') \
fputs (_p+1, asm_out_file); \
else \
for (; *_p != '[' && *_p; _p++) \
putc (*_p, asm_out_file); \
} \
else \
for (; *_p != '[' && *_p; _p++) \
fprintf ((ASMFILE), "%c", *_p); \
{ \
if (CODE == N_FUN) \
putc ('.', asm_out_file); \
output_addr_const (asm_out_file, ADDR); \
} \
} \
else if (current_sym_addr) \
output_addr_const ((ASMFILE), current_sym_addr); \
else if (current_sym_code == N_GSYM) \
assemble_name ((ASMFILE), XSTR (XEXP (DECL_RTL (SYM), 0), 0)); \
else if (LABEL) \
assemble_name (asm_out_file, LABEL); \
else \
fprintf ((ASMFILE), "%d", current_sym_value); \
fprintf ((ASMFILE), ",%d,0\n", stab_to_sclass (current_sym_code)); \
}
dbxout_int (NUMBER); \
putc (',', asm_out_file); \
dbxout_int (stab_to_sclass (CODE)); \
fputs (",0\n", asm_out_file); \
} while (0)
/* These are IBM XCOFF extensions we need to reference in dbxout.c
and xcoffout.c. */
@ -128,7 +129,7 @@ extern char *xcoff_read_only_section_name;
extern const char *xcoff_lastfile;
/* Don't write out path name for main source file. */
#define DBX_OUTPUT_MAIN_SOURCE_DIRECTORY(FILE,FILENAME)
#define NO_DBX_MAIN_SOURCE_DIRECTORY 1
/* Write out main source file name using ".file" rather than ".stabs".
We don't actually do this here, because the assembler gets confused if there
@ -140,7 +141,7 @@ extern const char *xcoff_lastfile;
/* If we are still in an include file, its end must be marked. */
#define DBX_OUTPUT_MAIN_SOURCE_FILE_END(FILE, FILENAME) \
{ \
do { \
if (xcoff_current_include_file) \
{ \
fputs ("\t.ei\t", (FILE)); \
@ -148,16 +149,10 @@ extern const char *xcoff_lastfile;
putc ('\n', (FILE)); \
xcoff_current_include_file = NULL; \
} \
}
} while (0)
/* .stabx has the type in a different place. */
#if 0 /* Do not emit any marker for XCOFF until assembler allows XFT_CV. */
#define DBX_OUTPUT_GCC_MARKER(FILE) \
fprintf ((FILE), "%s\"gcc2_compiled.\",0,%d,0\n", ASM_STABS_OP, \
stab_to_sclass (N_GSYM))
#else
#define DBX_OUTPUT_GCC_MARKER(FILE)
#endif
/* Do not emit any marker for XCOFF until assembler allows XFT_CV. */
#define NO_DBX_GCC_MARKER
/* Do not break .stabs pseudos into continuations. */
#define DBX_CONTIN_LENGTH 0