Patchwork Clean up k*gnu configurations

login
register
mail settings
Submitter Joseph S. Myers
Date April 11, 2011, 8:11 p.m.
Message ID <Pine.LNX.4.64.1104112009490.32677@digraph.polyomino.org.uk>
Download mbox | patch
Permalink /patch/90644/
State New
Headers show

Comments

Joseph S. Myers - April 11, 2011, 8:11 p.m.
Now that gnu-user*.h and linux*.h config headers have more or less the
proper contents, the next stage in stopping non-Linux-kernel-based
targets from using linux*.h is to get the correct contents into the
headers for the non-Linux-kernel-based targets.  This patch (partly
based on changes and information from Robert Millan) does so for the
k*gnu targets.  GNU_USER_LINK_EMULATION should bd defined for all
these targets, GNU_USER_DYNAMIC_LINKER32 and GNU_USER_DYNAMIC_LINKER64
should be defined for x86_64-kfreebsd-gnu and MD_UNWIND_SUPPORT should
be undefined instead of defining REG_NAME because linux-unwind.h is,
as previously discussed, inappropriate for these targets (it is
specific to the Linux kernel's signal frames and syscall numbers).

This patch does not do anything about GNU_USER_LINK_EMULATION for
x86_64-kfreebsd-gnu; my inclination is that the correct fix there is
to make i386/gnu-user64.h use GNU_USER_LINK_EMULATION32 and
GNU_USER_LINK_EMULATION64, which would then be defined by individual
targets' headers.

Tested building cc1 and xgcc for crosses to: i686-kfreebsd-gnu
i686-knetbsd-gnu i686-kopensolaris-gnu x86_64-kfreebsd-gnu.  OK to
commit?  (Note there are no target OS maintainers for these targets.)

2011-04-11  Joseph Myers  <joseph@codesourcery.com>
            Robert Millan  <rmh@gnu.org>

	* config.gcc (x86_64-*-kfreebsd*-gnu): Use i386/kfreebsd-gnu.h.
	* config/i386/kfreebsd-gnu.h (GNU_USER_DYNAMIC_LINKER32,
	GNU_USER_DYNAMIC_LINKER64): Define.
	(REG_NAME): Don't undefine.
	(MD_UNWIND_SUPPORT): Undefine.
	* config/i386/knetbsd-gnu.h (GNU_USER_LINK_EMULATION): Define.
	(REG_NAME): Don't undefine.
	(MD_UNWIND_SUPPORT): Undefine.
	* config/i386/kopensolaris-gnu.h (GNU_USER_LINK_EMULATION):
	Define.
Richard Henderson - April 11, 2011, 9:15 p.m.
On 04/11/2011 01:11 PM, Joseph S. Myers wrote:
> 	* config.gcc (x86_64-*-kfreebsd*-gnu): Use i386/kfreebsd-gnu.h.
> 	* config/i386/kfreebsd-gnu.h (GNU_USER_DYNAMIC_LINKER32,
> 	GNU_USER_DYNAMIC_LINKER64): Define.
> 	(REG_NAME): Don't undefine.
> 	(MD_UNWIND_SUPPORT): Undefine.
> 	* config/i386/knetbsd-gnu.h (GNU_USER_LINK_EMULATION): Define.
> 	(REG_NAME): Don't undefine.
> 	(MD_UNWIND_SUPPORT): Undefine.
> 	* config/i386/kopensolaris-gnu.h (GNU_USER_LINK_EMULATION):
> 	Define.

Ok by me.


r~

Patch

Index: gcc/config.gcc
===================================================================
--- gcc/config.gcc	(revision 172273)
+++ gcc/config.gcc	(working copy)
@@ -1243,7 +1243,7 @@  x86_64-*-linux* | x86_64-*-kfreebsd*-gnu
 	case ${target} in
 	x86_64-*-linux*)
 	  default_gnu_indirect_function=glibc-2011 ;;
-	x86_64-*-kfreebsd*-gnu) tm_file="${tm_file} kfreebsd-gnu.h" ;;
+	x86_64-*-kfreebsd*-gnu) tm_file="${tm_file} kfreebsd-gnu.h i386/kfreebsd-gnu.h" ;;
 	x86_64-*-knetbsd*-gnu) tm_file="${tm_file} knetbsd-gnu.h" ;;
 	esac
 	tmake_file="${tmake_file} i386/t-linux64 i386/t-crtstuff i386/t-crtpc i386/t-crtfm t-dfprules"
Index: gcc/config/i386/kopensolaris-gnu.h
===================================================================
--- gcc/config/i386/kopensolaris-gnu.h	(revision 172273)
+++ gcc/config/i386/kopensolaris-gnu.h	(working copy)
@@ -1,5 +1,5 @@ 
 /* Definitions for Intel 386 running kOpenSolaris-based GNU systems with ELF format
-   Copyright (C) 2009
+   Copyright (C) 2009, 2011
    Free Software Foundation, Inc.
    Contributed by Robert Millan.
 
@@ -19,4 +19,6 @@  You should have received a copy of the G
 along with GCC; see the file COPYING3.  If not see
 <http://www.gnu.org/licenses/>.  */
 
+#define GNU_USER_LINK_EMULATION "elf_i386"
+
 #undef MD_UNWIND_SUPPORT
Index: gcc/config/i386/kfreebsd-gnu.h
===================================================================
--- gcc/config/i386/kfreebsd-gnu.h	(revision 172273)
+++ gcc/config/i386/kfreebsd-gnu.h	(working copy)
@@ -21,5 +21,11 @@  along with GCC; see the file COPYING3.  
 
 #undef GNU_USER_LINK_EMULATION
 #define GNU_USER_LINK_EMULATION "elf_i386_fbsd"
-#undef REG_NAME
-#define REG_NAME(reg) sc_ ## reg
+
+#undef GNU_USER_DYNAMIC_LINKER32
+#define GNU_USER_DYNAMIC_LINKER32 "/lib/ld.so.1"
+
+#undef GNU_USER_DYNAMIC_LINKER64
+#define GNU_USER_DYNAMIC_LINKER64 "/lib/ld-kfreebsd-x86-64.so.1"
+
+#undef MD_UNWIND_SUPPORT
Index: gcc/config/i386/knetbsd-gnu.h
===================================================================
--- gcc/config/i386/knetbsd-gnu.h	(revision 172273)
+++ gcc/config/i386/knetbsd-gnu.h	(working copy)
@@ -1,5 +1,5 @@ 
 /* Definitions for Intel 386 running kNetBSD-based GNU systems with ELF format
-   Copyright (C) 2004, 2007
+   Copyright (C) 2004, 2007, 2011
    Free Software Foundation, Inc.
    Contributed by Robert Millan.
 
@@ -19,5 +19,6 @@  You should have received a copy of the G
 along with GCC; see the file COPYING3.  If not see
 <http://www.gnu.org/licenses/>.  */
 
-#undef REG_NAME
-#define REG_NAME(reg) sc_ ## reg
+#define GNU_USER_LINK_EMULATION "elf_i386"
+
+#undef MD_UNWIND_SUPPORT