view diffs/gcc-4.4.2-winelf.diff @ 5:6b8e05507b18

Windowsy updates (new binutils, gcc, and a fix to elfload).
author Gregor Richards <Richards@codu.org>
date Sun, 13 Dec 2009 19:28:20 -0500
parents
children
line wrap: on
line source

diff -r f71f8978fa66 -r 3db5785d2252 config.sub
--- a/config.sub	Sun Dec 13 19:19:48 2009 -0500
+++ b/config.sub	Sun Dec 13 19:20:43 2009 -0500
@@ -1267,7 +1267,7 @@
 	      | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
 	      | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
 	      | -chorusos* | -chorusrdb* | -cegcc* \
-	      | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
+	      | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* | -win32elf* \
 	      | -mingw32* | -linux-gnu* | -linux-newlib* | -linux-uclibc* \
 	      | -uxpv* | -beos* | -mpeix* | -udk* \
 	      | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
diff -r f71f8978fa66 -r 3db5785d2252 fixincludes/configure
--- a/fixincludes/configure	Sun Dec 13 19:19:48 2009 -0500
+++ b/fixincludes/configure	Sun Dec 13 19:20:43 2009 -0500
@@ -3295,6 +3295,7 @@
   case $host in
 	i?86-*-msdosdjgpp* | \
 	i?86-*-mingw32* | \
+        i?86-*-win32elf* | \
 	x86_64-*-mingw32* | \
 	*-*-beos* )
 		TARGET=twoprocess
diff -r f71f8978fa66 -r 3db5785d2252 fixincludes/configure.ac
--- a/fixincludes/configure.ac	Sun Dec 13 19:19:48 2009 -0500
+++ b/fixincludes/configure.ac	Sun Dec 13 19:20:43 2009 -0500
@@ -51,6 +51,7 @@
 [case $host in
 	i?86-*-msdosdjgpp* | \
 	i?86-*-mingw32* | \
+        i?86-*-win32elf* | \
 	x86_64-*-mingw32* | \
 	*-*-beos* )
 		TARGET=twoprocess
diff -r f71f8978fa66 -r 3db5785d2252 fixincludes/mkfixinc.sh
--- a/fixincludes/mkfixinc.sh	Sun Dec 13 19:19:48 2009 -0500
+++ b/fixincludes/mkfixinc.sh	Sun Dec 13 19:20:43 2009 -0500
@@ -16,6 +16,7 @@
     i?86-*-pe | \
     i?86-*-cygwin* | \
     i?86-*-mingw32* | \
+    i?86-*-win32elf* | \
     x86_64-*-mingw32* | \
     i?86-*-interix* | \
     *-*-vxworks* | \
diff -r f71f8978fa66 -r 3db5785d2252 gcc/config.gcc
--- a/gcc/config.gcc	Sun Dec 13 19:19:48 2009 -0500
+++ b/gcc/config.gcc	Sun Dec 13 19:20:43 2009 -0500
@@ -1303,6 +1303,11 @@
 			;;
 	esac
 	;;
+i[34567]86-*-win32elf*)
+	tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h i386/win32elf.h"
+	tmake_file="i386/t-i386elf t-svr4"
+	use_fixproto=yes
+	;;
 i[34567]86-*-interix3*)
 	tm_file="${tm_file} i386/unix.h i386/bsd.h i386/gas.h i386/i386-interix.h i386/i386-interix3.h interix.h interix3.h"
 	tmake_file="${tmake_file} i386/t-interix"
diff -r f71f8978fa66 -r 3db5785d2252 gcc/config/i386/win32elf.h
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gcc/config/i386/win32elf.h	Sun Dec 13 19:20:43 2009 -0500
@@ -0,0 +1,152 @@
+/* Target definitions for GCC for Intel 80386 using ELF
+   Copyright (C) 1988, 1991, 1995, 2000, 2001, 2002
+   Free Software Foundation, Inc.
+
+   Derived from i386elf.h and mingw32.h
+   i386elf.h was derived from sysv4.h written by Ron Guilmette (rfg@netcom.com).
+
+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 2, 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 COPYING.  If not, write to
+the Free Software Foundation, 51 Franklin Street, Fifth Floor,
+Boston, MA 02110-1301, USA.  */
+
+/* Use stabs instead of DWARF debug format.  */
+#undef  PREFERRED_DEBUGGING_TYPE
+#define PREFERRED_DEBUGGING_TYPE DBX_DEBUG
+
+#define TARGET_VERSION fprintf (stderr, " (x86 Win32 ELF)");
+
+/* See i386/crtdll.h for an alternative definition.  */
+#define TARGET_OS_CPP_BUILTINS()				\
+  do								\
+    {								\
+      builtin_define ("__MSVCRT__");				\
+      builtin_define ("__MINGW32__");			   	\
+      builtin_define ("_WIN32");				\
+      builtin_define ("__WIN32");				\
+      builtin_define ("__WINELF__");				\
+      builtin_define_std ("WIN32");				\
+      builtin_define_std ("WINNT");				\
+    }								\
+  while (0)
+
+/* By default, target has a 80387, uses IEEE compatible arithmetic,
+   and returns float values in the 387.  */
+
+#define TARGET_SUBTARGET_DEFAULT (MASK_80387 | MASK_IEEE_FP | MASK_FLOAT_RETURNS)
+
+/* The ELF ABI for the i386 says that records and unions are returned
+   in memory.  */
+
+#undef RETURN_IN_MEMORY
+#define RETURN_IN_MEMORY(TYPE) \
+  (TYPE_MODE (TYPE) == BLKmode \
+   || (VECTOR_MODE_P (TYPE_MODE (TYPE)) && int_size_in_bytes (TYPE) == 8))
+
+#undef CPP_SPEC
+#define CPP_SPEC ""
+
+#define ENDFILE_SPEC "crtend.o%s crtn.o%s"
+
+#define STARTFILE_SPEC "%{!shared: \
+			 %{!symbolic: \
+			  %{pg:gcrt0.o%s}%{!pg:%{p:mcrt0.o%s}%{!p:crt0.o%s}} \
+                         crt1.o%s \
+                          }} \
+                        crti.o%s \
+			crtbegin.o%s"
+
+#define LINK_SPEC "%{shared:-shared}"
+
+#undef DBX_REGISTER_NUMBER
+#define DBX_REGISTER_NUMBER(n) \
+  (TARGET_64BIT ? dbx64_register_map[n] : svr4_dbx_register_map[n])
+
+/* The routine used to output sequences of byte values.  We use a special
+   version of this for most svr4 targets because doing so makes the
+   generated assembly code more compact (and thus faster to assemble)
+   as well as more readable.  Note that if we find subparts of the
+   character sequence which end with NUL (and which are shorter than
+   STRING_LIMIT) we output those using ASM_OUTPUT_LIMITED_STRING.  */
+
+#undef ASM_OUTPUT_ASCII
+#define ASM_OUTPUT_ASCII(FILE, STR, LENGTH)				\
+  do									\
+    {									\
+      const unsigned char *_ascii_bytes =				\
+        (const unsigned char *) (STR);					\
+      const unsigned char *limit = _ascii_bytes + (LENGTH);		\
+      unsigned bytes_in_chunk = 0;					\
+      for (; _ascii_bytes < limit; _ascii_bytes++)			\
+        {								\
+	  const unsigned char *p;					\
+	  if (bytes_in_chunk >= 64)					\
+	    {								\
+	      fputc ('\n', (FILE));					\
+	      bytes_in_chunk = 0;					\
+	    }								\
+	  for (p = _ascii_bytes; p < limit && *p != '\0'; p++)		\
+	    continue;							\
+	  if (p < limit && (p - _ascii_bytes) <= (long) STRING_LIMIT)	\
+	    {								\
+	      if (bytes_in_chunk > 0)					\
+		{							\
+		  fputc ('\n', (FILE));					\
+		  bytes_in_chunk = 0;					\
+		}							\
+	      ASM_OUTPUT_LIMITED_STRING ((FILE), _ascii_bytes);		\
+	      _ascii_bytes = p;						\
+	    }								\
+	  else								\
+	    {								\
+	      if (bytes_in_chunk == 0)					\
+		fprintf ((FILE), "\t.byte\t");				\
+	      else							\
+		fputc (',', (FILE));					\
+	      fprintf ((FILE), "0x%02x", *_ascii_bytes);		\
+	      bytes_in_chunk += 5;					\
+	    }								\
+	}								\
+      if (bytes_in_chunk > 0)						\
+        fprintf ((FILE), "\n");						\
+    }									\
+  while (0)
+
+#define LOCAL_LABEL_PREFIX	"."
+
+/* Switch into a generic section.  */
+#define TARGET_ASM_NAMED_SECTION  default_elf_asm_named_section
+
+/* 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.  */
+#undef BSS_SECTION_ASM_OP
+#define BSS_SECTION_ASM_OP "\t.section\t.bss"
+
+/* 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.  */
+#undef ASM_OUTPUT_ALIGNED_BSS
+#define ASM_OUTPUT_ALIGNED_BSS(FILE, DECL, NAME, SIZE, ALIGN) \
+  asm_output_aligned_bss (FILE, DECL, NAME, SIZE, ALIGN)
diff -r f71f8978fa66 -r 3db5785d2252 gcc/libgcc2.c
--- a/gcc/libgcc2.c	Sun Dec 13 19:19:48 2009 -0500
+++ b/gcc/libgcc2.c	Sun Dec 13 19:20:43 2009 -0500
@@ -2048,7 +2048,7 @@
 
 /* Jump to a trampoline, loading the static chain address.  */
 
-#if defined(WINNT) && ! defined(__CYGWIN__)
+#if defined(WINNT) && ! defined(__CYGWIN__) && ! defined(__WINELF__)
 int getpagesize (void);
 int mprotect (char *,int, int);
 
diff -r f71f8978fa66 -r 3db5785d2252 libgcc/config.host
--- a/libgcc/config.host	Sun Dec 13 19:19:48 2009 -0500
+++ b/libgcc/config.host	Sun Dec 13 19:20:43 2009 -0500
@@ -337,7 +337,7 @@
 	extra_parts="crtbegin.o crtend.o crtfastmath.o"
 	tmake_file="i386/t-cygming i386/t-crtfm"
 	;;
-x86_64-*-mingw*)
+x86_64-*-mingw* | i[34567]86-*-win32elf*)
 	;;
 i[34567]86-*-interix3*)
 	;;
diff -r f71f8978fa66 -r 3db5785d2252 libiberty/configure
--- a/libiberty/configure	Sun Dec 13 19:19:48 2009 -0500
+++ b/libiberty/configure	Sun Dec 13 19:20:43 2009 -0500
@@ -8884,7 +8884,7 @@
 
 # Figure out which version of pexecute to use.
 case "${host}" in
-     *-*-mingw* | *-*-winnt*)	pexecute=./pex-win32.o  ;;
+     *-*-mingw* | *-*-winnt* | *-*-win32elf*)	pexecute=./pex-win32.o  ;;
      *-*-msdosdjgpp*)		pexecute=./pex-djgpp.o  ;;
      *-*-msdos*)		pexecute=./pex-msdos.o  ;;
      *)				pexecute=./pex-unix.o   ;;
diff -r f71f8978fa66 -r 3db5785d2252 libiberty/configure.ac
--- a/libiberty/configure.ac	Sun Dec 13 19:19:48 2009 -0500
+++ b/libiberty/configure.ac	Sun Dec 13 19:20:43 2009 -0500
@@ -656,7 +656,7 @@
 
 # Figure out which version of pexecute to use.
 case "${host}" in
-     *-*-mingw* | *-*-winnt*)	pexecute=./pex-win32.o  ;;
+     *-*-mingw* | *-*-winnt* | *-*-win32elf*)	pexecute=./pex-win32.o  ;;
      *-*-msdosdjgpp*)		pexecute=./pex-djgpp.o  ;;
      *-*-msdos*)		pexecute=./pex-msdos.o  ;;
      *)				pexecute=./pex-unix.o   ;;
diff -r f71f8978fa66 -r 3db5785d2252 libiberty/getpwd.c
--- a/libiberty/getpwd.c	Sun Dec 13 19:19:48 2009 -0500
+++ b/libiberty/getpwd.c	Sun Dec 13 19:20:43 2009 -0500
@@ -107,7 +107,7 @@
 
 #else	/* VMS || _WIN32 && !__CYGWIN__ */
 
-#ifndef MAXPATHLEN
+#if !defined(MAXPATHLEN) || defined(__WINELF__)
 #define MAXPATHLEN 255
 #endif
 
diff -r f71f8978fa66 -r 3db5785d2252 libstdc++-v3/configure
--- a/libstdc++-v3/configure	Sun Dec 13 19:19:48 2009 -0500
+++ b/libstdc++-v3/configure	Sun Dec 13 19:20:43 2009 -0500
@@ -95045,7 +95045,7 @@
   fi
 
     ;;
-  *-mingw32*)
+  *-mingw32* | *-win32elf*)
 
   # If we're not using GNU ld, then there's no point in even trying these
   # tests.  Check for that first.  We should have already tested for gld
diff -r f71f8978fa66 -r 3db5785d2252 libstdc++-v3/configure.host
--- a/libstdc++-v3/configure.host	Sun Dec 13 19:19:48 2009 -0500
+++ b/libstdc++-v3/configure.host	Sun Dec 13 19:20:43 2009 -0500
@@ -251,7 +251,7 @@
     atomicity_dir=os/irix
     atomic_word_dir=os/irix
     ;;
-  mingw32*)
+  mingw32* | win32elf*)
     os_include_dir="os/mingw32"
     error_constants_dir="os/mingw32"
     ;;
diff -r f71f8978fa66 -r 3db5785d2252 libstdc++-v3/crossconfig.m4
--- a/libstdc++-v3/crossconfig.m4	Sun Dec 13 19:19:48 2009 -0500
+++ b/libstdc++-v3/crossconfig.m4	Sun Dec 13 19:20:43 2009 -0500
@@ -140,7 +140,7 @@
     GCC_CHECK_TLS
     AM_ICONV
     ;;
-  *-mingw32*)
+  *-mingw32* | *-win32elf*)
     GLIBCXX_CHECK_LINKER_FEATURES
     GLIBCXX_CHECK_MATH_SUPPORT
     GLIBCXX_CHECK_STDLIB_SUPPORT