summaryrefslogtreecommitdiff
path: root/gcc/config/sparc/sol2.h
diff options
context:
space:
mode:
authorrms <rms@138bc75d-0d04-0410-961f-82ee72b054a4>1992-07-23 06:09:43 +0000
committerrms <rms@138bc75d-0d04-0410-961f-82ee72b054a4>1992-07-23 06:09:43 +0000
commite3225e4cc941f951cdbd24a4a38da66fcdb37ed4 (patch)
treef3d50b556a28f575ddbb416d36f7c8d1f40e7101 /gcc/config/sparc/sol2.h
parent751dfdce1290b3e36a74bcdbef87303112728822 (diff)
downloadgcc-e3225e4cc941f951cdbd24a4a38da66fcdb37ed4.tar.gz
Entire file is new except for defining MD_STARTFILE_PREFIX.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@1670 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/config/sparc/sol2.h')
-rw-r--r--gcc/config/sparc/sol2.h152
1 files changed, 143 insertions, 9 deletions
diff --git a/gcc/config/sparc/sol2.h b/gcc/config/sparc/sol2.h
index 1a2cb0013b5..9c915b51f39 100644
--- a/gcc/config/sparc/sol2.h
+++ b/gcc/config/sparc/sol2.h
@@ -1,7 +1,7 @@
-/* Target definitions for GNU compiler for Sparc running Solaris 2.x
- Copyright (C) 1992 Free Software Foundation, Inc.
-
- Written by Ron Guilmette (rfg@ncd.com).
+/* Definitions of target machine for GNU compiler, for SPARC running Solaris 2
+ Copyright 1992 Free Software Foundation, Inc.
+ Contributed by Ron Guilmette (rfg@ncd.com) and
+ David V. Henkel-Wallace (gumby@cygnus.com).
This file is part of GNU CC.
@@ -19,17 +19,151 @@ 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. */
-/* This is basically just a Sparc running svr4. */
+#define NO_UNDERSCORES 1
+/* Supposedly the same as vanilla sparc svr4, except for the stuff below: */
#include "sparcv4.h"
-/* Solaris 2.x on a Sparc uses BSD stabs, not DWARF. */
+#undef CPP_PREDEFINES
+#define CPP_PREDEFINES \
+ "-Dsun -Dsparc -Dunix -D__svr4__ -Asystem(unix) -Acpu(sparc) -Amachine(sparc)"
+
+/* The sun bundled assembler doesn't accept -Yd, (and neither does gas).
+ It's safe to pass -s always, even if -g is not used. */
+#undef ASM_SPEC
+#define ASM_SPEC \
+ "%{V} %{v:%{!V:-V}} %{Qy:} %{!Qn:-Qy} %{n} %{T} %{Ym,*} %{Wa,*:%*} -s"
+
+/* However it appears that Solaris 2.0 uses the same reg numbering as
+ the old BSD-style system did. */
+
+#undef DBX_REGISTER_NUMBER
+/* Same as sparc.h */
+#define DBX_REGISTER_NUMBER(REGNO) (REGNO)
+
+#define PREFERRED_DEBUGGING_TYPE DBX_DEBUG
+
+#define DBX_BLOCKS_FUNCTION_RELATIVE 1
+
+/* "gcc2_compiled." must be a .stabs, not an ordinary symbol, or GDB won't
+ see it. Furthermore, since GDB reads the input piecemeal, starting
+ with each N_SO, it's a lot easier if the gcc2 flag symbol is *after*
+ the N_SO rather than before it. So we emit an N_OPT stab here. */
+
+#define ASM_IDENTIFY_GCC(FILE) /* Do nothing */
+
+#define ASM_IDENTIFY_GCC_AFTER_SOURCE(FILE) \
+ fputs ("\t.stabs\t\"gcc2_compiled.\", 0x3c, 0, 0, 0\n", FILE)
+
+#undef CTORS_SECTION_ASM_OP
+#undef DTORS_SECTION_ASM_OP
+
+#if 0 /* These seems unnecessary; the ones in sparcv4.h look right. */
+#undef TEXT_SECTION_ASM_OP
+#undef DATA_SECTION_ASM_OP
+#undef BSS_SECTION_ASM_OP
+#undef CONST_SECTION_ASM_OP
+#undef INIT_SECTION_ASM_OP
+
+#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 INIT_SECTION_ASM_OP "\t.section\t\".init\""
+#endif
+
+#define CTORS_SECTION_ASM_OP "\t.section\t\".ctors\",#alloc,#execinstr\n"
+#define DTORS_SECTION_ASM_OP "\t.section\t\".dtors\",#alloc,#execinstr\n"
+
+/* The Solaris 2 assembler doesn't support the .string directive,
+ so disable it. */
-#undef DWARF_DEBUGGING_INFO
-#define DBX_DEBUGGING_INFO
+/* This doesn't work, despite the comment in svr4.h:
+#undef STRING_LIMIT
+#define STRING_LIMIT 0
+*/
+
+#undef ASM_OUTPUT_ASCII
+#define ASM_OUTPUT_DWARF_STRING(FILE,P) assemble_string(FILE, P)
+
+/* The Solaris 2 assembler uses .skip, not .zero, so put this back. */
+#undef ASM_OUTPUT_SKIP
+#define ASM_OUTPUT_SKIP(FILE,SIZE) \
+ fprintf (FILE, "\t.skip %u\n", (SIZE))
+
+#undef ASM_OUTPUT_ALIGNED_LOCAL
+#define ASM_OUTPUT_ALIGNED_LOCAL(FILE, NAME, SIZE, ALIGN) \
+do { \
+ fputs ("\t.local\t", (FILE)); \
+ assemble_name ((FILE), (NAME)); \
+ putc ('\n', (FILE)); \
+ ASM_OUTPUT_ALIGNED_COMMON (FILE, NAME, SIZE, ALIGN); \
+} while (0)
+
+#undef COMMON_ASM_OP
+#define COMMON_ASM_OP "\t.common"
+
+/* This is how to output a definition of an internal numbered label where
+ PREFIX is the class of label and NUM is the number within the class. */
+
+#undef ASM_OUTPUT_INTERNAL_LABEL
+#define ASM_OUTPUT_INTERNAL_LABEL(FILE,PREFIX,NUM) \
+ fprintf (FILE, ".L%s%d:\n", PREFIX, NUM)
+
+/* This is how to output a reference to an internal numbered label where
+ PREFIX is the class of label and NUM is the number within the class. */
+
+#undef ASM_OUTPUT_INTERNAL_LABELREF
+#define ASM_OUTPUT_INTERNAL_LABELREF(FILE,PREFIX,NUM) \
+ fprintf (FILE, ".L%s%d", PREFIX, NUM)
+
+/* This is how to store into the string LABEL
+ the symbol_ref name of an internal numbered label where
+ PREFIX is the class of label and NUM is the number within the class.
+ This is suitable for output with `assemble_name'. */
+
+#undef ASM_GENERATE_INTERNAL_LABEL
+#define ASM_GENERATE_INTERNAL_LABEL(LABEL,PREFIX,NUM) \
+ sprintf (LABEL, "*.L%s%d", PREFIX, NUM)
+
+/* in Solaris 2.0, linenos are relative to the current fn. */
+#undef ASM_OUTPUT_SOURCE_LINE
+#define ASM_OUTPUT_SOURCE_LINE(file, line) \
+ { static int sym_lineno = 1; \
+ fprintf (file, ".stabn 68,0,%d,.LM%d-%s\n.LM%d:\n", \
+ line, sym_lineno, \
+ IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (current_function_decl)),\
+ sym_lineno); \
+ sym_lineno += 1; }
+
+/* But, to make this work, we have to output the stabs for the function
+ name *first*... */
+#define DBX_FUNCTION_FIRST
+
+
+/* We don't use the standard svr4 STARTFILE_SPEC because it's wrong for us.
+ We don't use the standard LIB_SPEC only because we don't yet support c++ */
/* If we cannot find the GNU *crt*.o files in the STANDARD_STARTFILE_PREFIX
directory, our fallback strategy must be to look for these files instead
in the Sun C 2.0 directory. */
-#define MD_STARTFILE_PREFIX_1 "/opt/SUNWste/SC2.0/"
+#undef MD_STARTFILE_PREFIX
+#define MD_STARTFILE_PREFIX "/opt/SUNWste/SC2.0/"
+
+#undef STARTFILE_SPEC
+#define STARTFILE_SPEC "%{!shared: \
+ %{!symbolic: \
+ %{pg:crt1.o%s}%{!pg:%{p:mcrt1.o%s}%{!p:crt1.o%s}} \
+ %{pg:gmon.o%s} \
+ %{pg:crti.o%s}%{!pg:crti.o%s} \
+ %{ansi:/usr/ccs/lib/values-Xc.o%s} \
+ %{!ansi: \
+ %{traditional:/usr/ccs/lib/values-Xt.o%s} \
+ %{!traditional:/usr/ccs/lib/values-Xa.o%s}}}}"
+
+#undef LIB_SPEC
+#define LIB_SPEC \
+ "%{!shared:%{!symbolic:-lc}} \
+ %{!shared:%{!symbolic:%{pg:crtn.o%s}%{!pg:crtn.o%s}}}"