From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1ZTZ3U-0003Pp-Ue for mharc-grub-devel@gnu.org; Sun, 23 Aug 2015 13:27:40 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:58903) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZTZ3S-0003PN-HV for grub-devel@gnu.org; Sun, 23 Aug 2015 13:27:39 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ZTZ3P-0000vz-Ax for grub-devel@gnu.org; Sun, 23 Aug 2015 13:27:38 -0400 Received: from world.peace.net ([50.252.239.5]:47776) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZTZ3P-0000vn-8K for grub-devel@gnu.org; Sun, 23 Aug 2015 13:27:35 -0400 Received: from [10.1.10.32] (helo=yeeloong) by world.peace.net with esmtpsa (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.72) (envelope-from ) id 1ZTZ3H-0008A7-QN; Sun, 23 Aug 2015 13:27:27 -0400 From: Mark H Weaver To: Andrei Borzenkov Subject: Re: [PATCH] Ensure that MIPS target code is compiled for the O32 ABI. References: <1440009323-8667-1-git-send-email-mhw@netris.org> <55D6A36D.205@gmail.com> <876147ryhy.fsf@netris.org> <55D99791.4080104@gmail.com> Date: Sun, 23 Aug 2015 13:27:07 -0400 In-Reply-To: <55D99791.4080104@gmail.com> (Andrei Borzenkov's message of "Sun, 23 Aug 2015 12:51:13 +0300") Message-ID: <87mvxhx6dw.fsf@netris.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.5 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6.x X-Received-From: 50.252.239.5 Cc: The development of GNU GRUB X-BeenThere: grub-devel@gnu.org X-Mailman-Version: 2.1.14 Precedence: list Reply-To: The development of GNU GRUB List-Id: The development of GNU GRUB List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 23 Aug 2015 17:27:39 -0000 Andrei Borzenkov writes: > 22.08.2015 21:04, Mark H Weaver =D0=BF=D0=B8=D1=88=D0=B5=D1=82: >> Andrei Borzenkov writes: >> >>> 19.08.2015 21:35, Mark H Weaver =D0=BF=D0=B8=D1=88=D0=B5=D1=82: >>>> Include -mabi=3D32 in CFLAGS_PLATFORM and CCASFLAGS_PLATFORM to compile >>>> code for the O32 ABI when targetting MIPS, since the MIPS assembly code >>>> in GRUB assumes this. This flag is also needed when compiling >>>> asm-tests/mips.S from configure, because GNU as rejects MIPS register >>>> names such as $t2 unless the O32 ABI is selected. > > BTW, I assume this did work at some point; so this needs more verbose > explanation what changed and why it stopped working. It worked, and probably still works, on MIPS systems that use the O32 ABI. It has never worked on systems that use one of the newer ABIs for MIPS. >>>> --- >>>> conf/Makefile.common | 4 ++++ >>>> configure.ac | 7 +++++-- >>>> 2 files changed, 9 insertions(+), 2 deletions(-) >>>> >>>> diff --git a/conf/Makefile.common b/conf/Makefile.common >>>> index fcb8d2e..bd125da 100644 >>>> --- a/conf/Makefile.common >>>> +++ b/conf/Makefile.common >>>> @@ -20,6 +20,10 @@ endif >>>> if COND_powerpc_ieee1275 >>>> CFLAGS_PLATFORM +=3D -mcpu=3Dpowerpc >>>> endif >>>> +if COND_mips >>>> + CFLAGS_PLATFORM +=3D -mabi=3D32 >>>> + CCASFLAGS_PLATFORM =3D -mabi=3D32 >>>> +endif >>>> >>> >>> Does it work with clang? >> >> Based on the error message below, clang seems to accept and understand >> the -mabi=3D32 option, but the version of clang that we have in GNU Guix >> (which uses the N32 ABI on MIPS) seems to lack support for compiling for >> O32: >> >> mhw@librenote:~$ clang -mabi=3D32 mips.S >> error: unknown target CPU 'mips32r2' >> > > Are you on native MIPS platform or cross-compiling? I've done all of my tests on a native MIPS platform. I haven't tried cross-compiling, and would prefer to avoid it. > Which clang version? 3.6.0. > This works for me using current upstream clang (I do not have > cross binutils so linking fails, but that's different story). [...] > Actually this works for me also without -mabi=3D32 and produced object > type is identical That's because the compiler you're using has been configured to use the O32 ABI by default. In that case, -mabi=3D32 has no effect because that flag means "compile for the O32 ABI", which is already the default. Thanks, Mark