gcc47: fixing the arm eabi hf build
Picking an upstream gcc patch.
This commit is contained in:
parent
92f72cb80f
commit
7405ddee2f
2 changed files with 231 additions and 1 deletions
230
pkgs/development/compilers/gcc/4.7/arm-eabi.patch
Normal file
230
pkgs/development/compilers/gcc/4.7/arm-eabi.patch
Normal file
|
@ -0,0 +1,230 @@
|
|||
Index: gcc-4_7-branch/libstdc++-v3/configure.host
|
||||
===================================================================
|
||||
--- gcc-4_7-branch/libstdc++-v3/configure.host (revision 194579)
|
||||
+++ gcc-4_7-branch/libstdc++-v3/configure.host (revision 194580)
|
||||
@@ -340,7 +340,7 @@
|
||||
fi
|
||||
esac
|
||||
case "${host}" in
|
||||
- arm*-*-linux-*eabi)
|
||||
+ arm*-*-linux-*eabi*)
|
||||
port_specific_symbol_files="\$(srcdir)/../config/os/gnu-linux/arm-eabi-extra.ver"
|
||||
;;
|
||||
esac
|
||||
Index: gcc-4_7-branch/libstdc++-v3/testsuite/20_util/make_signed/requirements/typedefs-2.cc
|
||||
===================================================================
|
||||
--- gcc-4_7-branch/libstdc++-v3/testsuite/20_util/make_signed/requirements/typedefs-2.cc (revision 194579)
|
||||
+++ gcc-4_7-branch/libstdc++-v3/testsuite/20_util/make_signed/requirements/typedefs-2.cc (revision 194580)
|
||||
@@ -1,5 +1,5 @@
|
||||
// { dg-options "-std=gnu++0x -funsigned-char -fshort-enums" }
|
||||
-// { dg-options "-std=gnu++0x -funsigned-char -fshort-enums -Wl,--no-enum-size-warning" { target arm*-*-linux*eabi } }
|
||||
+// { dg-options "-std=gnu++0x -funsigned-char -fshort-enums -Wl,--no-enum-size-warning" { target arm*-*-linux*eabi* } }
|
||||
|
||||
// 2007-05-03 Benjamin Kosnik <bkoz@redhat.com>
|
||||
//
|
||||
Index: gcc-4_7-branch/libstdc++-v3/testsuite/20_util/make_unsigned/requirements/typedefs-2.cc
|
||||
===================================================================
|
||||
--- gcc-4_7-branch/libstdc++-v3/testsuite/20_util/make_unsigned/requirements/typedefs-2.cc (revision 194579)
|
||||
+++ gcc-4_7-branch/libstdc++-v3/testsuite/20_util/make_unsigned/requirements/typedefs-2.cc (revision 194580)
|
||||
@@ -1,5 +1,5 @@
|
||||
// { dg-options "-std=gnu++0x -funsigned-char -fshort-enums" }
|
||||
-// { dg-options "-std=gnu++0x -funsigned-char -fshort-enums -Wl,--no-enum-size-warning" { target arm*-*-linux*eabi } }
|
||||
+// { dg-options "-std=gnu++0x -funsigned-char -fshort-enums -Wl,--no-enum-size-warning" { target arm*-*-linux*eabi* } }
|
||||
|
||||
// 2007-05-03 Benjamin Kosnik <bkoz@redhat.com>
|
||||
//
|
||||
Index: gcc-4_7-branch/libjava/configure.ac
|
||||
===================================================================
|
||||
--- gcc-4_7-branch/libjava/configure.ac (revision 194579)
|
||||
+++ gcc-4_7-branch/libjava/configure.ac (revision 194580)
|
||||
@@ -931,7 +931,7 @@
|
||||
# on Darwin -single_module speeds up loading of the dynamic libraries.
|
||||
extra_ldflags_libjava=-Wl,-single_module
|
||||
;;
|
||||
-arm*linux*eabi)
|
||||
+arm*-*-linux*eabi*)
|
||||
# Some of the ARM unwinder code is actually in libstdc++. We
|
||||
# could in principle replicate it in libgcj, but it's better to
|
||||
# have a dependency on libstdc++.
|
||||
Index: gcc-4_7-branch/libjava/configure
|
||||
===================================================================
|
||||
--- gcc-4_7-branch/libjava/configure (revision 194579)
|
||||
+++ gcc-4_7-branch/libjava/configure (revision 194580)
|
||||
@@ -20542,7 +20542,7 @@
|
||||
# on Darwin -single_module speeds up loading of the dynamic libraries.
|
||||
extra_ldflags_libjava=-Wl,-single_module
|
||||
;;
|
||||
-arm*linux*eabi)
|
||||
+arm*-*-linux*eabi*)
|
||||
# Some of the ARM unwinder code is actually in libstdc++. We
|
||||
# could in principle replicate it in libgcj, but it's better to
|
||||
# have a dependency on libstdc++.
|
||||
Index: gcc-4_7-branch/libgcc/config.host
|
||||
===================================================================
|
||||
--- gcc-4_7-branch/libgcc/config.host (revision 194579)
|
||||
+++ gcc-4_7-branch/libgcc/config.host (revision 194580)
|
||||
@@ -327,7 +327,7 @@
|
||||
arm*-*-linux*) # ARM GNU/Linux with ELF
|
||||
tmake_file="${tmake_file} arm/t-arm t-fixedpoint-gnu-prefix"
|
||||
case ${host} in
|
||||
- arm*-*-linux-*eabi)
|
||||
+ arm*-*-linux-*eabi*)
|
||||
tmake_file="${tmake_file} arm/t-elf arm/t-bpabi arm/t-linux-eabi t-slibgcc-libgcc"
|
||||
tm_file="$tm_file arm/bpabi-lib.h"
|
||||
unwind_header=config/arm/unwind-arm.h
|
||||
Index: gcc-4_7-branch/gcc/doc/install.texi
|
||||
===================================================================
|
||||
--- gcc-4_7-branch/gcc/doc/install.texi (revision 194579)
|
||||
+++ gcc-4_7-branch/gcc/doc/install.texi (revision 194580)
|
||||
@@ -3222,7 +3222,7 @@
|
||||
@heading @anchor{arm-x-eabi}arm-*-eabi
|
||||
ARM-family processors. Subtargets that use the ELF object format
|
||||
require GNU binutils 2.13 or newer. Such subtargets include:
|
||||
-@code{arm-*-netbsdelf}, @code{arm-*-*linux-gnueabi}
|
||||
+@code{arm-*-netbsdelf}, @code{arm-*-*linux-gnueabi*}
|
||||
and @code{arm-*-rtemseabi}.
|
||||
|
||||
@html
|
||||
Index: gcc-4_7-branch/gcc/testsuite/gcc.target/arm/synchronize.c
|
||||
===================================================================
|
||||
--- gcc-4_7-branch/gcc/testsuite/gcc.target/arm/synchronize.c (revision 194579)
|
||||
+++ gcc-4_7-branch/gcc/testsuite/gcc.target/arm/synchronize.c (revision 194580)
|
||||
@@ -1,4 +1,4 @@
|
||||
-/* { dg-final { scan-assembler "__sync_synchronize|dmb|mcr" { target arm*-*-linux-*eabi } } } */
|
||||
+/* { dg-final { scan-assembler "__sync_synchronize|dmb|mcr" { target arm*-*-linux-*eabi* } } } */
|
||||
|
||||
void *foo (void)
|
||||
{
|
||||
Index: gcc-4_7-branch/gcc/testsuite/g++.old-deja/g++.jason/enum6.C
|
||||
===================================================================
|
||||
--- gcc-4_7-branch/gcc/testsuite/g++.old-deja/g++.jason/enum6.C (revision 194579)
|
||||
+++ gcc-4_7-branch/gcc/testsuite/g++.old-deja/g++.jason/enum6.C (revision 194580)
|
||||
@@ -7,10 +7,10 @@
|
||||
// enum-size attributes should only be emitted if there are values of
|
||||
// enum type that can escape the compilation unit, gcc cannot currently
|
||||
// detect this; if this facility is added then this linker option should
|
||||
-// not be needed. arm-*-linux*eabi should be a good approximation to
|
||||
+// not be needed. arm-*-linux*eabi* should be a good approximation to
|
||||
// those platforms where the EABI supplement defines enum values to be
|
||||
// 32 bits wide.
|
||||
-// { dg-options "-fshort-enums -Wl,--no-enum-size-warning" { target arm*-*-linux*eabi } }
|
||||
+// { dg-options "-fshort-enums -Wl,--no-enum-size-warning" { target arm*-*-linux*eabi* } }
|
||||
|
||||
#include <limits.h>
|
||||
|
||||
Index: gcc-4_7-branch/gcc/testsuite/g++.old-deja/g++.other/enum4.C
|
||||
===================================================================
|
||||
--- gcc-4_7-branch/gcc/testsuite/g++.old-deja/g++.other/enum4.C (revision 194579)
|
||||
+++ gcc-4_7-branch/gcc/testsuite/g++.old-deja/g++.other/enum4.C (revision 194580)
|
||||
@@ -9,10 +9,10 @@
|
||||
// enum-size attributes should only be emitted if there are values of
|
||||
// enum type that can escape the compilation unit, gcc cannot currently
|
||||
// detect this; if this facility is added then this linker option should
|
||||
-// not be needed. arm-*-linux*eabi should be a good approximation to
|
||||
+// not be needed. arm-*-linux*eabi* should be a good approximation to
|
||||
// those platforms where the EABI supplement defines enum values to be
|
||||
// 32 bits wide.
|
||||
-// { dg-options "-fshort-enums -Wl,--no-enum-size-warning" { target arm*-*-linux*eabi } }
|
||||
+// { dg-options "-fshort-enums -Wl,--no-enum-size-warning" { target arm*-*-linux*eabi* } }
|
||||
|
||||
enum E {
|
||||
a = -312
|
||||
Index: gcc-4_7-branch/gcc/testsuite/g++.old-deja/g++.law/enum9.C
|
||||
===================================================================
|
||||
--- gcc-4_7-branch/gcc/testsuite/g++.old-deja/g++.law/enum9.C (revision 194579)
|
||||
+++ gcc-4_7-branch/gcc/testsuite/g++.old-deja/g++.law/enum9.C (revision 194580)
|
||||
@@ -7,10 +7,10 @@
|
||||
// enum-size attributes should only be emitted if there are values of
|
||||
// enum type that can escape the compilation unit, gcc cannot currently
|
||||
// detect this; if this facility is added then this linker option should
|
||||
-// not be needed. arm-*-linux*eabi should be a good approximation to
|
||||
+// not be needed. arm-*-linux*eabi* should be a good approximation to
|
||||
// those platforms where the EABI supplement defines enum values to be
|
||||
// 32 bits wide.
|
||||
-// { dg-options "-fshort-enums -Wl,--no-enum-size-warning" { target arm*-*-linux*eabi } }
|
||||
+// { dg-options "-fshort-enums -Wl,--no-enum-size-warning" { target arm*-*-linux*eabi* } }
|
||||
|
||||
// GROUPS passed enums
|
||||
extern "C" int printf (const char *, ...);
|
||||
Index: gcc-4_7-branch/gcc/testsuite/lib/target-supports.exp
|
||||
===================================================================
|
||||
--- gcc-4_7-branch/gcc/testsuite/lib/target-supports.exp (revision 194579)
|
||||
+++ gcc-4_7-branch/gcc/testsuite/lib/target-supports.exp (revision 194580)
|
||||
@@ -3818,7 +3818,7 @@
|
||||
}
|
||||
} ""
|
||||
}]
|
||||
- } elseif { [istarget arm*-*-linux-gnueabi] } {
|
||||
+ } elseif { [istarget arm*-*-linux-gnueabi*] } {
|
||||
return [check_runtime sync_longlong_runtime {
|
||||
#include <stdlib.h>
|
||||
int main ()
|
||||
@@ -3860,7 +3860,7 @@
|
||||
|| [istarget i?86-*-*]
|
||||
|| [istarget x86_64-*-*]
|
||||
|| [istarget alpha*-*-*]
|
||||
- || [istarget arm*-*-linux-gnueabi]
|
||||
+ || [istarget arm*-*-linux-gnueabi*]
|
||||
|| [istarget bfin*-*linux*]
|
||||
|| [istarget hppa*-*linux*]
|
||||
|| [istarget s390*-*-*]
|
||||
@@ -3890,7 +3890,7 @@
|
||||
|| [istarget i?86-*-*]
|
||||
|| [istarget x86_64-*-*]
|
||||
|| [istarget alpha*-*-*]
|
||||
- || [istarget arm*-*-linux-gnueabi]
|
||||
+ || [istarget arm*-*-linux-gnueabi*]
|
||||
|| [istarget hppa*-*linux*]
|
||||
|| [istarget s390*-*-*]
|
||||
|| [istarget powerpc*-*-*]
|
||||
Index: gcc-4_7-branch/gcc/testsuite/gfortran.dg/enum_9.f90
|
||||
===================================================================
|
||||
--- gcc-4_7-branch/gcc/testsuite/gfortran.dg/enum_9.f90 (revision 194579)
|
||||
+++ gcc-4_7-branch/gcc/testsuite/gfortran.dg/enum_9.f90 (revision 194580)
|
||||
@@ -1,6 +1,6 @@
|
||||
! { dg-do run }
|
||||
! { dg-options "-fshort-enums" }
|
||||
-! { dg-options "-fshort-enums -Wl,--no-enum-size-warning" { target arm*-*-linux*eabi } }
|
||||
+! { dg-options "-fshort-enums -Wl,--no-enum-size-warning" { target arm*-*-linux*eabi* } }
|
||||
! Program to test enumerations when option -fshort-enums is given
|
||||
|
||||
program main
|
||||
Index: gcc-4_7-branch/gcc/testsuite/gfortran.dg/enum_10.f90
|
||||
===================================================================
|
||||
--- gcc-4_7-branch/gcc/testsuite/gfortran.dg/enum_10.f90 (revision 194579)
|
||||
+++ gcc-4_7-branch/gcc/testsuite/gfortran.dg/enum_10.f90 (revision 194580)
|
||||
@@ -1,7 +1,7 @@
|
||||
! { dg-do run }
|
||||
! { dg-additional-sources enum_10.c }
|
||||
! { dg-options "-fshort-enums -w" }
|
||||
-! { dg-options "-fshort-enums -w -Wl,--no-enum-size-warning" { target arm*-*-linux*eabi } }
|
||||
+! { dg-options "-fshort-enums -w -Wl,--no-enum-size-warning" { target arm*-*-linux*eabi* } }
|
||||
! Make sure short enums are indeed interoperable with the
|
||||
! corresponding C type.
|
||||
|
||||
Index: gcc-4_7-branch/gcc/ada/gcc-interface/Makefile.in
|
||||
===================================================================
|
||||
--- gcc-4_7-branch/gcc/ada/gcc-interface/Makefile.in (revision 194579)
|
||||
+++ gcc-4_7-branch/gcc/ada/gcc-interface/Makefile.in (revision 194580)
|
||||
@@ -1866,7 +1866,7 @@
|
||||
LIBRARY_VERSION := $(LIB_VERSION)
|
||||
endif
|
||||
|
||||
-ifeq ($(strip $(filter-out arm% linux-gnueabi,$(arch) $(osys)-$(word 4,$(targ)))),)
|
||||
+ifeq ($(strip $(filter-out arm%-linux,$(arch)-$(osys)) $(if $(findstring eabi,$(word 4,$(targ))),,$(word 4,$(targ)))),)
|
||||
LIBGNAT_TARGET_PAIRS = \
|
||||
a-intnam.ads<a-intnam-linux.ads \
|
||||
s-inmaop.adb<s-inmaop-posix.adb \
|
||||
Index: gcc-4_7-branch/gcc/config.gcc
|
||||
===================================================================
|
||||
--- gcc-4_7-branch/gcc/config.gcc (revision 194579)
|
||||
+++ gcc-4_7-branch/gcc/config.gcc (revision 194580)
|
||||
@@ -855,7 +855,7 @@
|
||||
esac
|
||||
tmake_file="${tmake_file} arm/t-arm"
|
||||
case ${target} in
|
||||
- arm*-*-linux-*eabi)
|
||||
+ arm*-*-linux-*eabi*)
|
||||
tm_file="$tm_file arm/bpabi.h arm/linux-eabi.h"
|
||||
tmake_file="$tmake_file arm/t-arm-elf arm/t-bpabi arm/t-linux-eabi"
|
||||
# Define multilib configuration for arm-linux-androideabi.
|
|
@ -54,7 +54,7 @@ let version = "4.7.2";
|
|||
# Whether building a cross-compiler for GNU/Hurd.
|
||||
crossGNU = cross != null && cross.config == "i586-pc-gnu";
|
||||
|
||||
patches = [ ]
|
||||
patches = [ ./arm-eabi.patch ]
|
||||
++ optional (cross != null) ./libstdc++-target.patch
|
||||
# ++ optional noSysDirs ./no-sys-dirs.patch
|
||||
# The GNAT Makefiles did not pay attention to CFLAGS_FOR_TARGET for its
|
||||
|
|
Loading…
Reference in a new issue