X-Git-Url: http://git.sourceforge.jp/view?a=blobdiff_plain;f=gcc%2Fdefaults.h;h=b6fe9ec8c860bfe03c7a041f1d5c1d132f0735e4;hb=b956b40bae47f39073c0482db3dd1a041277b237;hp=7234206e7d2565fd7b55af0f8b0756f2b82d4821;hpb=b4534d9a4ea5e9c4359114bc3bbcf31fb8941652;p=pf3gnuchains%2Fgcc-fork.git diff --git a/gcc/defaults.h b/gcc/defaults.h index 7234206e7d2..b6fe9ec8c86 100644 --- a/gcc/defaults.h +++ b/gcc/defaults.h @@ -1,10 +1,9 @@ /* Definitions of various defaults for how to do assembler output (most of which are designed to be appropriate for GAS or for some BSD assembler). - - Written by Ron Guilmette (rfg@ncd.com) - -Copyright (C) 1992 Free Software Foundation, Inc. + Copyright (C) 1992, 1996, 1997, 1998, 1999, 2000 + Free Software Foundation, Inc. + Contributed by Ron Guilmette (rfg@monkeys.com) This file is part of GNU CC. @@ -20,7 +19,11 @@ 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, 675 Mass Ave, Cambridge, MA 02139, USA. */ +the Free Software Foundation, 59 Temple Place - Suite 330, +Boston, MA 02111-1307, USA. */ + +#ifndef GCC_DEFAULTS_H +#define GCC_DEFAULTS_H /* Store in OUTPUT a string (made with alloca) containing an assembler-name for a local static variable or function named NAME. @@ -41,7 +44,7 @@ the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */ #endif #ifndef ASM_STABD_OP -#define ASM_STABD_OP ".stabd" +#define ASM_STABD_OP "\t.stabd\t" #endif /* This is how to output an element of a case-vector that is absolute. @@ -55,17 +58,10 @@ do { fprintf (FILE, "\t%s\t", ASM_LONG); \ } while (0) #endif -/* This is how to output an element of a case-vector that is relative. - Some targets don't use this, but we have to define it anyway. */ - -#ifndef ASM_OUTPUT_ADDR_DIFF_ELT -#define ASM_OUTPUT_ADDR_DIFF_ELT(FILE, VALUE, REL) \ -do { fprintf (FILE, "\t%s\t", ASM_SHORT); \ - ASM_GENERATE_INTERNAL_LABEL (FILE, "L", (VALUE)); \ - fputc ('-', FILE); \ - ASM_GENERATE_INTERNAL_LABEL (FILE, "L", (REL)); \ - fputc ('\n', FILE); \ - } while (0) +/* Provide default for ASM_OUTPUT_ALTERNATE_LABEL_NAME. */ +#ifndef ASM_OUTPUT_ALTERNATE_LABEL_NAME +#define ASM_OUTPUT_ALTERNATE_LABEL_NAME(FILE,INSN) \ +do { ASM_OUTPUT_LABEL(FILE,LABEL_ALTERNATE_NAME (INSN)); } while (0) #endif /* choose a reasonable default for ASM_OUTPUT_ASCII. */ @@ -74,11 +70,11 @@ do { fprintf (FILE, "\t%s\t", ASM_SHORT); \ #define ASM_OUTPUT_ASCII(MYFILE, MYSTRING, MYLENGTH) \ do { \ FILE *_hide_asm_out_file = (MYFILE); \ - unsigned char *_hide_p = (unsigned char *) (MYSTRING); \ + const unsigned char *_hide_p = (const unsigned char *) (MYSTRING); \ int _hide_thissize = (MYLENGTH); \ { \ FILE *asm_out_file = _hide_asm_out_file; \ - unsigned char *p = _hide_p; \ + const unsigned char *p = _hide_p; \ int thissize = _hide_thissize; \ int i; \ fprintf (asm_out_file, "\t.ascii \""); \ @@ -88,7 +84,7 @@ do { fprintf (FILE, "\t%s\t", ASM_SHORT); \ register int c = p[i]; \ if (c == '\"' || c == '\\') \ putc ('\\', asm_out_file); \ - if (c >= ' ' && c < 0177) \ + if (ISPRINT(c)) \ putc (c, asm_out_file); \ else \ { \ @@ -98,8 +94,7 @@ do { fprintf (FILE, "\t%s\t", ASM_SHORT); \ The Vax assembler fails to stop reading the escape \ after three digits, so this is the only way we \ can get it to parse the data properly. */ \ - if (i < thissize - 1 \ - && p[i + 1] >= '0' && p[i + 1] <= '9') \ + if (i < thissize - 1 && ISDIGIT(p[i + 1])) \ fprintf (asm_out_file, "\"\n\t.ascii \""); \ } \ } \ @@ -118,3 +113,144 @@ do { fprintf (FILE, "\t%s\t", ASM_SHORT); \ #define ASM_IDENTIFY_LANGUAGE(FILE) output_lang_identify (FILE); #endif #endif + +/* This is how we tell the assembler to equate two values. */ +#ifdef SET_ASM_OP +#ifndef ASM_OUTPUT_DEF +#define ASM_OUTPUT_DEF(FILE,LABEL1,LABEL2) \ + do { fprintf ((FILE), "%s", SET_ASM_OP); \ + assemble_name (FILE, LABEL1); \ + fprintf (FILE, ","); \ + assemble_name (FILE, LABEL2); \ + fprintf (FILE, "\n"); \ + } while (0) +#endif +#endif + +/* This is how to output a reference to a user-level label named NAME. */ + +#ifndef ASM_OUTPUT_LABELREF +#define ASM_OUTPUT_LABELREF(FILE,NAME) asm_fprintf ((FILE), "%U%s", (NAME)) +#endif + +/* Allow target to print debug info labels specially. This is useful for + VLIW targets, since debug info labels should go into the middle of + instruction bundles instead of breaking them. */ + +#ifndef ASM_OUTPUT_DEBUG_LABEL +#define ASM_OUTPUT_DEBUG_LABEL(FILE, PREFIX, NUM) \ + ASM_OUTPUT_INTERNAL_LABEL (FILE, PREFIX, NUM) +#endif + +/* This determines whether or not we support weak symbols. */ +#ifndef SUPPORTS_WEAK +#ifdef ASM_WEAKEN_LABEL +#define SUPPORTS_WEAK 1 +#else +#define SUPPORTS_WEAK 0 +#endif +#endif + +/* If the target supports weak symbols, define TARGET_ATTRIBUTE_WEAK to + provide a weak attribute. Else define it to nothing. + + This would normally belong in gansidecl.h, but SUPPORTS_WEAK is + not available at that time. + + Note, this is only for use by target files which we know are to be + compiled by GCC. */ +#ifndef TARGET_ATTRIBUTE_WEAK +# if SUPPORTS_WEAK +# define TARGET_ATTRIBUTE_WEAK __attribute__ ((weak)) +# else +# define TARGET_ATTRIBUTE_WEAK +# endif +#endif + +/* If we have a definition of INCOMING_RETURN_ADDR_RTX, assume that + the rest of the DWARF 2 frame unwind support is also provided. */ +#if !defined (DWARF2_UNWIND_INFO) && defined (INCOMING_RETURN_ADDR_RTX) +#define DWARF2_UNWIND_INFO 1 +#endif + +#if defined (DWARF2_UNWIND_INFO) && !defined (EH_FRAME_SECTION) +# if defined (EH_FRAME_SECTION_ASM_OP) +# define EH_FRAME_SECTION() eh_frame_section(); +# else + /* If we aren't using crtstuff to run ctors, don't use it for EH. */ +# if defined (ASM_OUTPUT_SECTION_NAME) && defined (ASM_OUTPUT_CONSTRUCTOR) +# define EH_FRAME_SECTION_ASM_OP "\t.section\t.eh_frame,\"aw\"" +# define EH_FRAME_SECTION() \ + do { named_section (NULL_TREE, ".eh_frame", 0); } while (0) +# endif +# endif +#endif + +/* By default, we generate a label at the beginning and end of the + text section, and compute the size of the text section by + subtracting the two. However, on some platforms that doesn't + work, and we use the section itself, rather than a label at the + beginning of it, to indicate the start of the section. On such + platforms, define this to zero. */ +#ifndef DWARF2_GENERATE_TEXT_SECTION_LABEL +#define DWARF2_GENERATE_TEXT_SECTION_LABEL 1 +#endif + +/* Supply a default definition for PROMOTE_PROTOTYPES. */ +#ifndef PROMOTE_PROTOTYPES +#define PROMOTE_PROTOTYPES 0 +#endif + +/* Number of hardware registers that go into the DWARF-2 unwind info. + If not defined, equals FIRST_PSEUDO_REGISTER */ + +#ifndef DWARF_FRAME_REGISTERS +#define DWARF_FRAME_REGISTERS FIRST_PSEUDO_REGISTER +#endif + +/* Default sizes for base C types. If the sizes are different for + your target, you should override these values by defining the + appropriate symbols in your tm.h file. */ + +#ifndef CHAR_TYPE_SIZE +#define CHAR_TYPE_SIZE BITS_PER_UNIT +#endif + +#ifndef SHORT_TYPE_SIZE +#define SHORT_TYPE_SIZE (BITS_PER_UNIT * MIN ((UNITS_PER_WORD + 1) / 2, 2)) +#endif + +#ifndef INT_TYPE_SIZE +#define INT_TYPE_SIZE BITS_PER_WORD +#endif + +#ifndef LONG_TYPE_SIZE +#define LONG_TYPE_SIZE BITS_PER_WORD +#endif + +#ifndef LONG_LONG_TYPE_SIZE +#define LONG_LONG_TYPE_SIZE (BITS_PER_WORD * 2) +#endif + +#ifndef WCHAR_TYPE_SIZE +#define WCHAR_TYPE_SIZE INT_TYPE_SIZE +#endif + +#ifndef WCHAR_UNSIGNED +#define WCHAR_UNSIGNED 0 +#endif + +#ifndef FLOAT_TYPE_SIZE +#define FLOAT_TYPE_SIZE BITS_PER_WORD +#endif + +#ifndef DOUBLE_TYPE_SIZE +#define DOUBLE_TYPE_SIZE (BITS_PER_WORD * 2) +#endif + +#ifndef LONG_DOUBLE_TYPE_SIZE +#define LONG_DOUBLE_TYPE_SIZE (BITS_PER_WORD * 2) +#endif + +#endif /* GCC_DEFAULTS_H */ +