patches/binutils/2.15/810-s390-invalid-insn-format.patch
author "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
Sun Feb 17 22:12:59 2008 +0000 (2008-02-17)
changeset 433 9886aa0a9694
permissions -rw-r--r--
Robert P. J. DAY says:

According to Mike Frysinger, this patch was removed from Gentoo in the
2.3.x series and didn't seem to cause any adverse effects. So toss it
from the patch directories for glibc 2.5 and up.
     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