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.
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