patches/binutils/2.15/260-s390-invalid-insn-format.patch
author "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
Thu Aug 07 13:28:02 2008 +0000 (2008-08-07)
changeset 763 f078be5961ec
parent 402 197e1b49586e
permissions -rw-r--r--
Fix building core C compiler.
PowerPC unveiled that you can't reliably build a target libgcc until you have C library headers.
In fact you can't build it at all. The fact that it did build for some architectures was purely coincidental, and a mistake.
This fix should still allow to build uClibc-based toolchains (some ARM uClibc toolchains were build-tested).

/trunk/scripts/build/cc_gcc.sh | 100 47 53 0 +++++++++++++++++++++++-------------------------
1 file changed, 47 insertions(+), 53 deletions(-)
     1 Message-ID: <000801c48f60$cec16630$9103a8c0@ULOC5012>
     2 From: "Michael Geiger" <mcgege@gmx.de>
     3 To: <dank@kegel.com>
     4 Subject: Patch for cross compiling s/390 kernel on linux host
     5 Date: Tue, 31 Aug 2004 15:45:41 +0200
     6 
     7 Dear Dan,
     8 
     9 I had big problems compiling a kernel for s/390 on my linux host - I tried
    10 different chains from crosstool-0.28-rc34 and finally succeded with
    11 gcc-3.3.4-glibc-2.3.2 after applying another patch to binutils-2.15
    12 (attached).
    13 All compilations of the different kernel versions I tried stopped with
    14 "Invalid .insn format" somewhere. I checked the recent cvs version of
    15 binutils and applied the latest diff to gas/config/tc-s390.c and that solved
    16 it.
    17 
    18 Greetings
    19 
    20 Michael Geiger
    21 
    22 
    23 diff -u -r1.39 -r1.40
    24 --- src/gas/config/tc-s390.c	2004/05/06 11:01:48	1.39
    25 +++ src/gas/config/tc-s390.c	2004/06/15 12:38:08	1.40
    26 @@ -1596,13 +1596,13 @@
    27    if (exp.X_op == O_constant)
    28      {
    29        if (   (   opformat->oplen == 6
    30 -	      && exp.X_add_number >= 0
    31 +	      && (addressT) exp.X_add_number >= 0
    32  	      && (addressT) exp.X_add_number < (1ULL << 48))
    33  	  || (   opformat->oplen == 4
    34 -	      && exp.X_add_number >= 0
    35 +	      && (addressT) exp.X_add_number >= 0
    36  	      && (addressT) exp.X_add_number < (1ULL << 32))
    37  	  || (   opformat->oplen == 2
    38 -	      && exp.X_add_number >= 0
    39 +	      && (addressT) exp.X_add_number >= 0
    40  	      && (addressT) exp.X_add_number < (1ULL << 16)))
    41  	md_number_to_chars (insn, exp.X_add_number, opformat->oplen);
    42        else