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

apparently, the patchset for gcc 4.2.1 applies properly to the
source for gcc 4.2.2 and gcc 4.2.3. so, if you want, you can simply
add support for those last two just by augmenting menuconfig and
adding a couple symlinks for those two directories. seems like a
cheap way to add a couple new versions.
yann@402
     1
Message-ID: <000801c48f60$cec16630$9103a8c0@ULOC5012>
yann@402
     2
From: "Michael Geiger" <mcgege@gmx.de>
yann@402
     3
To: <dank@kegel.com>
yann@402
     4
Subject: Patch for cross compiling s/390 kernel on linux host
yann@402
     5
Date: Tue, 31 Aug 2004 15:45:41 +0200
yann@402
     6
yann@402
     7
Dear Dan,
yann@402
     8
yann@402
     9
I had big problems compiling a kernel for s/390 on my linux host - I tried
yann@402
    10
different chains from crosstool-0.28-rc34 and finally succeded with
yann@402
    11
gcc-3.3.4-glibc-2.3.2 after applying another patch to binutils-2.15
yann@402
    12
(attached).
yann@402
    13
All compilations of the different kernel versions I tried stopped with
yann@402
    14
"Invalid .insn format" somewhere. I checked the recent cvs version of
yann@402
    15
binutils and applied the latest diff to gas/config/tc-s390.c and that solved
yann@402
    16
it.
yann@402
    17
yann@402
    18
Greetings
yann@402
    19
yann@402
    20
Michael Geiger
yann@402
    21
yann@402
    22
yann@402
    23
diff -u -r1.39 -r1.40
yann@402
    24
--- src/gas/config/tc-s390.c	2004/05/06 11:01:48	1.39
yann@402
    25
+++ src/gas/config/tc-s390.c	2004/06/15 12:38:08	1.40
yann@402
    26
@@ -1596,13 +1596,13 @@
yann@402
    27
   if (exp.X_op == O_constant)
yann@402
    28
     {
yann@402
    29
       if (   (   opformat->oplen == 6
yann@402
    30
-	      && exp.X_add_number >= 0
yann@402
    31
+	      && (addressT) exp.X_add_number >= 0
yann@402
    32
 	      && (addressT) exp.X_add_number < (1ULL << 48))
yann@402
    33
 	  || (   opformat->oplen == 4
yann@402
    34
-	      && exp.X_add_number >= 0
yann@402
    35
+	      && (addressT) exp.X_add_number >= 0
yann@402
    36
 	      && (addressT) exp.X_add_number < (1ULL << 32))
yann@402
    37
 	  || (   opformat->oplen == 2
yann@402
    38
-	      && exp.X_add_number >= 0
yann@402
    39
+	      && (addressT) exp.X_add_number >= 0
yann@402
    40
 	      && (addressT) exp.X_add_number < (1ULL << 16)))
yann@402
    41
 	md_number_to_chars (insn, exp.X_add_number, opformat->oplen);
yann@402
    42
       else