OSDN Git Service

2001-11-14 David O'Brien <obrien@FreeBSD.org>
[pf3gnuchains/gcc-fork.git] / gcc / config / sparc / aout.h
index 217430e..fd84d75 100644 (file)
@@ -19,5 +19,84 @@ 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.  */
 
-#undef CPP_PREDEFINES
+/* Print subsidiary information on the compiler version in use.  */
+
+#define TARGET_VERSION fprintf (stderr, " (sparc)");
+
+/* Names to predefine in the preprocessor for this target machine.
+   ??? It would be nice to not include any subtarget specific values here,
+   however there's no way to portably provide subtarget values to
+   CPP_PREFINES.  Also, -D values in CPP_SUBTARGET_SPEC don't get turned into
+   foo, __foo and __foo__.  */
+
 #define CPP_PREDEFINES "-Dsparc -Acpu=sparc -Amachine=sparc"
+
+/* These compiler options take an argument.  We ignore -target for now.  */
+
+#define WORD_SWITCH_TAKES_ARG(STR)                             \
+ (DEFAULT_WORD_SWITCH_TAKES_ARG (STR)                          \
+  || !strcmp (STR, "target") || !strcmp (STR, "assert"))
+
+/* This is defined differently for v9 in a cover file.  */
+#define SELECT_SECTION(T,RELOC,ALIGN)                                  \
+{                                                                      \
+  if (TREE_CODE (T) == VAR_DECL)                                       \
+    {                                                                  \
+      if (TREE_READONLY (T) && ! TREE_SIDE_EFFECTS (T)                 \
+         && DECL_INITIAL (T)                                           \
+         && (DECL_INITIAL (T) == error_mark_node                       \
+             || TREE_CONSTANT (DECL_INITIAL (T)))                      \
+         && DECL_ALIGN (T) <= MAX_TEXT_ALIGN                           \
+         && ! (flag_pic && ((RELOC) || SUNOS4_SHARED_LIBRARIES)))      \
+       text_section ();                                                \
+      else                                                             \
+       data_section ();                                                \
+    }                                                                  \
+  else if (TREE_CODE (T) == CONSTRUCTOR)                               \
+    {                                                                  \
+      if (flag_pic && ((RELOC) || SUNOS4_SHARED_LIBRARIES))            \
+       data_section ();                                                \
+    }                                                                  \
+  else if (TREE_CODE_CLASS (TREE_CODE (T)) == 'c')                     \
+    {                                                                  \
+      if ((TREE_CODE (T) == STRING_CST && flag_writable_strings)       \
+         || TYPE_ALIGN (TREE_TYPE (T)) > MAX_TEXT_ALIGN                \
+         || (flag_pic && ((RELOC) || SUNOS4_SHARED_LIBRARIES)))        \
+       data_section ();                                                \
+      else                                                             \
+       text_section ();                                                \
+    }                                                                  \
+}
+
+/* Output the label for a function definition.  */
+
+#define ASM_DECLARE_FUNCTION_NAME(FILE, NAME, DECL)                    \
+do {                                                                   \
+  ASM_DECLARE_RESULT (FILE, DECL_RESULT (DECL));                       \
+  ASM_OUTPUT_LABEL (FILE, NAME);                                       \
+} while (0)
+
+/* Output before read-only data.  */
+
+#define TEXT_SECTION_ASM_OP "\t.text"
+
+/* Output before writable data.  */
+
+#define DATA_SECTION_ASM_OP "\t.data"
+
+/* How to renumber registers for dbx and gdb.  In the flat model, the frame
+   pointer is really %i7.  */
+
+#define DBX_REGISTER_NUMBER(REGNO) \
+  (TARGET_FLAT && REGNO == FRAME_POINTER_REGNUM ? 31 : REGNO)
+
+/* This is how to output a note to DBX telling it the line number
+   to which the following sequence of instructions corresponds.
+
+   This is needed for SunOS 4.0, and should not hurt for 3.2
+   versions either.  */
+#define ASM_OUTPUT_SOURCE_LINE(file, line)             \
+  { static int sym_lineno = 1;                         \
+    fprintf (file, ".stabn 68,0,%d,LM%d\nLM%d:\n",     \
+            line, sym_lineno, sym_lineno);             \
+    sym_lineno += 1; }