OSDN Git Service

* config.gcc: Update OpenBSD targets.
[pf3gnuchains/gcc-fork.git] / gcc / config / mips / elf.h
index a13c864..8967b3d 100644 (file)
@@ -1,99 +1,36 @@
-/* Definitions of target machine for GNU compiler.  MIPS R3000 version with
-   GOFAST floating point library.
-   Copyright (C) 1994, 1997, 1999, 2000, 2002, 2003
+/* Target macros for mips*-elf targets.
+   Copyright (C) 1994, 1997, 1999, 2000, 2002, 2003, 2004, 2007
    Free Software Foundation, Inc.
 
-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.  */
-
-/* Use ELF.  */
-#define DBX_DEBUGGING_INFO 1
-#define DWARF2_DEBUGGING_INFO 1
-
-#undef  PREFERRED_DEBUGGING_TYPE
-#define PREFERRED_DEBUGGING_TYPE DWARF2_DEBUG
-
-#undef  SUBTARGET_ASM_DEBUGGING_SPEC
-#define SUBTARGET_ASM_DEBUGGING_SPEC "-g0"
-
-/* Biggest alignment supported by the object file format of this
-   machine.  Use this macro to limit the alignment which can be
-   specified using the `__attribute__ ((aligned (N)))' construct.  If
-   not defined, the default value is `BIGGEST_ALIGNMENT'.  */
-
-#undef  MAX_OFILE_ALIGNMENT
-#define MAX_OFILE_ALIGNMENT (32768*8)
-
-/* Switch into a generic section.  */
-#undef  TARGET_ASM_NAMED_SECTION
-#define TARGET_ASM_NAMED_SECTION  default_elf_asm_named_section
-
-/* The following macro defines the format used to output the second
-   operand of the .type assembler directive.  Different svr4 assemblers
-   expect various different forms for this operand.  The one given here
-   is just a default.  You may need to override it in your machine-
-   specific tm.h file (depending upon the particulars of your assembler).  */
-
-#define TYPE_OPERAND_FMT        "@%s"
-
-/* Define the strings used for the special svr4 .type and .size directives.
-   These strings generally do not vary from one system running svr4 to
-   another, but if a given system (e.g. m88k running svr) needs to use
-   different pseudo-op names for these, they may be overridden in the
-   file which includes this one.  */
-
-#undef TYPE_ASM_OP
-#undef SIZE_ASM_OP
-#define TYPE_ASM_OP    "\t.type\t"
-#define SIZE_ASM_OP    "\t.size\t"
-
-/* If defined, a C expression whose value is a string containing the
-   assembler operation to identify the following data as
-   uninitialized global data.  If not defined, and neither
-   `ASM_OUTPUT_BSS' nor `ASM_OUTPUT_ALIGNED_BSS' are defined,
-   uninitialized global data will be output in the data section if
-   `-fno-common' is passed, otherwise `ASM_OUTPUT_COMMON' will be
-   used.  */
-
-#ifndef BSS_SECTION_ASM_OP
-#define BSS_SECTION_ASM_OP     "\t.section\t.bss"
-#endif
-
-/* Like `ASM_OUTPUT_BSS' except takes the required alignment as a
-   separate, explicit argument.  If you define this macro, it is used
-   in place of `ASM_OUTPUT_BSS', and gives you more flexibility in
-   handling the required alignment of the variable.  The alignment is
-   specified as the number of bits.
-
-   Try to use function `asm_output_aligned_bss' defined in file
-   `varasm.c' when defining this macro.  */
-#ifndef ASM_OUTPUT_ALIGNED_BSS
-#define ASM_OUTPUT_ALIGNED_BSS(FILE, DECL, NAME, SIZE, ALIGN) \
-do {                                                                   \
-  if (SIZE > 0 && SIZE <= (unsigned HOST_WIDE_INT)mips_section_threshold)\
-    named_section (0, ".sbss", 0);                                     \
-  else                                                                 \
-    bss_section ();                                                    \
-  ASM_OUTPUT_ALIGN (FILE, floor_log2 (ALIGN / BITS_PER_UNIT));         \
-  last_assemble_variable_decl = DECL;                                  \
-  ASM_DECLARE_OBJECT_NAME (FILE, NAME, DECL);                          \
-  ASM_OUTPUT_SKIP (FILE, SIZE ? SIZE : 1);                             \
-} while (0)
-#endif
+along with GCC; see the file COPYING3.  If not see
+<http://www.gnu.org/licenses/>.  */
+
+/* MIPS assemblers don't have the usual .set foo,bar construct;
+   .set is used for assembler options instead.  */
+#undef SET_ASM_OP
+#define ASM_OUTPUT_DEF(FILE, LABEL1, LABEL2)                   \
+  do                                                           \
+    {                                                          \
+      fputc ('\t', FILE);                                      \
+      assemble_name (FILE, LABEL1);                            \
+      fputs (" = ", FILE);                                     \
+      assemble_name (FILE, LABEL2);                            \
+      fputc ('\n', FILE);                                      \
+    }                                                          \
+  while (0)
 
 #undef ASM_DECLARE_OBJECT_NAME
 #define ASM_DECLARE_OBJECT_NAME mips_declare_object_name
@@ -101,52 +38,7 @@ do {                                                                        \
 #undef ASM_FINISH_DECLARE_OBJECT
 #define ASM_FINISH_DECLARE_OBJECT mips_finish_declare_object
 
-#define ASM_OUTPUT_DEF(FILE,LABEL1,LABEL2)                            \
- do { fputc ( '\t', FILE);                                            \
-      assemble_name (FILE, LABEL1);                                   \
-      fputs ( " = ", FILE);                                           \
-      assemble_name (FILE, LABEL2);                                   \
-      fputc ( '\n', FILE);                                            \
- } while (0)
-
-/* Note about .weak vs. .weakext
-   The mips native assemblers support .weakext, but not .weak.
-   mips-elf gas supports .weak, but not .weakext.
-   mips-elf gas has been changed to support both .weak and .weakext,
-   but until that support is generally available, the 'if' below
-   should serve.  */
-
-#undef  ASM_WEAKEN_LABEL
-#define ASM_WEAKEN_LABEL(FILE,NAME) ASM_OUTPUT_WEAK_ALIAS(FILE,NAME,0)
-#define ASM_OUTPUT_WEAK_ALIAS(FILE,NAME,VALUE) \
- do {                                          \
-  if (TARGET_GAS)                               \
-      fputs ("\t.weak\t", FILE);               \
-  else                                          \
-      fputs ("\t.weakext\t", FILE);            \
-  assemble_name (FILE, NAME);                  \
-  if (VALUE)                                   \
-    {                                          \
-      fputc (' ', FILE);                       \
-      assemble_name (FILE, VALUE);             \
-    }                                          \
-  fputc ('\n', FILE);                          \
- } while (0)
-
-#define MAKE_DECL_ONE_ONLY(DECL) (DECL_WEAK (DECL) = 1)
-
-/* On elf, we *do* have support for the .init and .fini sections, and we
-   can put stuff in there to be executed before and after `main'.  We let
-   crtstuff.c and other files know this by defining the following symbols.
-   The definitions say how to change sections to the .init and .fini
-   sections.  This is the same for all known elf assemblers.  */
-
-#undef  INIT_SECTION_ASM_OP
-#define INIT_SECTION_ASM_OP     "\t.section\t.init"
-#undef  FINI_SECTION_ASM_OP
-#define FINI_SECTION_ASM_OP     "\t.section\t.fini"
-
-/* Don't set the target flags, this is done by the linker script */
+/* Leave the linker script to choose the appropriate libraries.  */
 #undef  LIB_SPEC
 #define LIB_SPEC ""
 
@@ -156,5 +48,6 @@ do {                                                                 \
 #undef  ENDFILE_SPEC
 #define ENDFILE_SPEC "crtend%O%s crtn%O%s"
 
-/* We support #pragma.  */
-#define HANDLE_SYSV_PRAGMA 1
+#define NO_IMPLICIT_EXTERN_C 1
+
+#define HANDLE_PRAGMA_PACK_PUSH_POP 1