gnu-user.h: Copy from linux.h.
authorJoseph Myers <joseph@codesourcery.com>
Mon, 11 Apr 2011 18:44:32 +0000 (19:44 +0100)
committerJoseph Myers <jsm28@gcc.gnu.org>
Mon, 11 Apr 2011 18:44:32 +0000 (19:44 +0100)
* config/i386/gnu-user.h: Copy from linux.h.  Update comments.
(LINK_EMULATION, GLIBC_DYNAMIC_LINKER): Remove.
(SUBTARGET_EXTRA_SPECS): Use GNU_USER_LINK_EMULATION and
GNU_USER_DYNAMIC_LINKER.
(MD_UNWIND_SUPPORT, REG_NAME): Remove.
* config/i386/gnu-user64.h: Copy from linux64.h.  Update comments.
(GLIBC_DYNAMIC_LINKER32, GLIBC_DYNAMIC_LINKER64): Remove.
(LINK_SPEC): Use GNU_USER_DYNAMIC_LINKER32 and
GNU_USER_DYNAMIC_LINKER64.
(MD_UNWIND_SUPPORT, REG_NAME): Remove.
* config/i386/kfreebsd-gnu.h (LINK_EMULATION): Change to
GNU_USER_LINK_EMULATION.
* config/i386/linux.h (TARGET_ASM_FILE_START_FILE_DIRECTIVE,
DEFAULT_PCC_STRUCT_RETURN, TARGET_TLS_DIRECT_SEG_REFS_DEFAULT,
ASM_COMMENT_START, DBX_REGISTER_NUMBER, NO_PROFILE_COUNTERS,
MCOUNT_NAME, SUBTARGET_FRAME_POINTER_REQUIRED, SIZE_TYPE,
PTRDIFF_TYPE, WCHAR_TYPE, WCHAR_TYPE_SIZE, TARGET_OS_CPP_BUILTINS,
CPP_SPEC, CC1_SPEC): Remove.
(LINK_EMULATION): Change to GNU_USER_LINK_EMULATION.
(GNU_USER_DYNAMIC_LINKER): Define.
(ASM_SPEC, SUBTARGET_EXTRA_SPECS, LINK_SPEC, ENDFILE_SPEC,
ASM_OUTPUT_ALIGNED_BSS, ASM_OUTPUT_MAX_SKIP_ALIGN,
ASM_MAYBE_OUTPUT_ENCODED_ADDR_RTX, CRT_GET_RFIB_DATA,
LIBGCC2_HAS_TF_MODE, LIBGCC2_TF_CEXT, TF_SIZE,
TARGET_ASM_FILE_END, STACK_CHECK_MOVING_SP,
STACK_CHECK_STATIC_BUILTIN, TARGET_THREAD_SSP_OFFSET,
TARGET_CAN_SPLIT_STACK, TARGET_THREAD_SPLIT_STACK_OFFSET): Remove.
* config/i386/linux64.h (TARGET_OS_CPP_BUILTINS, CPP_SPEC,
CC1_SPEC, DEFAULT_PCC_STRUCT_RETURN,
TARGET_TLS_DIRECT_SEG_REFS_DEFAULT, SPEC_32, SPEC_64, ASM_SPEC,
LINK_SPEC, ENDFILE_SPEC, MULTILIB_DEFAULTS, LIBGCC2_HAS_TF_MODE,
LIBGCC2_TF_CEXT, TF_SIZE, TARGET_ASM_FILE_END): Remove.
(GNU_USER_DYNAMIC_LINKER32, GNU_USER_DYNAMIC_LINKER64): Define.
(STACK_CHECK_MOVING_SP, STACK_CHECK_STATIC_BUILTIN,
TARGET_THREAD_SSP_OFFSET, TARGET_CAN_SPLIT_STACK,
TARGET_THREAD_SPLIT_STACK_OFFSET): Remove.
* config/i386/gnu.h (GLIBC_DYNAMIC_LINKER): Change to
GNU_USER_DYNAMIC_LINKER.
* config/kfreebsd-gnu.h (GLIBC_DYNAMIC_LINKER): Change to
GNU_USER_DYNAMIC_LINKER.  Unconditionally undefine and redefine.
* config/knetbsd-gnu.h (GLIBC_DYNAMIC_LINKER): Change to
GNU_USER_DYNAMIC_LINKER.  Unconditionally undefine and redefine.
* config/kopensolaris-gnu.h (GLIBC_DYNAMIC_LINKER): Change to
GNU_USER_DYNAMIC_LINKER.  Unconditionally undefine and redefine.
* config.gcc (i[34567]86-*-linux* | i[34567]86-*-kfreebsd*-gnu |
i[34567]86-*-knetbsd*-gnu | i[34567]86-*-gnu* |
i[34567]86-*-kopensolaris*-gnu, x86_64-*-linux* |
x86_64-*-kfreebsd*-gnu | x86_64-*-knetbsd*-gnu): Use the new
headers.

From-SVN: r172271

gcc/ChangeLog
gcc/config.gcc
gcc/config/i386/gnu-user.h [new file with mode: 0644]
gcc/config/i386/gnu-user64.h [new file with mode: 0644]
gcc/config/i386/gnu.h
gcc/config/i386/kfreebsd-gnu.h
gcc/config/i386/linux.h
gcc/config/i386/linux64.h
gcc/config/kfreebsd-gnu.h
gcc/config/knetbsd-gnu.h
gcc/config/kopensolaris-gnu.h

index 36ca4804b1274b2ef42e2dab72b49fd97e7ddc78..70dfcf8ba7ceef8bee20d3bfb2f00403138be55b 100644 (file)
@@ -1,3 +1,55 @@
+2011-04-11  Joseph Myers  <joseph@codesourcery.com>
+
+       * config/i386/gnu-user.h: Copy from linux.h.  Update comments.
+       (LINK_EMULATION, GLIBC_DYNAMIC_LINKER): Remove.
+       (SUBTARGET_EXTRA_SPECS): Use GNU_USER_LINK_EMULATION and
+       GNU_USER_DYNAMIC_LINKER.
+       (MD_UNWIND_SUPPORT, REG_NAME): Remove.
+       * config/i386/gnu-user64.h: Copy from linux64.h.  Update comments.
+       (GLIBC_DYNAMIC_LINKER32, GLIBC_DYNAMIC_LINKER64): Remove.
+       (LINK_SPEC): Use GNU_USER_DYNAMIC_LINKER32 and
+       GNU_USER_DYNAMIC_LINKER64.
+       (MD_UNWIND_SUPPORT, REG_NAME): Remove.
+       * config/i386/kfreebsd-gnu.h (LINK_EMULATION): Change to
+       GNU_USER_LINK_EMULATION.
+       * config/i386/linux.h (TARGET_ASM_FILE_START_FILE_DIRECTIVE,
+       DEFAULT_PCC_STRUCT_RETURN, TARGET_TLS_DIRECT_SEG_REFS_DEFAULT,
+       ASM_COMMENT_START, DBX_REGISTER_NUMBER, NO_PROFILE_COUNTERS,
+       MCOUNT_NAME, SUBTARGET_FRAME_POINTER_REQUIRED, SIZE_TYPE,
+       PTRDIFF_TYPE, WCHAR_TYPE, WCHAR_TYPE_SIZE, TARGET_OS_CPP_BUILTINS,
+       CPP_SPEC, CC1_SPEC): Remove.
+       (LINK_EMULATION): Change to GNU_USER_LINK_EMULATION.
+       (GNU_USER_DYNAMIC_LINKER): Define.
+       (ASM_SPEC, SUBTARGET_EXTRA_SPECS, LINK_SPEC, ENDFILE_SPEC,
+       ASM_OUTPUT_ALIGNED_BSS, ASM_OUTPUT_MAX_SKIP_ALIGN,
+       ASM_MAYBE_OUTPUT_ENCODED_ADDR_RTX, CRT_GET_RFIB_DATA,
+       LIBGCC2_HAS_TF_MODE, LIBGCC2_TF_CEXT, TF_SIZE,
+       TARGET_ASM_FILE_END, STACK_CHECK_MOVING_SP,
+       STACK_CHECK_STATIC_BUILTIN, TARGET_THREAD_SSP_OFFSET,
+       TARGET_CAN_SPLIT_STACK, TARGET_THREAD_SPLIT_STACK_OFFSET): Remove.
+       * config/i386/linux64.h (TARGET_OS_CPP_BUILTINS, CPP_SPEC,
+       CC1_SPEC, DEFAULT_PCC_STRUCT_RETURN,
+       TARGET_TLS_DIRECT_SEG_REFS_DEFAULT, SPEC_32, SPEC_64, ASM_SPEC,
+       LINK_SPEC, ENDFILE_SPEC, MULTILIB_DEFAULTS, LIBGCC2_HAS_TF_MODE,
+       LIBGCC2_TF_CEXT, TF_SIZE, TARGET_ASM_FILE_END): Remove.
+       (GNU_USER_DYNAMIC_LINKER32, GNU_USER_DYNAMIC_LINKER64): Define.
+       (STACK_CHECK_MOVING_SP, STACK_CHECK_STATIC_BUILTIN,
+       TARGET_THREAD_SSP_OFFSET, TARGET_CAN_SPLIT_STACK,
+       TARGET_THREAD_SPLIT_STACK_OFFSET): Remove.
+       * config/i386/gnu.h (GLIBC_DYNAMIC_LINKER): Change to
+       GNU_USER_DYNAMIC_LINKER.
+       * config/kfreebsd-gnu.h (GLIBC_DYNAMIC_LINKER): Change to
+       GNU_USER_DYNAMIC_LINKER.  Unconditionally undefine and redefine.
+       * config/knetbsd-gnu.h (GLIBC_DYNAMIC_LINKER): Change to
+       GNU_USER_DYNAMIC_LINKER.  Unconditionally undefine and redefine.
+       * config/kopensolaris-gnu.h (GLIBC_DYNAMIC_LINKER): Change to
+       GNU_USER_DYNAMIC_LINKER.  Unconditionally undefine and redefine.
+       * config.gcc (i[34567]86-*-linux* | i[34567]86-*-kfreebsd*-gnu |
+       i[34567]86-*-knetbsd*-gnu | i[34567]86-*-gnu* |
+       i[34567]86-*-kopensolaris*-gnu, x86_64-*-linux* |
+       x86_64-*-kfreebsd*-gnu | x86_64-*-knetbsd*-gnu): Use the new
+       headers.
+
 2011-04-11  Kai Tietz  <ktietz@redhat.com>
 
        PR target/9601
index 920349fd9f81b03c9e0fd2b797833d8011f39e0e..a95d46ee22da12c7760bb669d88906e2fbbb318f 100644 (file)
@@ -1207,7 +1207,7 @@ i[34567]86-*-linux* | i[34567]86-*-kfreebsd*-gnu | i[34567]86-*-knetbsd*-gnu | i
                # Assume modern glibc
                default_gnu_indirect_function=yes
                if test x$enable_targets = xall; then
-                       tm_file="${tm_file} i386/x86-64.h i386/linux64.h"
+                       tm_file="${tm_file} i386/x86-64.h i386/gnu-user64.h i386/linux64.h"
                        tm_defines="${tm_defines} TARGET_BI_ARCH=1"
                        tmake_file="${tmake_file} i386/t-linux64"
                        need_64bit_hwint=yes
@@ -1227,19 +1227,19 @@ i[34567]86-*-linux* | i[34567]86-*-kfreebsd*-gnu | i[34567]86-*-knetbsd*-gnu | i
                                ;;
                        esac
                else
-                       tm_file="${tm_file} i386/linux.h"
+                       tm_file="${tm_file} i386/gnu-user.h i386/linux.h"
                fi
                ;;
-       i[34567]86-*-knetbsd*-gnu) tm_file="${tm_file} i386/linux.h knetbsd-gnu.h i386/knetbsd-gnu.h" ;;
-       i[34567]86-*-kfreebsd*-gnu) tm_file="${tm_file} i386/linux.h kfreebsd-gnu.h i386/kfreebsd-gnu.h" ;;
-       i[34567]86-*-kopensolaris*-gnu) tm_file="${tm_file} i386/linux.h kopensolaris-gnu.h i386/kopensolaris-gnu.h" ;;
-       i[34567]86-*-gnu*) tm_file="$tm_file i386/linux.h gnu.h i386/gnu.h";;
+       i[34567]86-*-knetbsd*-gnu) tm_file="${tm_file} i386/gnu-user.h i386/linux.h knetbsd-gnu.h i386/knetbsd-gnu.h" ;;
+       i[34567]86-*-kfreebsd*-gnu) tm_file="${tm_file} i386/gnu-user.h i386/linux.h kfreebsd-gnu.h i386/kfreebsd-gnu.h" ;;
+       i[34567]86-*-kopensolaris*-gnu) tm_file="${tm_file} i386/gnu-user.h i386/linux.h kopensolaris-gnu.h i386/kopensolaris-gnu.h" ;;
+       i[34567]86-*-gnu*) tm_file="$tm_file i386/gnu-user.h i386/linux.h gnu.h i386/gnu.h";;
        esac
        tmake_file="${tmake_file} i386/t-crtstuff i386/t-crtpc i386/t-crtfm t-dfprules"
        ;;
 x86_64-*-linux* | x86_64-*-kfreebsd*-gnu | x86_64-*-knetbsd*-gnu)
        tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h gnu-user.h linux.h glibc-stdint.h \
-                i386/x86-64.h i386/linux64.h"
+                i386/x86-64.h i386/gnu-user64.h i386/linux64.h"
        case ${target} in
        x86_64-*-linux*)
          default_gnu_indirect_function=glibc-2011 ;;
diff --git a/gcc/config/i386/gnu-user.h b/gcc/config/i386/gnu-user.h
new file mode 100644 (file)
index 0000000..76a18ac
--- /dev/null
@@ -0,0 +1,204 @@
+/* Definitions for Intel 386 systems using GNU userspace.
+   Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2001, 2002, 2004, 2005,
+   2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
+   Contributed by Eric Youngdale.
+   Modified for stabs-in-ELF by H.J. Lu.
+
+This file is part of GCC.
+
+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 3, or (at your option)
+any later version.
+
+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 GCC; see the file COPYING3.  If not see
+<http://www.gnu.org/licenses/>.  */
+
+/* Output at beginning of assembler file.  */
+/* The .file command should always begin the output.  */
+#define TARGET_ASM_FILE_START_FILE_DIRECTIVE true
+
+/* The svr4 ABI for the i386 says that records and unions are returned
+   in memory.  */
+#undef DEFAULT_PCC_STRUCT_RETURN
+#define DEFAULT_PCC_STRUCT_RETURN 1
+
+/* We arrange for the whole %gs segment to map the tls area.  */
+#undef TARGET_TLS_DIRECT_SEG_REFS_DEFAULT
+#define TARGET_TLS_DIRECT_SEG_REFS_DEFAULT MASK_TLS_DIRECT_SEG_REFS
+
+#undef ASM_COMMENT_START
+#define ASM_COMMENT_START "#"
+
+#undef DBX_REGISTER_NUMBER
+#define DBX_REGISTER_NUMBER(n) \
+  (TARGET_64BIT ? dbx64_register_map[n] : svr4_dbx_register_map[n])
+
+/* Output assembler code to FILE to call the profiler.
+   To the best of my knowledge, no GNU userspace libc has required the label
+   argument to mcount.  */
+
+#define NO_PROFILE_COUNTERS    1
+
+#undef MCOUNT_NAME
+#define MCOUNT_NAME "mcount"
+
+/* The GLIBC version of mcount for the x86 assumes that there is a
+   frame, so we cannot allow profiling without a frame pointer.  */
+
+#undef SUBTARGET_FRAME_POINTER_REQUIRED
+#define SUBTARGET_FRAME_POINTER_REQUIRED crtl->profile
+
+#undef SIZE_TYPE
+#define SIZE_TYPE "unsigned int"
+#undef PTRDIFF_TYPE
+#define PTRDIFF_TYPE "int"
+  
+#undef WCHAR_TYPE
+#define WCHAR_TYPE "long int"
+   
+#undef WCHAR_TYPE_SIZE
+#define WCHAR_TYPE_SIZE BITS_PER_WORD
+    
+#define TARGET_OS_CPP_BUILTINS()               \
+  do                                           \
+    {                                          \
+       LINUX_TARGET_OS_CPP_BUILTINS();         \
+    }                                          \
+  while (0)
+
+#undef CPP_SPEC
+#define CPP_SPEC "%{posix:-D_POSIX_SOURCE} %{pthread:-D_REENTRANT}"
+
+#undef CC1_SPEC
+#define CC1_SPEC "%(cc1_cpu) %{profile:-p}"
+
+/* Provide a LINK_SPEC appropriate for GNU userspace.  Here we provide support
+   for the special GCC options -static and -shared, which allow us to
+   link things in one of these three modes by applying the appropriate
+   combinations of options at link-time.
+
+   When the -shared link option is used a final link is not being
+   done.  */
+
+#undef  ASM_SPEC
+#define ASM_SPEC \
+  "--32 %{!mno-sse2avx:%{mavx:-msse2avx}} %{msse2avx:%{!mavx:-msse2avx}}"
+
+#undef  SUBTARGET_EXTRA_SPECS
+#define SUBTARGET_EXTRA_SPECS \
+  { "link_emulation", GNU_USER_LINK_EMULATION },\
+  { "dynamic_linker", GNU_USER_DYNAMIC_LINKER }
+
+#undef LINK_SPEC
+#define LINK_SPEC "-m %(link_emulation) %{shared:-shared} \
+  %{!shared: \
+    %{!static: \
+      %{rdynamic:-export-dynamic} \
+      -dynamic-linker %(dynamic_linker)} \
+      %{static:-static}}"
+
+/* Similar to standard GNU userspace, but adding -ffast-math support.  */
+#undef  ENDFILE_SPEC
+#define ENDFILE_SPEC \
+  "%{ffast-math|funsafe-math-optimizations:crtfastmath.o%s} \
+   %{mpc32:crtprec32.o%s} \
+   %{mpc64:crtprec64.o%s} \
+   %{mpc80:crtprec80.o%s} \
+   %{shared|pie:crtendS.o%s;:crtend.o%s} crtn.o%s"
+
+/* 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.  */
+
+#define ASM_OUTPUT_ALIGNED_BSS(FILE, DECL, NAME, SIZE, ALIGN) \
+  asm_output_aligned_bss (FILE, DECL, NAME, SIZE, ALIGN)
+
+/* A C statement to output to the stdio stream FILE an assembler
+   command to advance the location counter to a multiple of 1<<LOG
+   bytes if it is within MAX_SKIP bytes.
+
+   This is used to align code labels according to Intel recommendations.  */
+
+#ifdef HAVE_GAS_MAX_SKIP_P2ALIGN
+#define ASM_OUTPUT_MAX_SKIP_ALIGN(FILE,LOG,MAX_SKIP)                   \
+  do {                                                                 \
+    if ((LOG) != 0) {                                                  \
+      if ((MAX_SKIP) == 0) fprintf ((FILE), "\t.p2align %d\n", (LOG)); \
+      else {                                                           \
+       fprintf ((FILE), "\t.p2align %d,,%d\n", (LOG), (MAX_SKIP));     \
+       /* Make sure that we have at least 8 byte alignment if > 8 byte \
+          alignment is preferred.  */                                  \
+       if ((LOG) > 3                                                   \
+           && (1 << (LOG)) > ((MAX_SKIP) + 1)                          \
+           && (MAX_SKIP) >= 7)                                         \
+         fputs ("\t.p2align 3\n", (FILE));                             \
+      }                                                                        \
+    }                                                                  \
+  } while (0)
+#endif
+
+/* Handle special EH pointer encodings.  Absolute, pc-relative, and
+   indirect are handled automatically.  */
+#define ASM_MAYBE_OUTPUT_ENCODED_ADDR_RTX(FILE, ENCODING, SIZE, ADDR, DONE) \
+  do {                                                                 \
+    if ((SIZE) == 4 && ((ENCODING) & 0x70) == DW_EH_PE_datarel)                \
+      {                                                                        \
+        fputs (ASM_LONG, FILE);                        \
+        assemble_name (FILE, XSTR (ADDR, 0));                          \
+       fputs (((ENCODING) & DW_EH_PE_indirect ? "@GOT" : "@GOTOFF"), FILE); \
+        goto DONE;                                                     \
+      }                                                                        \
+  } while (0)
+
+/* Used by crtstuff.c to initialize the base of data-relative relocations.
+   These are GOT relative on x86, so return the pic register.  */
+#ifdef __PIC__
+#define CRT_GET_RFIB_DATA(BASE)                        \
+  {                                            \
+    register void *ebx_ __asm__("ebx");                \
+    BASE = ebx_;                               \
+  }
+#else
+#define CRT_GET_RFIB_DATA(BASE)                                                \
+  __asm__ ("call\t.LPR%=\n"                                            \
+          ".LPR%=:\n\t"                                                \
+          "pop{l}\t%0\n\t"                                             \
+          /* Due to a GAS bug, this cannot use EAX.  That encodes      \
+             smaller than the traditional EBX, which results in the    \
+             offset being off by one.  */                              \
+          "add{l}\t{$_GLOBAL_OFFSET_TABLE_+[.-.LPR%=],%0"              \
+                  "|%0,_GLOBAL_OFFSET_TABLE_+(.-.LPR%=)}"              \
+          : "=d"(BASE))
+#endif
+
+/* Put all *tf routines in libgcc.  */
+#undef LIBGCC2_HAS_TF_MODE
+#define LIBGCC2_HAS_TF_MODE 1
+#define LIBGCC2_TF_CEXT q
+#define TF_SIZE 113
+
+#define TARGET_ASM_FILE_END file_end_indicate_exec_stack
+
+/* The stack pointer needs to be moved while checking the stack.  */
+#define STACK_CHECK_MOVING_SP 1
+
+/* Static stack checking is supported by means of probes.  */
+#define STACK_CHECK_STATIC_BUILTIN 1
+
+#ifdef TARGET_LIBC_PROVIDES_SSP
+/* i386 glibc provides __stack_chk_guard in %gs:0x14.  */
+#define TARGET_THREAD_SSP_OFFSET       0x14
+
+/* We steal the last transactional memory word.  */
+#define TARGET_CAN_SPLIT_STACK
+#define TARGET_THREAD_SPLIT_STACK_OFFSET 0x30
+#endif
diff --git a/gcc/config/i386/gnu-user64.h b/gcc/config/i386/gnu-user64.h
new file mode 100644 (file)
index 0000000..6148182
--- /dev/null
@@ -0,0 +1,118 @@
+/* Definitions for AMD x86-64 using GNU userspace.
+   Copyright (C) 2001, 2002, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
+   Free Software Foundation, Inc.
+   Contributed by Jan Hubicka <jh@suse.cz>, based on linux.h.
+
+This file is part of GCC.
+
+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 3, or (at your option)
+any later version.
+
+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.
+
+Under Section 7 of GPL version 3, you are granted additional
+permissions described in the GCC Runtime Library Exception, version
+3.1, as published by the Free Software Foundation.
+
+You should have received a copy of the GNU General Public License and
+a copy of the GCC Runtime Library Exception along with this program;
+see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+<http://www.gnu.org/licenses/>.  */
+
+#define TARGET_OS_CPP_BUILTINS()                               \
+  do                                                           \
+    {                                                          \
+       LINUX_TARGET_OS_CPP_BUILTINS();                         \
+    }                                                          \
+  while (0)
+
+#undef CPP_SPEC
+#define CPP_SPEC "%{posix:-D_POSIX_SOURCE} %{pthread:-D_REENTRANT}"
+
+#undef CC1_SPEC
+#define CC1_SPEC "%(cc1_cpu) %{profile:-p}"
+
+/* The svr4 ABI for the i386 says that records and unions are returned
+   in memory.  In the 64bit compilation we will turn this flag off in
+   ix86_option_override_internal, as we never do pcc_struct_return
+   scheme on this target.  */
+#undef DEFAULT_PCC_STRUCT_RETURN
+#define DEFAULT_PCC_STRUCT_RETURN 1
+
+/* We arrange for the whole %fs segment to map the tls area.  */
+#undef TARGET_TLS_DIRECT_SEG_REFS_DEFAULT
+#define TARGET_TLS_DIRECT_SEG_REFS_DEFAULT MASK_TLS_DIRECT_SEG_REFS
+
+/* Provide a LINK_SPEC.  Here we provide support for the special GCC
+   options -static and -shared, which allow us to link things in one
+   of these three modes by applying the appropriate combinations of
+   options at link-time.
+
+   When the -shared link option is used a final link is not being
+   done.  */
+
+#if TARGET_64BIT_DEFAULT
+#define SPEC_32 "m32"
+#define SPEC_64 "!m32"
+#else
+#define SPEC_32 "!m64"
+#define SPEC_64 "m64"
+#endif
+
+#undef ASM_SPEC
+#define ASM_SPEC "%{" SPEC_32 ":--32} %{" SPEC_64 ":--64} \
+ %{!mno-sse2avx:%{mavx:-msse2avx}} %{msse2avx:%{!mavx:-msse2avx}}"
+
+#undef LINK_SPEC
+#define LINK_SPEC "%{" SPEC_64 ":-m elf_x86_64} %{" SPEC_32 ":-m elf_i386} \
+  %{shared:-shared} \
+  %{!shared: \
+    %{!static: \
+      %{rdynamic:-export-dynamic} \
+      %{" SPEC_32 ":-dynamic-linker " GNU_USER_DYNAMIC_LINKER32 "} \
+      %{" SPEC_64 ":-dynamic-linker " GNU_USER_DYNAMIC_LINKER64 "}} \
+    %{static:-static}}"
+
+/* Similar to standard GNU userspace, but adding -ffast-math support.  */
+#undef  ENDFILE_SPEC
+#define ENDFILE_SPEC \
+  "%{ffast-math|funsafe-math-optimizations:crtfastmath.o%s} \
+   %{mpc32:crtprec32.o%s} \
+   %{mpc64:crtprec64.o%s} \
+   %{mpc80:crtprec80.o%s} \
+   %{shared|pie:crtendS.o%s;:crtend.o%s} crtn.o%s"
+
+#if TARGET_64BIT_DEFAULT
+#define MULTILIB_DEFAULTS { "m64" }
+#else
+#define MULTILIB_DEFAULTS { "m32" }
+#endif
+
+/* Put all *tf routines in libgcc.  */
+#undef LIBGCC2_HAS_TF_MODE
+#define LIBGCC2_HAS_TF_MODE 1
+#define LIBGCC2_TF_CEXT q
+#define TF_SIZE 113
+
+#define TARGET_ASM_FILE_END file_end_indicate_exec_stack
+
+/* The stack pointer needs to be moved while checking the stack.  */
+#define STACK_CHECK_MOVING_SP 1
+
+/* Static stack checking is supported by means of probes.  */
+#define STACK_CHECK_STATIC_BUILTIN 1
+
+#ifdef TARGET_LIBC_PROVIDES_SSP
+/* i386 glibc provides __stack_chk_guard in %gs:0x14,
+   x86_64 glibc provides it in %fs:0x28.  */
+#define TARGET_THREAD_SSP_OFFSET       (TARGET_64BIT ? 0x28 : 0x14)
+
+/* We steal the last transactional memory word.  */
+#define TARGET_CAN_SPLIT_STACK
+#define TARGET_THREAD_SPLIT_STACK_OFFSET (TARGET_64BIT ? 0x70 : 0x30)
+#endif
index b245533091c9914391e41f8a2bad15b2b6fa1641..a86eff473e3a4151eeaccb8a58a5b1fd74882de6 100644 (file)
@@ -20,8 +20,8 @@ You should have received a copy of the GNU General Public License
 along with GCC.  If not, see <http://www.gnu.org/licenses/>.
 */
 
-#undef GLIBC_DYNAMIC_LINKER
-#define GLIBC_DYNAMIC_LINKER "/lib/ld.so"
+#undef GNU_USER_DYNAMIC_LINKER
+#define GNU_USER_DYNAMIC_LINKER "/lib/ld.so"
 
 #undef CPP_SPEC
 #define CPP_SPEC "%{pthread:-D_REENTRANT} %{posix:-D_POSIX_SOURCE}"
index b5fb2ba29cab6ac799221afc4761d7161f6c1386..8c4be69a98cea25696856352735490b8e8390776 100644 (file)
@@ -1,5 +1,5 @@
 /* Definitions for Intel 386 running kFreeBSD-based GNU systems with ELF format
-   Copyright (C) 2004, 2007
+   Copyright (C) 2004, 2007, 2011
    Free Software Foundation, Inc.
    Contributed by Robert Millan.
 
@@ -19,7 +19,7 @@ You should have received a copy of the GNU General Public License
 along with GCC; see the file COPYING3.  If not see
 <http://www.gnu.org/licenses/>.  */
 
-#undef LINK_EMULATION
-#define LINK_EMULATION "elf_i386_fbsd"
+#undef GNU_USER_LINK_EMULATION
+#define GNU_USER_LINK_EMULATION "elf_i386_fbsd"
 #undef REG_NAME
 #define REG_NAME(reg) sc_ ## reg
index 01b6bc86b054b56b8e606e24b685e5254654e67e..40a35ac835ee25cd8197cf86fe54da8da9b1cadd 100644 (file)
@@ -20,194 +20,11 @@ You should have received a copy of the GNU General Public License
 along with GCC; see the file COPYING3.  If not see
 <http://www.gnu.org/licenses/>.  */
 
-/* Output at beginning of assembler file.  */
-/* The .file command should always begin the output.  */
-#define TARGET_ASM_FILE_START_FILE_DIRECTIVE true
-
-/* The svr4 ABI for the i386 says that records and unions are returned
-   in memory.  */
-#undef DEFAULT_PCC_STRUCT_RETURN
-#define DEFAULT_PCC_STRUCT_RETURN 1
-
-/* We arrange for the whole %gs segment to map the tls area.  */
-#undef TARGET_TLS_DIRECT_SEG_REFS_DEFAULT
-#define TARGET_TLS_DIRECT_SEG_REFS_DEFAULT MASK_TLS_DIRECT_SEG_REFS
-
-#undef ASM_COMMENT_START
-#define ASM_COMMENT_START "#"
-
-#undef DBX_REGISTER_NUMBER
-#define DBX_REGISTER_NUMBER(n) \
-  (TARGET_64BIT ? dbx64_register_map[n] : svr4_dbx_register_map[n])
-
-/* Output assembler code to FILE to call the profiler.
-   To the best of my knowledge, no Linux libc has required the label
-   argument to mcount.  */
-
-#define NO_PROFILE_COUNTERS    1
-
-#undef MCOUNT_NAME
-#define MCOUNT_NAME "mcount"
-
-/* The GLIBC version of mcount for the x86 assumes that there is a
-   frame, so we cannot allow profiling without a frame pointer.  */
-
-#undef SUBTARGET_FRAME_POINTER_REQUIRED
-#define SUBTARGET_FRAME_POINTER_REQUIRED crtl->profile
-
-#undef SIZE_TYPE
-#define SIZE_TYPE "unsigned int"
-#undef PTRDIFF_TYPE
-#define PTRDIFF_TYPE "int"
-  
-#undef WCHAR_TYPE
-#define WCHAR_TYPE "long int"
-   
-#undef WCHAR_TYPE_SIZE
-#define WCHAR_TYPE_SIZE BITS_PER_WORD
-    
-#define TARGET_OS_CPP_BUILTINS()               \
-  do                                           \
-    {                                          \
-       LINUX_TARGET_OS_CPP_BUILTINS();         \
-    }                                          \
-  while (0)
-
-#undef CPP_SPEC
-#define CPP_SPEC "%{posix:-D_POSIX_SOURCE} %{pthread:-D_REENTRANT}"
-
-#undef CC1_SPEC
-#define CC1_SPEC "%(cc1_cpu) %{profile:-p}"
-
-/* Provide a LINK_SPEC appropriate for Linux.  Here we provide support
-   for the special GCC options -static and -shared, which allow us to
-   link things in one of these three modes by applying the appropriate
-   combinations of options at link-time.
-
-   When the -shared link option is used a final link is not being
-   done.  */
-
-/* These macros may be overridden in k*bsd-gnu.h and i386/k*bsd-gnu.h. */
-#define LINK_EMULATION "elf_i386"
+#define GNU_USER_LINK_EMULATION "elf_i386"
 #define GLIBC_DYNAMIC_LINKER "/lib/ld-linux.so.2"
 
-#undef  ASM_SPEC
-#define ASM_SPEC \
-  "--32 %{!mno-sse2avx:%{mavx:-msse2avx}} %{msse2avx:%{!mavx:-msse2avx}}"
-
-#undef  SUBTARGET_EXTRA_SPECS
-#define SUBTARGET_EXTRA_SPECS \
-  { "link_emulation", LINK_EMULATION },\
-  { "dynamic_linker", LINUX_DYNAMIC_LINKER }
-
-#undef LINK_SPEC
-#define LINK_SPEC "-m %(link_emulation) %{shared:-shared} \
-  %{!shared: \
-    %{!static: \
-      %{rdynamic:-export-dynamic} \
-      -dynamic-linker %(dynamic_linker)} \
-      %{static:-static}}"
-
-/* Similar to standard Linux, but adding -ffast-math support.  */
-#undef  ENDFILE_SPEC
-#define ENDFILE_SPEC \
-  "%{ffast-math|funsafe-math-optimizations:crtfastmath.o%s} \
-   %{mpc32:crtprec32.o%s} \
-   %{mpc64:crtprec64.o%s} \
-   %{mpc80:crtprec80.o%s} \
-   %{shared|pie:crtendS.o%s;:crtend.o%s} crtn.o%s"
-
-/* 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.  */
-
-#define ASM_OUTPUT_ALIGNED_BSS(FILE, DECL, NAME, SIZE, ALIGN) \
-  asm_output_aligned_bss (FILE, DECL, NAME, SIZE, ALIGN)
-
-/* A C statement to output to the stdio stream FILE an assembler
-   command to advance the location counter to a multiple of 1<<LOG
-   bytes if it is within MAX_SKIP bytes.
-
-   This is used to align code labels according to Intel recommendations.  */
-
-#ifdef HAVE_GAS_MAX_SKIP_P2ALIGN
-#define ASM_OUTPUT_MAX_SKIP_ALIGN(FILE,LOG,MAX_SKIP)                   \
-  do {                                                                 \
-    if ((LOG) != 0) {                                                  \
-      if ((MAX_SKIP) == 0) fprintf ((FILE), "\t.p2align %d\n", (LOG)); \
-      else {                                                           \
-       fprintf ((FILE), "\t.p2align %d,,%d\n", (LOG), (MAX_SKIP));     \
-       /* Make sure that we have at least 8 byte alignment if > 8 byte \
-          alignment is preferred.  */                                  \
-       if ((LOG) > 3                                                   \
-           && (1 << (LOG)) > ((MAX_SKIP) + 1)                          \
-           && (MAX_SKIP) >= 7)                                         \
-         fputs ("\t.p2align 3\n", (FILE));                             \
-      }                                                                        \
-    }                                                                  \
-  } while (0)
-#endif
-
-/* Handle special EH pointer encodings.  Absolute, pc-relative, and
-   indirect are handled automatically.  */
-#define ASM_MAYBE_OUTPUT_ENCODED_ADDR_RTX(FILE, ENCODING, SIZE, ADDR, DONE) \
-  do {                                                                 \
-    if ((SIZE) == 4 && ((ENCODING) & 0x70) == DW_EH_PE_datarel)                \
-      {                                                                        \
-        fputs (ASM_LONG, FILE);                        \
-        assemble_name (FILE, XSTR (ADDR, 0));                          \
-       fputs (((ENCODING) & DW_EH_PE_indirect ? "@GOT" : "@GOTOFF"), FILE); \
-        goto DONE;                                                     \
-      }                                                                        \
-  } while (0)
-
-/* Used by crtstuff.c to initialize the base of data-relative relocations.
-   These are GOT relative on x86, so return the pic register.  */
-#ifdef __PIC__
-#define CRT_GET_RFIB_DATA(BASE)                        \
-  {                                            \
-    register void *ebx_ __asm__("ebx");                \
-    BASE = ebx_;                               \
-  }
-#else
-#define CRT_GET_RFIB_DATA(BASE)                                                \
-  __asm__ ("call\t.LPR%=\n"                                            \
-          ".LPR%=:\n\t"                                                \
-          "pop{l}\t%0\n\t"                                             \
-          /* Due to a GAS bug, this cannot use EAX.  That encodes      \
-             smaller than the traditional EBX, which results in the    \
-             offset being off by one.  */                              \
-          "add{l}\t{$_GLOBAL_OFFSET_TABLE_+[.-.LPR%=],%0"              \
-                  "|%0,_GLOBAL_OFFSET_TABLE_+(.-.LPR%=)}"              \
-          : "=d"(BASE))
-#endif
-
-/* Put all *tf routines in libgcc.  */
-#undef LIBGCC2_HAS_TF_MODE
-#define LIBGCC2_HAS_TF_MODE 1
-#define LIBGCC2_TF_CEXT q
-#define TF_SIZE 113
-
-#define TARGET_ASM_FILE_END file_end_indicate_exec_stack
+#define GNU_USER_DYNAMIC_LINKER LINUX_DYNAMIC_LINKER
 
 #define MD_UNWIND_SUPPORT "config/i386/linux-unwind.h"
 
-/* The stack pointer needs to be moved while checking the stack.  */
-#define STACK_CHECK_MOVING_SP 1
-
-/* Static stack checking is supported by means of probes.  */
-#define STACK_CHECK_STATIC_BUILTIN 1
-
-/* This macro may be overridden in i386/k*bsd-gnu.h.  */
 #define REG_NAME(reg) reg
-
-#ifdef TARGET_LIBC_PROVIDES_SSP
-/* i386 glibc provides __stack_chk_guard in %gs:0x14.  */
-#define TARGET_THREAD_SSP_OFFSET       0x14
-
-/* We steal the last transactional memory word.  */
-#define TARGET_CAN_SPLIT_STACK
-#define TARGET_THREAD_SPLIT_STACK_OFFSET 0x30
-#endif
index 4bed2faf3357942fe01d0f4f5444aaeebf210daa..467ddbe7f42cc93db89a49b472d6466f698c1f8c 100644 (file)
@@ -24,103 +24,12 @@ a copy of the GCC Runtime Library Exception along with this program;
 see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 <http://www.gnu.org/licenses/>.  */
 
-#define TARGET_OS_CPP_BUILTINS()                               \
-  do                                                           \
-    {                                                          \
-       LINUX_TARGET_OS_CPP_BUILTINS();                         \
-    }                                                          \
-  while (0)
-
-#undef CPP_SPEC
-#define CPP_SPEC "%{posix:-D_POSIX_SOURCE} %{pthread:-D_REENTRANT}"
-
-#undef CC1_SPEC
-#define CC1_SPEC "%(cc1_cpu) %{profile:-p}"
-
-/* The svr4 ABI for the i386 says that records and unions are returned
-   in memory.  In the 64bit compilation we will turn this flag off in
-   ix86_option_override_internal, as we never do pcc_struct_return
-   scheme on this target.  */
-#undef DEFAULT_PCC_STRUCT_RETURN
-#define DEFAULT_PCC_STRUCT_RETURN 1
-
-/* We arrange for the whole %fs segment to map the tls area.  */
-#undef TARGET_TLS_DIRECT_SEG_REFS_DEFAULT
-#define TARGET_TLS_DIRECT_SEG_REFS_DEFAULT MASK_TLS_DIRECT_SEG_REFS
-
-/* Provide a LINK_SPEC.  Here we provide support for the special GCC
-   options -static and -shared, which allow us to link things in one
-   of these three modes by applying the appropriate combinations of
-   options at link-time.
-
-   When the -shared link option is used a final link is not being
-   done.  */
-
 #define GLIBC_DYNAMIC_LINKER32 "/lib/ld-linux.so.2"
 #define GLIBC_DYNAMIC_LINKER64 "/lib64/ld-linux-x86-64.so.2"
 
-#if TARGET_64BIT_DEFAULT
-#define SPEC_32 "m32"
-#define SPEC_64 "!m32"
-#else
-#define SPEC_32 "!m64"
-#define SPEC_64 "m64"
-#endif
-
-#undef ASM_SPEC
-#define ASM_SPEC "%{" SPEC_32 ":--32} %{" SPEC_64 ":--64} \
- %{!mno-sse2avx:%{mavx:-msse2avx}} %{msse2avx:%{!mavx:-msse2avx}}"
-
-#undef LINK_SPEC
-#define LINK_SPEC "%{" SPEC_64 ":-m elf_x86_64} %{" SPEC_32 ":-m elf_i386} \
-  %{shared:-shared} \
-  %{!shared: \
-    %{!static: \
-      %{rdynamic:-export-dynamic} \
-      %{" SPEC_32 ":-dynamic-linker " LINUX_DYNAMIC_LINKER32 "} \
-      %{" SPEC_64 ":-dynamic-linker " LINUX_DYNAMIC_LINKER64 "}} \
-    %{static:-static}}"
-
-/* Similar to standard Linux, but adding -ffast-math support.  */
-#undef  ENDFILE_SPEC
-#define ENDFILE_SPEC \
-  "%{ffast-math|funsafe-math-optimizations:crtfastmath.o%s} \
-   %{mpc32:crtprec32.o%s} \
-   %{mpc64:crtprec64.o%s} \
-   %{mpc80:crtprec80.o%s} \
-   %{shared|pie:crtendS.o%s;:crtend.o%s} crtn.o%s"
-
-#if TARGET_64BIT_DEFAULT
-#define MULTILIB_DEFAULTS { "m64" }
-#else
-#define MULTILIB_DEFAULTS { "m32" }
-#endif
-
-/* Put all *tf routines in libgcc.  */
-#undef LIBGCC2_HAS_TF_MODE
-#define LIBGCC2_HAS_TF_MODE 1
-#define LIBGCC2_TF_CEXT q
-#define TF_SIZE 113
-
-#define TARGET_ASM_FILE_END file_end_indicate_exec_stack
+#define GNU_USER_DYNAMIC_LINKER32 LINUX_DYNAMIC_LINKER32
+#define GNU_USER_DYNAMIC_LINKER64 LINUX_DYNAMIC_LINKER64
 
 #define MD_UNWIND_SUPPORT "config/i386/linux-unwind.h"
 
-/* The stack pointer needs to be moved while checking the stack.  */
-#define STACK_CHECK_MOVING_SP 1
-
-/* Static stack checking is supported by means of probes.  */
-#define STACK_CHECK_STATIC_BUILTIN 1
-
-/* This macro may be overridden in i386/k*bsd-gnu.h.  */
 #define REG_NAME(reg) reg
-
-#ifdef TARGET_LIBC_PROVIDES_SSP
-/* i386 glibc provides __stack_chk_guard in %gs:0x14,
-   x86_64 glibc provides it in %fs:0x28.  */
-#define TARGET_THREAD_SSP_OFFSET       (TARGET_64BIT ? 0x28 : 0x14)
-
-/* We steal the last transactional memory word.  */
-#define TARGET_CAN_SPLIT_STACK
-#define TARGET_THREAD_SPLIT_STACK_OFFSET (TARGET_64BIT ? 0x70 : 0x30)
-#endif
index 592bae3d378a24f69bcb9b6256fd227e28e9227f..48da6a007937a78ec7570be98c47b6023754e854 100644 (file)
@@ -1,5 +1,5 @@
 /* Definitions for kFreeBSD-based GNU systems with ELF format
-   Copyright (C) 2004, 2006, 2007
+   Copyright (C) 2004, 2006, 2007, 2011
    Free Software Foundation, Inc.
    Contributed by Robert Millan.
 
@@ -31,7 +31,5 @@ along with GCC; see the file COPYING3.  If not see
     }                                          \
   while (0)
 
-#ifdef GLIBC_DYNAMIC_LINKER
-#undef GLIBC_DYNAMIC_LINKER
-#define GLIBC_DYNAMIC_LINKER "/lib/ld.so.1"
-#endif
+#undef GNU_USER_DYNAMIC_LINKER
+#define GNU_USER_DYNAMIC_LINKER "/lib/ld.so.1"
index 4cc8eb79675739d98dacd7dcb43193db8d3aee58..dfb09e9bc15f937444d20620b6d69444df5997dc 100644 (file)
@@ -1,5 +1,5 @@
 /* Definitions for kNetBSD-based GNU systems with ELF format
-   Copyright (C) 2004, 2006, 2007
+   Copyright (C) 2004, 2006, 2007, 2011
    Free Software Foundation, Inc.
    Contributed by Robert Millan.
 
@@ -32,7 +32,5 @@ along with GCC; see the file COPYING3.  If not see
   while (0)
 
 
-#ifdef GLIBC_DYNAMIC_LINKER
-#undef GLIBC_DYNAMIC_LINKER
-#define GLIBC_DYNAMIC_LINKER "/lib/ld.so.1"
-#endif
+#undef GNU_USER_DYNAMIC_LINKER
+#define GNU_USER_DYNAMIC_LINKER "/lib/ld.so.1"
index e044fafce68ffc045deae7731163d45bf4612af6..99da2c16645d630d2564091534d1d638b502d8dd 100644 (file)
@@ -1,5 +1,5 @@
 /* Definitions for kOpenSolaris-based GNU systems with ELF format
-   Copyright (C) 2004, 2006, 2007, 2009
+   Copyright (C) 2004, 2006, 2007, 2009, 2011
    Free Software Foundation, Inc.
    Contributed by Robert Millan.
 
@@ -31,7 +31,5 @@ along with GCC; see the file COPYING3.  If not see
     }                                          \
   while (0)
 
-#ifdef GLIBC_DYNAMIC_LINKER
-#undef GLIBC_DYNAMIC_LINKER
-#define GLIBC_DYNAMIC_LINKER "/lib/ld.so.1"
-#endif
+#undef GNU_USER_DYNAMIC_LINKER
+#define GNU_USER_DYNAMIC_LINKER "/lib/ld.so.1"