Commit 2e4b9b8c by Richard Henderson Committed by Richard Henderson

Makefile.in (OBJS): Add dwarf2asm.o.

	* Makefile.in (OBJS): Add dwarf2asm.o.
	* dwarf2asm.c, dwarf2asm.h: New files.
	* dwarf2out.c (*): Use them.
	(size_of_uleb128, size_of_sleb128): Remove.
	(output_uleb128, output_sleb128): Remove.
	(UNALIGNED_SHORT_ASM_OP, UNALIGNED_INT_ASM_OP): Remove.
	(UNALIGNED_DOUBLE_INT_ASM_OP, ASM_BYTE_OP): Remove.
	(UNALIGNED_OFFSET_ASM_OP, UNALIGNED_WORD_ASM_OP): Remove.
	(FDE_LABEL, LINE_NUMBER_BEGIN_LABEL, LINE_NUMBER_END_LABEL): New.
	(ASM_OUTPUT_DWARF_DATA1, ASM_OUTPUT_DWARF_DELTA1): Remove.
	(ASM_OUTPUT_DWARF_DATA2, ASM_OUTPUT_DWARF_DELTA2): Remove.
	(ASM_OUTPUT_DWARF_DATA4, ASM_OUTPUT_DWARF_DELTA4): Remove.
	(ASM_OUTPUT_DWARF_DATA, ASM_OUTPUT_DWARF_DELTA): Remove.
	(ASM_OUTPUT_DWARF_ADDR, ASM_OUTPUT_DWARF_ADDR_DATA): Remove.
	(ASM_OUTPUT_DWARF_ADDR_DELTA, ASM_OUTPUT_DWARF_ADDR_CONST): Remove.
	(ASM_OUTPUT_DWARF_OFFSET4, ASM_OUTPUT_DWARF_OFFSET): Remove.
	(ASM_OUTPUT_DWARF_CONST_DOUBLE): Remove.
	(ASM_OUTPUT_DWARF_NSTRING, ASM_OUTPUT_DWARF_STRING): Remove.
	(dwarf2out_frame_debug): Remove unused variables.
	(output_loc_operands): Don't abort on 8 byte constants if
	host integers are wide enough.
	(output_symbolic_ref): Remove.
	(size_of_die): Don't assume 4 byte host integers.
	(output_line_info): Use ASM_GENERATE_INTERNAL_LABEL for begin
	and end labels.
	(add_const_value_attribute) [CONST_INT]: Verify we're not doing
	something stupid with HOST_WIDE_INT to long truncation.
	[CONST_DOUBLE]: Likewise.

	* config/arm/conix-elf.h (UNALIGNED_WORD_ASM_OP): Remove.
	(ASM_OUTPUT_DWARF2_ADDR_CONST, ASM_OUTPUT_DWARF_ADDR_CONST): Remove.
	* config/arm/unknown-elf.h: Likewise.
	* config/rs6000/aix.h (UNALIGNED_SHORT_ASM_OP): New.
	(UNALIGNED_INT_ASM_OP, UNALIGNED_DOUBLE_INT_ASM_OP): New.
	(ASM_OUTPUT_DWARF_ADDR_VAR, ASM_OUTPUT_DWARF_DELTA_VAR): Remove.
	(ASM_OUTPUT_DWARF_DELTA2, ASM_OUTPUT_DWARF_DELTA4): Remove.
	(ASM_OUTPUT_DWARF_DELTA, ASM_OUTPUT_DWARF_ADDR_DELTA): Remove.
	(ASM_OUTPUT_DWARF_ADDR, ASM_OUTPUT_DWARF_DATA4): Remove.
	(ASM_OUTPUT_DWARF_DATA2, ASM_OUTPUT_DWARF_OFFSET4): Remove.
	(ASM_OUTPUT_DWARF_OFFSET): Remove.
	* config/rs6000/sysv4.h (ASM_OUTPUT_DWARF_ADDR): Remove.
	* config/sparc/sp64-elf.h (UNALIGNED_DOUBLE_INT_ASM_OP): New.
	(UNALIGNED_LONGLONG_ASM_OP, ASM_OUTPUT_DWARF_ADDR): Remove.
	(ASM_OUTPUT_DWARF_ADDR_CONST, ASM_OUTPUT_DWARF_REF): Remove.

From-SVN: r40197
parent dc76f41c
2001-03-02 Richard Henderson <rth@redhat.com>
* Makefile.in (OBJS): Add dwarf2asm.o.
* dwarf2asm.c, dwarf2asm.h: New files.
* dwarf2out.c (*): Use them.
(size_of_uleb128, size_of_sleb128): Remove.
(output_uleb128, output_sleb128): Remove.
(UNALIGNED_SHORT_ASM_OP, UNALIGNED_INT_ASM_OP): Remove.
(UNALIGNED_DOUBLE_INT_ASM_OP, ASM_BYTE_OP): Remove.
(UNALIGNED_OFFSET_ASM_OP, UNALIGNED_WORD_ASM_OP): Remove.
(FDE_LABEL, LINE_NUMBER_BEGIN_LABEL, LINE_NUMBER_END_LABEL): New.
(ASM_OUTPUT_DWARF_DATA1, ASM_OUTPUT_DWARF_DELTA1): Remove.
(ASM_OUTPUT_DWARF_DATA2, ASM_OUTPUT_DWARF_DELTA2): Remove.
(ASM_OUTPUT_DWARF_DATA4, ASM_OUTPUT_DWARF_DELTA4): Remove.
(ASM_OUTPUT_DWARF_DATA, ASM_OUTPUT_DWARF_DELTA): Remove.
(ASM_OUTPUT_DWARF_ADDR, ASM_OUTPUT_DWARF_ADDR_DATA): Remove.
(ASM_OUTPUT_DWARF_ADDR_DELTA, ASM_OUTPUT_DWARF_ADDR_CONST): Remove.
(ASM_OUTPUT_DWARF_OFFSET4, ASM_OUTPUT_DWARF_OFFSET): Remove.
(ASM_OUTPUT_DWARF_CONST_DOUBLE): Remove.
(ASM_OUTPUT_DWARF_NSTRING, ASM_OUTPUT_DWARF_STRING): Remove.
(dwarf2out_frame_debug): Remove unused variables.
(output_loc_operands): Don't abort on 8 byte constants if
host integers are wide enough.
(output_symbolic_ref): Remove.
(size_of_die): Don't assume 4 byte host integers.
(output_line_info): Use ASM_GENERATE_INTERNAL_LABEL for begin
and end labels.
(add_const_value_attribute) [CONST_INT]: Verify we're not doing
something stupid with HOST_WIDE_INT to long truncation.
[CONST_DOUBLE]: Likewise.
* config/arm/conix-elf.h (UNALIGNED_WORD_ASM_OP): Remove.
(ASM_OUTPUT_DWARF2_ADDR_CONST, ASM_OUTPUT_DWARF_ADDR_CONST): Remove.
* config/arm/unknown-elf.h: Likewise.
* config/rs6000/aix.h (UNALIGNED_SHORT_ASM_OP): New.
(UNALIGNED_INT_ASM_OP, UNALIGNED_DOUBLE_INT_ASM_OP): New.
(ASM_OUTPUT_DWARF_ADDR_VAR, ASM_OUTPUT_DWARF_DELTA_VAR): Remove.
(ASM_OUTPUT_DWARF_DELTA2, ASM_OUTPUT_DWARF_DELTA4): Remove.
(ASM_OUTPUT_DWARF_DELTA, ASM_OUTPUT_DWARF_ADDR_DELTA): Remove.
(ASM_OUTPUT_DWARF_ADDR, ASM_OUTPUT_DWARF_DATA4): Remove.
(ASM_OUTPUT_DWARF_DATA2, ASM_OUTPUT_DWARF_OFFSET4): Remove.
(ASM_OUTPUT_DWARF_OFFSET): Remove.
* config/rs6000/sysv4.h (ASM_OUTPUT_DWARF_ADDR): Remove.
* config/sparc/sp64-elf.h (UNALIGNED_DOUBLE_INT_ASM_OP): New.
(UNALIGNED_LONGLONG_ASM_OP, ASM_OUTPUT_DWARF_ADDR): Remove.
(ASM_OUTPUT_DWARF_ADDR_CONST, ASM_OUTPUT_DWARF_REF): Remove.
2001-03-02 John David Anglin <dave@hiauly1.hia.nrc.ca>
* cselib.c (hash_rtx): Cast enums to unsigned int.
......
......@@ -733,19 +733,22 @@ C_OBJS = c-parse.o c-lang.o $(C_AND_OBJC_OBJS)
# Language-independent object files.
OBJS = diagnostic.o version.o tree.o print-tree.o stor-layout.o fold-const.o \
function.o stmt.o except.o expr.o calls.o expmed.o explow.o optabs.o real.o \
builtins.o intl.o varasm.o rtl.o print-rtl.o rtlanal.o emit-rtl.o genrtl.o \
dbxout.o sdbout.o dwarfout.o dwarf2out.o xcoffout.o bitmap.o alias.o gcse.o \
integrate.o jump.o cse.o loop.o doloop.o unroll.o flow.o combine.o varray.o \
regclass.o regmove.o local-alloc.o global.o reload.o reload1.o caller-save.o\
insn-peep.o reorg.o haifa-sched.o final.o recog.o reg-stack.o regrename.o \
insn-opinit.o insn-recog.o insn-extract.o insn-output.o insn-emit.o lcm.o \
profile.o insn-attrtab.o $(out_object_file) $(EXTRA_OBJS) convert.o \
mbchar.o splay-tree.o graph.o sbitmap.o resource.o hash.o predict.o \
lists.o ggc-common.o $(GGC) stringpool.o simplify-rtx.o ssa.o bb-reorder.o \
sibcall.o conflict.o timevar.o ifcvt.o dominance.o dependence.o dce.o \
sched-vis.o sched-deps.o sched-rgn.o sched-ebb.o hashtab.o cselib.o params.o
OBJS = \
alias.o bb-reorder.o bitmap.o builtins.o caller-save.o calls.o \
combine.o conflict.o convert.o cse.o cselib.o dbxout.o dce.o \
dependence.o diagnostic.o doloop.o dominance.o dwarf2asm.o dwarf2out.o \
dwarfout.o emit-rtl.o except.o explow.o expmed.o expr.o final.o flow.o \
fold-const.o function.o gcse.o genrtl.o ggc-common.o global.o graph.o \
haifa-sched.o hash.o hashtab.o ifcvt.o insn-attrtab.o insn-emit.o \
insn-extract.o insn-opinit.o insn-output.o insn-peep.o insn-recog.o \
integrate.o intl.o jump.o lcm.o lists.o local-alloc.o loop.o mbchar.o \
optabs.o params.o predict.o print-rtl.o print-tree.o profile.o real.o \
recog.o reg-stack.o regclass.o regmove.o regrename.o reload.o \
reload1.o reorg.o resource.o rtl.o rtlanal.o sbitmap.o sched-deps.o \
sched-ebb.o sched-rgn.o sched-vis.o sdbout.o sibcall.o simplify-rtx.o \
splay-tree.o ssa.o stmt.o stor-layout.o stringpool.o timevar.o tree.o \
unroll.o varasm.o varray.o version.o xcoffout.o \
$(GGC) $(out_object_file) $(EXTRA_OBJS)
BACKEND = toplev.o libbackend.a
......@@ -1397,7 +1400,9 @@ dwarfout.o : dwarfout.c $(CONFIG_H) system.h $(TREE_H) $(RTL_H) dwarf.h \
dwarf2out.o : dwarf2out.c $(CONFIG_H) system.h $(TREE_H) $(RTL_H) dwarf2.h \
flags.h insn-config.h reload.h output.h \
hard-reg-set.h $(REGS_H) $(EXPR_H) toplev.h dwarf2out.h varray.h \
$(GGC_H) except.h
$(GGC_H) except.h dwarf2asm.h
dwarf2asm.o : dwarf2asm.c $(CONFIG_H) system.h flags.h $(RTL_H) output.h \
dwarf2asm.h
xcoffout.o : xcoffout.c $(CONFIG_H) system.h $(TREE_H) $(RTL_H) xcoffout.h \
flags.h toplev.h output.h dbxout.h $(GGC_H)
emit-rtl.o : emit-rtl.c $(CONFIG_H) system.h $(RTL_H) $(TREE_H) flags.h \
......
......@@ -99,23 +99,6 @@ func_ptr __DTOR_END__[1] = { (func_ptr) 0 };
} \
while (0)
/* Don't know how to order these. UNALIGNED_WORD_ASM_OP is in
dwarf2.out. */
#define UNALIGNED_WORD_ASM_OP "\t.4byte\t"
#define ASM_OUTPUT_DWARF2_ADDR_CONST(FILE,ADDR) \
fprintf ((FILE), "%s%s", UNALIGNED_WORD_ASM_OP, ADDR)
#define ASM_OUTPUT_DWARF_ADDR_CONST(FILE,RTX) \
do \
{ \
fprintf ((FILE), "%s", UNALIGNED_WORD_ASM_OP); \
output_addr_const ((FILE), (RTX)); \
fputc ('\n', (FILE)); \
} \
while (0)
/* The ARM development system defines __main. */
#define NAME__MAIN "__gccmain"
#define SYMBOL__MAIN __gccmain
......
......@@ -103,23 +103,6 @@ rdata_section () \
} \
while (0)
/* Don't know how to order these. UNALIGNED_WORD_ASM_OP is in
dwarf2.out. */
#define UNALIGNED_WORD_ASM_OP "\t.4byte\t"
#define ASM_OUTPUT_DWARF2_ADDR_CONST(FILE,ADDR) \
fprintf ((FILE), "%s%s", UNALIGNED_WORD_ASM_OP, ADDR)
#define ASM_OUTPUT_DWARF_ADDR_CONST(FILE,RTX) \
do \
{ \
fprintf ((FILE), "%s", UNALIGNED_WORD_ASM_OP); \
output_addr_const ((FILE), (RTX)); \
fputc ('\n', (FILE)); \
} \
while (0)
/* The ARM development system defines __main. */
#define NAME__MAIN "__gccmain"
#define SYMBOL__MAIN __gccmain
......
......@@ -561,48 +561,9 @@ toc_section () \
use '.long' or '.word', but that aligns to a 4-byte boundary which
is not what is required. So we define a million macros... */
#define ASM_OUTPUT_DWARF_ADDR_VAR(FILE, LABEL, LENGTH) \
do { fprintf ((FILE), "\t.vbyte\t%d,", LENGTH); \
assemble_name (FILE, LABEL); \
} while (0)
#define ASM_OUTPUT_DWARF_DELTA_VAR(FILE, LABEL1, LABEL2, LENGTH) \
do { fprintf ((FILE), "\t.vbyte\t%d,", LENGTH); \
assemble_name (FILE, LABEL1); \
fprintf (FILE, "-"); \
assemble_name (FILE, LABEL2); \
} while (0)
#define ASM_OUTPUT_DWARF_DELTA2(FILE, LABEL1, LABEL2) \
ASM_OUTPUT_DWARF_DELTA_VAR (FILE, LABEL1, LABEL2, 2)
#define ASM_OUTPUT_DWARF_DELTA4(FILE, LABEL1, LABEL2) \
ASM_OUTPUT_DWARF_DELTA_VAR (FILE, LABEL1, LABEL2, 4)
#define ASM_OUTPUT_DWARF_DELTA(FILE, LABEL1, LABEL2) \
ASM_OUTPUT_DWARF_DELTA_VAR (FILE, LABEL1, LABEL2, DWARF_OFFSET_SIZE)
#define ASM_OUTPUT_DWARF_ADDR_DELTA(FILE, LABEL1, LABEL2) \
ASM_OUTPUT_DWARF_DELTA_VAR (FILE, LABEL1, LABEL2, \
POINTER_SIZE / BITS_PER_UNIT)
#define ASM_OUTPUT_DWARF_ADDR(FILE, LABEL) \
ASM_OUTPUT_DWARF_ADDR_VAR (FILE, LABEL, POINTER_SIZE / BITS_PER_UNIT)
#define ASM_OUTPUT_DWARF_DATA4(FILE, VALUE) \
fprintf ((FILE), "\t.vbyte\t4,0x%x", (unsigned) (VALUE))
#define ASM_OUTPUT_DWARF_DATA2(FILE, VALUE) \
fprintf ((FILE), "\t.vbyte\t2,0x%x", (unsigned) (VALUE))
#define ASM_OUTPUT_DWARF_OFFSET4(FILE, LABEL) \
ASM_OUTPUT_DWARF_ADDR_VAR (FILE, LABEL, 4)
#define ASM_OUTPUT_DWARF_OFFSET(FILE, LABEL) \
ASM_OUTPUT_DWARF_ADDR_VAR (FILE, LABEL, DWARF_OFFSET_SIZE)
/* dwarf2out keys off this, but we don't have to have a real definition. */
#define UNALIGNED_INT_ASM_OP bite_me
#define UNALIGNED_SHORT_ASM_OP "\t.vbyte\t2,"
#define UNALIGNED_INT_ASM_OP "\t.vbyte\t4,"
#define UNALIGNED_DOUBLE_INT_ASM_OP "\t.vbyte\t8,"
/* Output before instructions. */
#define TEXT_SECTION_ASM_OP "\t.csect .text[PR]"
......
......@@ -871,36 +871,6 @@ do { \
} \
} while (0)
/* This is how to output an assembler line defining an address
constant for the dwarf call unwinding information.
For -mrelocatable, we mark all addresses that need to be fixed up
in the .fixup section. */
#define ASM_OUTPUT_DWARF_ADDR(FILE,LABEL) \
do { \
if (TARGET_RELOCATABLE) \
{ \
char buf[256]; \
\
ASM_GENERATE_INTERNAL_LABEL (buf, "LCP", fixuplabelno); \
fixuplabelno++; \
ASM_OUTPUT_LABEL (FILE, buf); \
fprintf (FILE, "\t.%dbyte\t", POINTER_SIZE / BITS_PER_UNIT); \
assemble_name (FILE, LABEL); \
fprintf (FILE, "\n"); \
fprintf (FILE, "\t.section \".fixup\",\"aw\"\n"); \
ASM_OUTPUT_ALIGN (FILE, 2); \
fprintf (FILE, "\t.long\t"); \
assemble_name (FILE, buf); \
fprintf (FILE, "\n\t.previous\n"); \
} \
else \
{ \
fprintf (FILE, "\t.%dbyte\t", POINTER_SIZE / BITS_PER_UNIT); \
assemble_name (FILE, LABEL); \
} \
} while (0)
/* This is the end of what might become sysv4.h. */
/* Allow stabs and dwarf, for now, make stabs the default debugging type,
......
......@@ -124,33 +124,6 @@ crtbegin.o%s \
#undef ASM_IDENTIFY_GCC
#define ASM_IDENTIFY_GCC(FILE)
/* Define the names of various pseudo-ops used by the Sparc/svr4 assembler.
??? If ints are 64 bits then UNALIGNED_INT_ASM_OP (defined elsewhere) is
misnamed. These should all refer to explicit sizes (half/word/xword?),
anything other than short/int/long/etc. */
#define UNALIGNED_LONGLONG_ASM_OP "\t.uaxword\t"
/* DWARF stuff. */
#define ASM_OUTPUT_DWARF_ADDR(FILE, LABEL) \
do { \
fprintf ((FILE), "%s", UNALIGNED_LONGLONG_ASM_OP); \
assemble_name ((FILE), (LABEL)); \
fprintf ((FILE), "\n"); \
} while (0)
#define ASM_OUTPUT_DWARF_ADDR_CONST(FILE, RTX) \
do { \
fprintf ((FILE), "%s", UNALIGNED_LONGLONG_ASM_OP); \
output_addr_const ((FILE), (RTX)); \
fputc ('\n', (FILE)); \
} while (0)
/* ??? Not sure if this should be 4 or 8 bytes. 4 works for now. */
#define ASM_OUTPUT_DWARF_REF(FILE, LABEL) \
do { \
fprintf ((FILE), "%s", UNALIGNED_INT_ASM_OP); \
assemble_name ((FILE), (LABEL)); \
fprintf ((FILE), "\n"); \
} while (0)
/* Define the names of various pseudo-ops used by the Sparc/svr4 assembler. */
#define UNALIGNED_DOUBLE_INT_ASM_OP "\t.uaxword\t"
This diff is collapsed. Click to expand it.
/* Dwarf2 assembler output helper routines.
Copyright (C) 2001 Free Software Foundation, Inc.
This file is part of GNU CC.
GNU CC is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
GNU CC is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with GNU CC; see the file COPYING. If not, write to
the Free Software Foundation, 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
/* ??? Format checking yields "null format string" warnings, which is
the way these routines are signaled that there is no associated
debug information. So the attributes are commented out. */
extern void dw2_asm_output_data PARAMS ((int, unsigned HOST_WIDE_INT,
const char *, ...))
/* ATTRIBUTE_PRINTF_3 */;
extern void dw2_asm_output_delta PARAMS ((int, const char *,
const char *,
const char *, ...))
/* ATTRIBUTE_PRINTF_4 */;
extern void dw2_asm_output_offset PARAMS ((int, const char *,
const char *, ...))
/* ATTRIBUTE_PRINTF_3 */;
extern void dw2_asm_output_pcrel PARAMS ((int, const char *,
const char *, ...))
/* ATTRIBUTE_PRINTF_3 */;
extern void dw2_asm_output_addr_rtx PARAMS ((int, rtx,
const char *, ...))
/* ATTRIBUTE_PRINTF_3 */;
extern void dw2_asm_output_nstring PARAMS ((const char *, size_t,
const char *, ...))
/* ATTRIBUTE_PRINTF_3 */;
extern void dw2_asm_output_data_uleb128 PARAMS ((unsigned HOST_WIDE_INT,
const char *, ...))
/* ATTRIBUTE_PRINTF_2 */;
extern void dw2_asm_output_data_sleb128 PARAMS ((HOST_WIDE_INT,
const char *, ...))
/* ATTRIBUTE_PRINTF_2 */;
extern void dw2_asm_output_delta_uleb128 PARAMS ((const char *, const char *,
const char *, ...))
/* ATTRIBUTE_PRINTF_3 */;
extern void dw2_asm_output_delta_sleb128 PARAMS ((const char *, const char *,
const char *, ...))
/* ATTRIBUTE_PRINTF_3 */;
extern int size_of_uleb128 PARAMS ((unsigned HOST_WIDE_INT));
extern int size_of_sleb128 PARAMS ((HOST_WIDE_INT));
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment