patches/gcc/4.2.3/300-fortran-signed-TImode.patch
author "Benoît THÉBAUDEAU" <benoit.thebaudeau@advansee.com>
Wed Jun 08 15:47:43 2011 +0200 (2011-06-08)
changeset 2508 9e2761e59a75
parent 677 3505660ff419
permissions -rw-r--r--
debug/cross-gdb: check host dependencies

Cross-gdb depends on expat and python. If either is missing, cross-gdb will
build successfully, but lacking some features.

Especially, if expat is missing, cross-gdb will be unable to parse the target
description, which may lead to runtime malfunctions and the following GDB
warning:
"Can not parse XML target description; XML support was disabled at compile time"

Hence, expat should be considered mandatory.

On the other hand, the features missing without python are not critical, so
python should not be considered mandatory.

This patch does the following:
- At configure time, warn the user if either expat or python is missing.
- In menuconfig, disable the static build options regarding cross-gdb if no
static version of expat is available, and disable cross-gdb if expat is
missing.

Signed-off-by: "Benoît THÉBAUDEAU" <benoit.thebaudeau@advansee.com>
[yann.morin.1998@anciens.enib.fr: add comment for impossible static cross-gdb]
Signed-off-by: "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
yann@677
     1
Fix building gfortran for ARM.
yann@677
     2
http://gcc.gnu.org/ml/gcc-patches/2007-05/msg01010.html
yann@677
     3
----
yann@677
     4
yann@677
     5
The patch below fixes a crash building libgfortran on arm-linux-gnueabi.
yann@677
     6
yann@677
     7
This target doesn't really have a 128-bit integer type, however it does use 
yann@677
     8
TImode to represent the return value of certain special ABI defined library 
yann@677
     9
functions. This results in type_for_size(TImode) being called.
yann@677
    10
yann@677
    11
Because TImode deosn't correspond to any gfortran integer kind 
yann@677
    12
gfc_type_for_size returns NULL and we segfault shortly after.
yann@677
    13
yann@677
    14
The patch below fixes this by making gfc_type_for_size handle TImode in the 
yann@677
    15
same way as the C frontend.
yann@677
    16
yann@677
    17
Tested on x86_64-linux and arm-linux-gnueabi.
yann@677
    18
Applied to trunk.
yann@677
    19
yann@677
    20
Paul
yann@677
    21
yann@677
    22
2007-05-15  Paul Brook  <paul@codesourcery.com>
yann@677
    23
yann@677
    24
    gcc/fortran/
yann@677
    25
    * trans-types.c (gfc_type_for_size): Handle signed TImode.
yann@677
    26
yann@677
    27
diff -durN gcc-4.2.3.old/gcc/fortran/trans-types.c gcc-4.2.3/gcc/fortran/trans-types.c
yann@677
    28
--- gcc-4.2.3.old/gcc/fortran/trans-types.c	2007-08-31 10:27:50.000000000 +0200
yann@677
    29
+++ gcc-4.2.3/gcc/fortran/trans-types.c	2008-07-17 09:54:20.000000000 +0200
yann@677
    30
@@ -1799,6 +1799,13 @@
yann@677
    31
 	  if (type && bits == TYPE_PRECISION (type))
yann@677
    32
 	    return type;
yann@677
    33
 	}
yann@677
    34
+
yann@677
    35
+	/* Handle TImode as a special case because it is used by some backends
yann@677
    36
+	   (eg. ARM) even though it is not available for normal use.  */
yann@677
    37
+#if HOST_BITS_PER_WIDE_INT >= 64
yann@677
    38
+	if (bits == TYPE_PRECISION (intTI_type_node))
yann@677
    39
+	  return intTI_type_node;
yann@677
    40
+#endif
yann@677
    41
     }
yann@677
    42
   else
yann@677
    43
     {