X-Git-Url: http://git.sourceforge.jp/view?a=blobdiff_plain;f=gcc%2Fconfig%2Fsparc%2Fsysv4.h;h=1c60debf85064e1b3f2a8114942a765d7bf4ac17;hb=9a6bab399ae16ec1bdac462648e005b368f3b373;hp=d9c0be7e2081d1ba43a206963487c59bee9b0a7c;hpb=bb2821c04b6546dd5f014b99ab45d6ef5c55f874;p=pf3gnuchains%2Fgcc-fork.git diff --git a/gcc/config/sparc/sysv4.h b/gcc/config/sparc/sysv4.h index d9c0be7e208..1c60debf850 100644 --- a/gcc/config/sparc/sysv4.h +++ b/gcc/config/sparc/sysv4.h @@ -1,38 +1,27 @@ -/* Target definitions for GNU compiler for Sparc running System V.4 - Copyright (C) 1991, 1992, 1995, 1996, 1997, 1998, 2000 +/* Target definitions for GNU compiler for SPARC running System V.4 + Copyright (C) 1991, 1992, 1995, 1996, 1997, 1998, 2000, 2002, 2007 Free Software Foundation, Inc. Contributed by Ron Guilmette (rfg@monkeys.com). -This file is part of GNU CC. +This file is part of GCC. -GNU CC is free software; you can redistribute it and/or modify +GCC 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) +the Free Software Foundation; either version 3, or (at your option) any later version. -GNU CC is distributed in the hope that it will be useful, +GCC 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. */ +along with GCC; see the file COPYING3. If not see +. */ -#include "sparc/sparc.h" - -/* Undefine some symbols which are defined in "sparc.h" but which are - appropriate only for SunOS 4.x, and not for svr4. */ - -#undef WORD_SWITCH_TAKES_ARG -#undef ASM_OUTPUT_SOURCE_LINE -#undef SELECT_SECTION -#undef ASM_DECLARE_FUNCTION_NAME -#undef TEXT_SECTION_ASM_OP -#undef DATA_SECTION_ASM_OP - -#include "svr4.h" +#ifndef TARGET_VERSION +#define TARGET_VERSION fprintf (stderr, " (sparc ELF)"); +#endif /* ??? Put back the SIZE_TYPE/PTRDIFF_TYPE definitions set by sparc.h. Why, exactly, is svr4.h messing with this? Seems like the chip @@ -46,11 +35,11 @@ Boston, MA 02111-1307, USA. */ /* Undefined some symbols which are defined in "svr4.h" but which are appropriate only for typical svr4 systems, but not for the specific - case of svr4 running on a Sparc. */ + case of svr4 running on a SPARC. */ #undef INIT_SECTION_ASM_OP #undef FINI_SECTION_ASM_OP -#undef CONST_SECTION_ASM_OP +#undef READONLY_DATA_SECTION_ASM_OP #undef TYPE_OPERAND_FMT #undef PUSHSECTION_FORMAT #undef STRING_ASM_OP @@ -58,68 +47,38 @@ Boston, MA 02111-1307, USA. */ #undef SKIP_ASM_OP #undef SET_ASM_OP /* Has no equivalent. See ASM_OUTPUT_DEF below. */ -/* Provide a set of pre-definitions and pre-assertions appropriate for - the Sparc running svr4. __svr4__ is our extension. */ - -#define CPP_PREDEFINES \ -"-Dsparc -Dunix -D__svr4__ -Asystem=unix -Asystem=svr4" - -/* The native assembler can't compute differences between symbols in different - sections when generating pic code, so we must put jump tables in the - text section. */ -/* But we now defer the tables to the end of the function, so we make - this 0 to not confuse the branch shortening code. */ -#define JUMP_TABLES_IN_TEXT_SECTION 0 - /* Pass -K to the assembler when PIC. */ #undef ASM_SPEC #define ASM_SPEC \ "%{v:-V} %{Qy:} %{!Qn:-Qy} %{n} %{T} %{Ym,*} %{Yd,*} %{Wa,*:%*} \ - %{fpic:-K PIC} %{fPIC:-K PIC} %(asm_cpu)" - -/* Must use data section for relocatable constants when pic. */ -#undef SELECT_RTX_SECTION -#define SELECT_RTX_SECTION(MODE,RTX,ALIGN) \ -{ \ - if (flag_pic && symbolic_operand ((RTX), (MODE))) \ - data_section (); \ - else \ - const_section (); \ -} - -/* Define the names of various pseudo-op used by the Sparc/svr4 assembler. + %{fpic|fPIC|fpie|fPIE:-K PIC} %(asm_cpu)" + +/* Define the names of various pseudo-op used by the SPARC/svr4 assembler. Note that many of these are different from the typical pseudo-ops used by most svr4 assemblers. That is probably due to a (misguided?) attempt - to keep the Sparc/svr4 assembler somewhat compatible with the Sparc/SunOS + to keep the SPARC/svr4 assembler somewhat compatible with the SPARC/SunOS assembler. */ #define STRING_ASM_OP "\t.asciz\t" #define COMMON_ASM_OP "\t.common\t" #define SKIP_ASM_OP "\t.skip\t" -#define UNALIGNED_DOUBLE_INT_ASM_OP "\t.uaxword\t" -#define UNALIGNED_INT_ASM_OP "\t.uaword\t" -#define UNALIGNED_SHORT_ASM_OP "\t.uahalf\t" #define PUSHSECTION_ASM_OP "\t.pushsection\t" #define POPSECTION_ASM_OP "\t.popsection" -/* This is defined in sparc.h but is not used by svr4.h. */ -#undef ASM_LONG -#define ASM_LONG ".long" - /* This is the format used to print the second operand of a .type pseudo-op - for the Sparc/svr4 assembler. */ + for the SPARC/svr4 assembler. */ #define TYPE_OPERAND_FMT "#%s" /* This is the format used to print a .pushsection pseudo-op (and its operand) - for the Sparc/svr4 assembler. */ + for the SPARC/svr4 assembler. */ #define PUSHSECTION_FORMAT "%s\"%s\"\n" #undef ASM_OUTPUT_CASE_LABEL #define ASM_OUTPUT_CASE_LABEL(FILE, PREFIX, NUM, JUMPTABLE) \ do { ASM_OUTPUT_ALIGN ((FILE), Pmode == SImode ? 2 : 3); \ - ASM_OUTPUT_INTERNAL_LABEL ((FILE), PREFIX, NUM); \ + (*targetm.asm_out.internal_label) ((FILE), PREFIX, NUM); \ } while (0) /* This is how to equate one symbol to another symbol. The syntax used is @@ -134,22 +93,6 @@ do { ASM_OUTPUT_ALIGN ((FILE), Pmode == SImode ? 2 : 3); \ fprintf (FILE, "\n"); \ } while (0) -/* Define how the Sparc registers should be numbered for Dwarf output. - The numbering provided here should be compatible with the native - svr4 SDB debugger in the Sparc/svr4 reference port. The numbering - is as follows: - - Assembly name gcc internal regno Dwarf regno - ---------------------------------------------------------- - g0-g7 0-7 0-7 - o0-o7 8-15 8-15 - l0-l7 16-23 16-23 - i0-i7 24-31 24-31 - f0-f31 32-63 40-71 -*/ - -#define DBX_REGISTER_NUMBER(REGNO) ((REGNO) < 32 ? (REGNO) : (REGNO) + 8) - /* A set of symbol definitions for assembly pseudo-ops which will get us switched to various sections of interest. These are used in all places where we simply want to switch to a section, and @@ -159,7 +102,7 @@ do { ASM_OUTPUT_ALIGN ((FILE), Pmode == SImode ? 2 : 3); \ #define TEXT_SECTION_ASM_OP "\t.section\t\".text\"" #define DATA_SECTION_ASM_OP "\t.section\t\".data\"" #define BSS_SECTION_ASM_OP "\t.section\t\".bss\"" -#define CONST_SECTION_ASM_OP "\t.section\t\".rodata\"" +#define READONLY_DATA_SECTION_ASM_OP "\t.section\t\".rodata\"" #define INIT_SECTION_ASM_OP "\t.section\t\".init\"" #define FINI_SECTION_ASM_OP "\t.section\t\".fini\"" @@ -187,11 +130,6 @@ do { ASM_OUTPUT_ALIGN ((FILE), Pmode == SImode ? 2 : 3); \ #undef TARGET_ASM_NAMED_SECTION #define TARGET_ASM_NAMED_SECTION sparc_elf_asm_named_section -/* A C statement (sans semicolon) to output to the stdio stream - FILE the assembler definition of uninitialized global DECL named - NAME whose size is SIZE bytes and alignment is ALIGN bytes. - Try to use asm_output_aligned_bss to implement this macro. */ - #undef ASM_OUTPUT_ALIGNED_BSS #define ASM_OUTPUT_ALIGNED_BSS(FILE, DECL, NAME, SIZE, ALIGN) \ asm_output_aligned_bss (FILE, DECL, NAME, SIZE, ALIGN)