From mboxrd@z Thu Jan 1 00:00:00 1970 From: ludo@gnu.org (Ludovic =?utf-8?Q?Court=C3=A8s?=) Subject: Re: mips64el: guild problem Date: Mon, 18 Feb 2013 23:28:39 +0100 Message-ID: <878v6l45pk.fsf@gnu.org> References: <201302181932.28497.andreas@enge.fr> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Return-path: Received: from eggs.gnu.org ([208.118.235.92]:42860) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1U7ZCe-0008Ar-80 for bug-guix@gnu.org; Mon, 18 Feb 2013 17:28:53 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1U7ZCc-0004gj-Iz for bug-guix@gnu.org; Mon, 18 Feb 2013 17:28:52 -0500 Received: from [2a01:e0b:1:123:ca0a:a9ff:fe03:271e] (port=51323 helo=xanadu.aquilenet.fr) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1U7ZCc-0004dC-9y for bug-guix@gnu.org; Mon, 18 Feb 2013 17:28:50 -0500 In-Reply-To: <201302181932.28497.andreas@enge.fr> (Andreas Enge's message of "Mon, 18 Feb 2013 19:32:28 +0100") List-Id: Bug reports for GNU Guix List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-guix-bounces+gcggb-bug-guix=m.gmane.org@gnu.org Sender: bug-guix-bounces+gcggb-bug-guix=m.gmane.org@gnu.org To: Andreas Enge Cc: bug-guix@gnu.org Andreas Enge skribis: > ice-9/boot-9.scm:106:20: In procedure make_objcode_from_file: bad header = on=20 > object file: "GOOF----LE-8-2.0" This =E2=80=9CGOOF=E2=80=9D cookie indicates the Guile Object Object(!) For= mat. Here, it says little endian with 8-byte pointers. That corresponds to this GNU triplet: --8<---------------cut here---------------start------------->8--- scheme@(system base target)> (with-target "mips64el-unknown-linux-gnu" (lam= bda () (list (target-endianness) (target-word-size)))) $2 =3D (little 8) --8<---------------cut here---------------end--------------->8--- However, my guess is that Guile was compiled with the N32 ABI, so it expects 4-byte words. But Guile=E2=80=99s system/base/target.scm makes this wrong assumption that =E2=80=9Cmips64=E2=80=9D means 8-byte pointers: --8<---------------cut here---------------start------------->8--- (define (cpu-word-size cpu) "Return the word size for CPU." (if (string=3D? cpu (triplet-cpu %host-type)) %native-word-size (cond ((string-match "^i[0-9]86$" cpu) 4) ((string-match "64$" cpu) 8) ((string-match "64[lbe][lbe]$" cpu) 8) ((member cpu '("sparc" "powerpc" "mips" "mipsel")) 4) ((string-match "^arm.*" cpu) 4) (else (error "unknown CPU word size" cpu))))) --8<---------------cut here---------------end--------------->8--- For now, you can work around it by removing the --target argument from Makefile.am. Can you confirm? Thanks, Ludo=E2=80=99.