diff mbox

libffi is broken for x32

Message ID CAMe9rOp5jCwZ548gNjdO7S6MenRLM1W-5q-KDOFOzuKhb_Zt=Q@mail.gmail.com
State New
Headers show

Commit Message

H.J. Lu Jan. 12, 2015, 11:46 p.m. UTC
On Mon, Jan 12, 2015 at 2:42 PM, H.J. Lu <hjl.tools@gmail.com> wrote:
> This libffi commit:
>
> 13e2d7b92557a9511a0414df82bf2df3edc55cba is the first bad commit
> commit 13e2d7b92557a9511a0414df82bf2df3edc55cba
> Author: Anthony Green <green@moxielogic.com>
> Date:   Thu Jan 10 10:52:02 2013 -0500
>
>     Handle both 32 and 64-bit x86 builds regardless of target triple
>
> breaks x32.
>

This patch passed "make check" in libffi on x32.  I am testing
it in GCC now.

GCC is configured as x86_64-unknown-linux-gnu with x32
enabled.  libffi should set TARGET to X86_64 if __x86_64__
is defined.

Comments

Richard Henderson Jan. 13, 2015, 12:29 a.m. UTC | #1
On 01/12/2015 03:46 PM, H.J. Lu wrote:
> On Mon, Jan 12, 2015 at 2:42 PM, H.J. Lu <hjl.tools@gmail.com> wrote:
>> This libffi commit:
>>
>> 13e2d7b92557a9511a0414df82bf2df3edc55cba is the first bad commit
>> commit 13e2d7b92557a9511a0414df82bf2df3edc55cba
>> Author: Anthony Green <green@moxielogic.com>
>> Date:   Thu Jan 10 10:52:02 2013 -0500
>>
>>     Handle both 32 and 64-bit x86 builds regardless of target triple
>>
>> breaks x32.
>>
> 
> This patch passed "make check" in libffi on x32.  I am testing
> it in GCC now.
> 
> GCC is configured as x86_64-unknown-linux-gnu with x32
> enabled.  libffi should set TARGET to X86_64 if __x86_64__
> is defined.

I thought the target for that was x86_64-*-linux-gnux32?

There's not usually an x32 multilib for "plain" 64-bit, so
I wonder how you're configuring?


r~
H.J. Lu Jan. 13, 2015, 12:57 a.m. UTC | #2
On Mon, Jan 12, 2015 at 4:29 PM, Richard Henderson <rth@redhat.com> wrote:
> On 01/12/2015 03:46 PM, H.J. Lu wrote:
>> On Mon, Jan 12, 2015 at 2:42 PM, H.J. Lu <hjl.tools@gmail.com> wrote:
>>> This libffi commit:
>>>
>>> 13e2d7b92557a9511a0414df82bf2df3edc55cba is the first bad commit
>>> commit 13e2d7b92557a9511a0414df82bf2df3edc55cba
>>> Author: Anthony Green <green@moxielogic.com>
>>> Date:   Thu Jan 10 10:52:02 2013 -0500
>>>
>>>     Handle both 32 and 64-bit x86 builds regardless of target triple
>>>
>>> breaks x32.
>>>
>>
>> This patch passed "make check" in libffi on x32.  I am testing
>> it in GCC now.
>>
>> GCC is configured as x86_64-unknown-linux-gnu with x32
>> enabled.  libffi should set TARGET to X86_64 if __x86_64__
>> is defined.
>
> I thought the target for that was x86_64-*-linux-gnux32?
>
> There's not usually an x32 multilib for "plain" 64-bit, so
> I wonder how you're configuring?
>

The problem is my x86_64-*-linux-gnux32 patch

https://gcc.gnu.org/ml/gcc-patches/2012-08/msg01083.html

was never accepted upstream.  Can I apply it to config.guess
in GCC?
H.J. Lu Jan. 13, 2015, 12:59 a.m. UTC | #3
On Mon, Jan 12, 2015 at 3:46 PM, H.J. Lu <hjl.tools@gmail.com> wrote:
> On Mon, Jan 12, 2015 at 2:42 PM, H.J. Lu <hjl.tools@gmail.com> wrote:
>> This libffi commit:
>>
>> 13e2d7b92557a9511a0414df82bf2df3edc55cba is the first bad commit
>> commit 13e2d7b92557a9511a0414df82bf2df3edc55cba
>> Author: Anthony Green <green@moxielogic.com>
>> Date:   Thu Jan 10 10:52:02 2013 -0500
>>
>>     Handle both 32 and 64-bit x86 builds regardless of target triple
>>
>> breaks x32.
>>
>
> This patch passed "make check" in libffi on x32.  I am testing
> it in GCC now.
>
> GCC is configured as x86_64-unknown-linux-gnu with x32
> enabled.  libffi should set TARGET to X86_64 if __x86_64__
> is defined.

It fixed GCC build.

Anthony,  can you apply it to libffi?

Thanks.
Richard Henderson Jan. 13, 2015, 1:13 a.m. UTC | #4
On 01/12/2015 04:57 PM, H.J. Lu wrote:
> The problem is my x86_64-*-linux-gnux32 patch
> 
> https://gcc.gnu.org/ml/gcc-patches/2012-08/msg01083.html
> 
> was never accepted upstream.  Can I apply it to config.guess
> in GCC?

Ah.  Hmm.  Perhaps the configure.host patch would be better after all.


r~
H.J. Lu Jan. 13, 2015, 3:35 p.m. UTC | #5
On Mon, Jan 12, 2015 at 5:13 PM, Richard Henderson <rth@redhat.com> wrote:
> On 01/12/2015 04:57 PM, H.J. Lu wrote:
>> The problem is my x86_64-*-linux-gnux32 patch
>>
>> https://gcc.gnu.org/ml/gcc-patches/2012-08/msg01083.html
>>
>> was never accepted upstream.  Can I apply it to config.guess
>> in GCC?
>
> Ah.  Hmm.  Perhaps the configure.host patch would be better after all.
>

Can I apply it to GCC trunk?

Thanks.
Richard Henderson Jan. 13, 2015, 3:51 p.m. UTC | #6
On 01/13/2015 07:35 AM, H.J. Lu wrote:
> Can I apply it to GCC trunk?

Please.


r~
diff mbox

Patch

From 9aedae5848333acf55fa34fd734d5704364ccaa1 Mon Sep 17 00:00:00 2001
From: "H.J. Lu" <hjl.tools@gmail.com>
Date: Mon, 12 Jan 2015 15:25:10 -0800
Subject: [PATCH] Set TARGET to X86_64 if __x86_64__ is defined

---
 configure.host | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/configure.host b/configure.host
index 5ee632c..c7eb9c8 100644
--- a/configure.host
+++ b/configure.host
@@ -100,7 +100,13 @@  case "${host}" in
 	      TARGET=X86_64
 	      ;;
 	    *)
-	      TARGET=X86
+	      echo 'int foo (void) { return __x86_64__; }' > conftest.c
+	      if $CC $CFLAGS -Werror -S conftest.c -o conftest.s > /dev/null 2>&1; then
+		TARGET=X86_64;
+	      else
+		TARGET=X86;
+	      fi
+	      rm -f conftest.*
 	      ;;
           esac
 	else
-- 
1.9.3