--- gcc/config/sparc/sp64-elf.h 2018/04/24 18:21:35 1.1 +++ gcc/config/sparc/sp64-elf.h 2018/04/24 18:29:01 1.1.1.2 @@ -1,6 +1,6 @@ /* Definitions of target machine for GNU compiler, for Sun SPARC-V9 on a hypothetical elf format machine. - Copyright (C) 1994 Free Software Foundation, Inc. + Copyright (C) 1994, 1995 Free Software Foundation, Inc. Contributed by Doug Evans, dje@cygnus.com. This file is part of GNU CC. @@ -17,7 +17,8 @@ GNU General Public License for more deta 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. */ /* This is a v9 only compiler. -mv8 is not expected to work. If you want a v8/v9 compiler, this isn't the place to do it. */ @@ -37,6 +38,9 @@ the Free Software Foundation, 675 Mass A #include "sparc/sol2.h" +#undef TARGET_VERSION +#define TARGET_VERSION fprintf (stderr, " (sparc64-elf)") + /* A v9 compiler with stack-bias, 32 bit integers and 64 bit pointers, in a Medium/Anywhere code model environment. */ @@ -44,10 +48,12 @@ the Free Software Foundation, 675 Mass A #define TARGET_DEFAULT \ (MASK_V9 + MASK_STACK_BIAS + MASK_MEDANY + MASK_PTR64 + MASK_HARD_QUAD + MASK_EPILOGUE + MASK_FPU) +/* __svr4__ is used by the C library */ #undef CPP_PREDEFINES -#define CPP_PREDEFINES \ - "-Dsun -Dsparc -Dunix -D__svr4__ -D__sparc_v9__ \ - -Asystem(unix) -Asystem(svr4) -Acpu(sparc64) -Amachine(sparc64)" +#define CPP_PREDEFINES "\ +-D__sparc__ -D__sparc_v9__ -D__svr4__ \ +-Acpu(sparc64) -Amachine(sparc64) \ +" #undef CPP_SPEC #define CPP_SPEC "\ @@ -58,27 +64,31 @@ the Free Software Foundation, 675 Mass A #undef MD_EXEC_PREFIX #undef MD_STARTFILE_PREFIX -/* Use the default (for now). */ -#undef STARTFILE_SPEC - -/* Use the default (for now). */ -#undef LIB_SPEC +#undef ASM_SPEC +#define ASM_SPEC "\ +%{V} %{v:%{!V:-V}} -s %{fpic:-K PIC} %{fPIC:-K PIC} \ +" /* This is taken from sol2.h. */ #undef LINK_SPEC #define LINK_SPEC "\ -%{!nostdlib:%{!r*:%{!e*:-e _start}}} \ -%{h*} %{V} %{v:%{!V:-V}} \ -%{b} %{Wl,*:%*} \ -%{static:-dn -Bstatic} \ -%{shared:-G -dy} \ -%{symbolic:-Bsymbolic -G -dy} \ -%{G:-G} \ -%{YP,*} \ -%{R*} \ -%{Qy:} %{!Qn:-Qy} \ +%{V} %{v:%{!V:-V}} \ " +/* We need something a little simpler for the embedded environment. + Profiling doesn't really work yet so we just copy the default. */ +#undef STARTFILE_SPEC +#define STARTFILE_SPEC "\ +%{!shared:%{pg:gcrt0.o%s}%{!pg:%{p:mcrt0.o%s}%{!p:crt0.o%s}}} \ +crtbegin.o%s \ +" + +#undef ENDFILE_SPEC +#define ENDFILE_SPEC "%{!nostartfiles:crtend.o%s}" + +/* Use the default (for now). */ +#undef LIB_SPEC + /* Unfortunately, svr4.h redefines these so we have to restore them to their original values in sparc.h. */ /* ??? It might be possible to eventually get svr4.h to do the right thing. */ @@ -120,22 +130,24 @@ the Free Software Foundation, 675 Mass A /* DWARF stuff. */ -#define ASM_OUTPUT_DWARF_ADDR(FILE,LABEL) \ - do { fprintf ((FILE), "\t%s\t", UNALIGNED_LONGLONG_ASM_OP); \ - assemble_name (FILE, LABEL); \ - fprintf (FILE, "\n"); \ - } while (0) - -#define ASM_OUTPUT_DWARF_ADDR_CONST(FILE,RTX) \ - do { \ - fprintf ((FILE), "\t%s\t", UNALIGNED_LONGLONG_ASM_OP); \ - output_addr_const ((FILE), (RTX)); \ - fputc ('\n', (FILE)); \ - } while (0) +#define ASM_OUTPUT_DWARF_ADDR(FILE, LABEL) \ +do { \ + fprintf ((FILE), "\t%s\t", UNALIGNED_LONGLONG_ASM_OP); \ + assemble_name ((FILE), (LABEL)); \ + fprintf ((FILE), "\n"); \ +} while (0) + +#define ASM_OUTPUT_DWARF_ADDR_CONST(FILE, RTX) \ +do { \ + fprintf ((FILE), "\t%s\t", 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), "\t%s\t", UNALIGNED_INT_ASM_OP); \ - assemble_name (FILE, LABEL); \ - fprintf (FILE, "\n"); \ - } while (0) +#define ASM_OUTPUT_DWARF_REF(FILE, LABEL) \ +do { \ + fprintf ((FILE), "\t%s\t", UNALIGNED_INT_ASM_OP); \ + assemble_name ((FILE), (LABEL)); \ + fprintf ((FILE), "\n"); \ +} while (0)