patches/binutils/2.15/260-s390-invalid-insn-format.patch
author "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
Fri Sep 04 17:27:16 2009 +0200 (2009-09-04)
changeset 1512 439a6b292917
parent 402 197e1b49586e
permissions -rw-r--r--
TODO: update

Add TODO list for m4, autoconf, automake and libtool.
Building our own versions would remove burden from the users
who have older versions on their distributions, and are not
ready/able/allowed to upgrade.
     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