Patchwork svr4.h avoidance: moxie

login
register
mail settings
Submitter Joseph S. Myers
Date Dec. 7, 2010, 6:15 p.m.
Message ID <Pine.LNX.4.64.1012071813460.16137@digraph.polyomino.org.uk>
Download mbox | patch
Permalink /patch/74590/
State New
Headers show

Comments

Joseph S. Myers - Dec. 7, 2010, 6:15 p.m.
This patch in the series removing svr4.h from the headers used by
particular targets in GCC stops moxie-*-elf and moxie-*-uclinux* from
using svr4.h, defining the macros used from that header in moxie.h
instead.  The same simplified LINK_SPEC as in the fr30 patch
<http://gcc.gnu.org/ml/gcc-patches/2010-12/msg00588.html> is used.

There is a third moxie target that doesn't use svr4.h, moxie-*-rtems*,
although some RTEMS targets do use svr4.h.  To avoid perturbing that
target I made moxie/rtems.h undefine the macros added to moxie.h.  At
least as regards the standard typedefs I wonder if it was actually
deliberate that RTEMS use different types (through not using svr4.h).
If not, and if the moxie maintainers consider it OK to break ABI
compatibility for C++ code (since the choice of int versus long
affects name mangling), the moxie maintainers might wish to adjust
this port to use the same types for all target OSes.

Tested building cc1 and xgcc for crosses to moxie-elf, moxie-uclinux
and moxie-rtems.  OK to commit?

2010-12-07  Joseph Myers  <joseph@codesourcery.com>

	* config/moxie/moxie.h (LINK_SPEC, SIZE_TYPE, PTRDIFF_TYPE,
	WCHAR_TYPE, WCHAR_TYPE_SIZE): Define.
	* config/moxie/rtems.h (LINK_SPEC, SIZE_TYPE, PTRDIFF_TYPE,
	WCHAR_TYPE, WCHAR_TYPE_SIZE): Undefine.
	* config.gcc (moxie-*-elf, moxie-*-uclinux*): Don't use svr4.h.
Anthony Green - Dec. 9, 2010, 12:43 p.m.
On 12/7/2010 1:15 PM, Joseph S. Myers wrote:
> This patch in the series removing svr4.h from the headers used by
> particular targets in GCC stops moxie-*-elf and moxie-*-uclinux* from
> using svr4.h, defining the macros used from that header in moxie.h
> instead.  The same simplified LINK_SPEC as in the fr30 patch
> <http://gcc.gnu.org/ml/gcc-patches/2010-12/msg00588.html>  is used.
>
> There is a third moxie target that doesn't use svr4.h, moxie-*-rtems*,
> although some RTEMS targets do use svr4.h.  To avoid perturbing that
> target I made moxie/rtems.h undefine the macros added to moxie.h.  At
> least as regards the standard typedefs I wonder if it was actually
> deliberate that RTEMS use different types (through not using svr4.h).
> If not, and if the moxie maintainers consider it OK to break ABI
> compatibility for C++ code (since the choice of int versus long
> affects name mangling), the moxie maintainers might wish to adjust
> this port to use the same types for all target OSes.
>
> Tested building cc1 and xgcc for crosses to moxie-elf, moxie-uclinux
> and moxie-rtems.  OK to commit?


Thanks Joseph.  This change is OK with me.

AG



>
> 2010-12-07  Joseph Myers<joseph@codesourcery.com>
>
> 	* config/moxie/moxie.h (LINK_SPEC, SIZE_TYPE, PTRDIFF_TYPE,
> 	WCHAR_TYPE, WCHAR_TYPE_SIZE): Define.
> 	* config/moxie/rtems.h (LINK_SPEC, SIZE_TYPE, PTRDIFF_TYPE,
> 	WCHAR_TYPE, WCHAR_TYPE_SIZE): Undefine.
> 	* config.gcc (moxie-*-elf, moxie-*-uclinux*): Don't use svr4.h.
>
> diff -rupN --exclude=.svn gcc-mainline-3/gcc/config/moxie/moxie.h gcc-mainline/gcc/config/moxie/moxie.h
> --- gcc-mainline-3/gcc/config/moxie/moxie.h	2010-12-06 10:31:16.000000000 -0800
> +++ gcc-mainline/gcc/config/moxie/moxie.h	2010-12-07 09:43:22.000000000 -0800
> @@ -48,6 +48,10 @@
>   #undef LIB_SPEC
>   #define LIB_SPEC "%{!shared:%{!symbolic:-lc}}"
>
> +#undef  LINK_SPEC
> +#define LINK_SPEC "%{h*} %{v:-V} \
> +		   %{static:-Bstatic} %{shared:-shared} %{symbolic:-Bsymbolic}"
> +
>   /* Layout of Source Language Data Types */
>
>   #define INT_TYPE_SIZE 32
> @@ -61,6 +65,18 @@
>
>   #define DEFAULT_SIGNED_CHAR 1
>
> +#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
> +
>   /* Registers...
>
>      $fp  - frame pointer
> diff -rupN --exclude=.svn gcc-mainline-3/gcc/config/moxie/rtems.h gcc-mainline/gcc/config/moxie/rtems.h
> --- gcc-mainline-3/gcc/config/moxie/rtems.h	2010-07-30 10:03:15.000000000 -0700
> +++ gcc-mainline/gcc/config/moxie/rtems.h	2010-12-07 09:42:50.000000000 -0800
> @@ -27,3 +27,9 @@ along with GCC; see the file COPYING3.
>         builtin_assert ("system=rtems");		\
>       }						\
>     while (0)
> +
> +#undef LINK_SPEC
> +#undef SIZE_TYPE
> +#undef PTRDIFF_TYPE
> +#undef WCHAR_TYPE
> +#undef WCHAR_TYPE_SIZE
> diff -rupN --exclude=.svn gcc-mainline-3/gcc/config.gcc gcc-mainline/gcc/config.gcc
> --- gcc-mainline-3/gcc/config.gcc	2010-12-06 03:31:49.000000000 -0800
> +++ gcc-mainline/gcc/config.gcc	2010-12-07 09:49:10.000000000 -0800
> @@ -979,14 +979,14 @@ frv-*-*linux*)
>   moxie-*-elf)
>   	gas=yes
>   	gnu_ld=yes
> -	tm_file="dbxelf.h elfos.h svr4.h ${tm_file}"
> +	tm_file="dbxelf.h elfos.h ${tm_file}"
>   	extra_parts="crti.o crtn.o crtbegin.o crtend.o"
>   	tmake_file="${tmake_file} moxie/t-moxie moxie/t-moxie-softfp soft-fp/t-softfp"
>   	;;
>   moxie-*-uclinux*)
>   	gas=yes
>   	gnu_ld=yes
> -	tm_file="dbxelf.h elfos.h svr4.h ${tm_file} linux.h glibc-stdint.h moxie/uclinux.h"
> +	tm_file="dbxelf.h elfos.h ${tm_file} linux.h glibc-stdint.h moxie/uclinux.h"
>   	extra_parts="crti.o crtn.o crtbegin.o crtend.o"
>   	tmake_file="${tmake_file} moxie/t-moxie moxie/t-moxie-softfp soft-fp/t-softfp"
>   	tm_defines="${tm_defines} DEFAULT_LIBC=LIBC_UCLIBC"
>

Patch

diff -rupN --exclude=.svn gcc-mainline-3/gcc/config/moxie/moxie.h gcc-mainline/gcc/config/moxie/moxie.h
--- gcc-mainline-3/gcc/config/moxie/moxie.h	2010-12-06 10:31:16.000000000 -0800
+++ gcc-mainline/gcc/config/moxie/moxie.h	2010-12-07 09:43:22.000000000 -0800
@@ -48,6 +48,10 @@ 
 #undef LIB_SPEC
 #define LIB_SPEC "%{!shared:%{!symbolic:-lc}}"
 
+#undef  LINK_SPEC
+#define LINK_SPEC "%{h*} %{v:-V} \
+		   %{static:-Bstatic} %{shared:-shared} %{symbolic:-Bsymbolic}"
+
 /* Layout of Source Language Data Types */
 
 #define INT_TYPE_SIZE 32
@@ -61,6 +65,18 @@ 
 
 #define DEFAULT_SIGNED_CHAR 1
 
+#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
+
 /* Registers...
 
    $fp  - frame pointer
diff -rupN --exclude=.svn gcc-mainline-3/gcc/config/moxie/rtems.h gcc-mainline/gcc/config/moxie/rtems.h
--- gcc-mainline-3/gcc/config/moxie/rtems.h	2010-07-30 10:03:15.000000000 -0700
+++ gcc-mainline/gcc/config/moxie/rtems.h	2010-12-07 09:42:50.000000000 -0800
@@ -27,3 +27,9 @@  along with GCC; see the file COPYING3.  
       builtin_assert ("system=rtems");		\
     }						\
   while (0)
+
+#undef LINK_SPEC
+#undef SIZE_TYPE
+#undef PTRDIFF_TYPE
+#undef WCHAR_TYPE
+#undef WCHAR_TYPE_SIZE
diff -rupN --exclude=.svn gcc-mainline-3/gcc/config.gcc gcc-mainline/gcc/config.gcc
--- gcc-mainline-3/gcc/config.gcc	2010-12-06 03:31:49.000000000 -0800
+++ gcc-mainline/gcc/config.gcc	2010-12-07 09:49:10.000000000 -0800
@@ -979,14 +979,14 @@  frv-*-*linux*)
 moxie-*-elf)
 	gas=yes
 	gnu_ld=yes
-	tm_file="dbxelf.h elfos.h svr4.h ${tm_file}"
+	tm_file="dbxelf.h elfos.h ${tm_file}"
 	extra_parts="crti.o crtn.o crtbegin.o crtend.o"
 	tmake_file="${tmake_file} moxie/t-moxie moxie/t-moxie-softfp soft-fp/t-softfp"
 	;;
 moxie-*-uclinux*)
 	gas=yes
 	gnu_ld=yes
-	tm_file="dbxelf.h elfos.h svr4.h ${tm_file} linux.h glibc-stdint.h moxie/uclinux.h"
+	tm_file="dbxelf.h elfos.h ${tm_file} linux.h glibc-stdint.h moxie/uclinux.h"
 	extra_parts="crti.o crtn.o crtbegin.o crtend.o"
 	tmake_file="${tmake_file} moxie/t-moxie moxie/t-moxie-softfp soft-fp/t-softfp"
 	tm_defines="${tm_defines} DEFAULT_LIBC=LIBC_UCLIBC"