diff mbox series

Multilib support for amd64 FreeBSD

Message ID b879a650-fcd8-c3cc-4e69-ebe381490638@fgznet.ch
State New
Headers show
Series Multilib support for amd64 FreeBSD | expand

Commit Message

Andreas Tobler March 17, 2019, 8:40 p.m. UTC
Hi all,

this patch adds support for multilib on x86_64-unknown-freebsd*
The multilibs are 32-bit.

This patch is functionality tested on gcc8 and gcc9. Test suite testing 
is a bit tricky since the FreeBSD dynamic linker handles both, the 
32-bit and the 64-bit binaries. So, if I have a 64-bit libgcc in the 
LD_LIBRARY_PATH the test fails.
I tweaked the build tree and removed the 64-bit libgcc to test the 
32-bit binaries built. So far it looks good. Need to find a way to 
extend the testsuite to handle this situation.

Any comments about it are welcome.

Also, when would be the best time to commit this patch? Afair trunk is 
in stage4, right?
The patch itself only affects x86_64-unknown-freebsd.

TIA,
Andreas

2019-03-17  Andreas Tobler  <andreast@gcc.gnu.org>

	* config/i386/freebsd64.h: Add bits for 32-bit multilib support.
	* config/i386/t-freebsd64: New file.
	* config.gcc: Add the t-freebsd64 for multilib support.

Comments

Jeff Law March 18, 2019, 9:22 p.m. UTC | #1
On 3/17/19 2:40 PM, Andreas Tobler wrote:
> Hi all,
> 
> this patch adds support for multilib on x86_64-unknown-freebsd*
> The multilibs are 32-bit.
> 
> This patch is functionality tested on gcc8 and gcc9. Test suite testing
> is a bit tricky since the FreeBSD dynamic linker handles both, the
> 32-bit and the 64-bit binaries. So, if I have a 64-bit libgcc in the
> LD_LIBRARY_PATH the test fails.
> I tweaked the build tree and removed the 64-bit libgcc to test the
> 32-bit binaries built. So far it looks good. Need to find a way to
> extend the testsuite to handle this situation.
> 
> Any comments about it are welcome.
> 
> Also, when would be the best time to commit this patch? Afair trunk is
> in stage4, right?
> The patch itself only affects x86_64-unknown-freebsd.
> 
> TIA,
> Andreas
> 
> 2019-03-17  Andreas Tobler  <andreast@gcc.gnu.org>
> 
>     * config/i386/freebsd64.h: Add bits for 32-bit multilib support.
>     * config/i386/t-freebsd64: New file.
>     * config.gcc: Add the t-freebsd64 for multilib support.
> 
> 
stage4 is supposed to be regression fixes only, so it's difficult to
make a case for this patch to get into gcc-9.

I'd say defer to gcc-10.

jeff
Andreas Tobler March 18, 2019, 9:28 p.m. UTC | #2
On 18.03.19 22:22, Jeff Law wrote:
> On 3/17/19 2:40 PM, Andreas Tobler wrote:
>> Hi all,
>>
>> this patch adds support for multilib on x86_64-unknown-freebsd*
>> The multilibs are 32-bit.
>>
>> This patch is functionality tested on gcc8 and gcc9. Test suite testing
>> is a bit tricky since the FreeBSD dynamic linker handles both, the
>> 32-bit and the 64-bit binaries. So, if I have a 64-bit libgcc in the
>> LD_LIBRARY_PATH the test fails.
>> I tweaked the build tree and removed the 64-bit libgcc to test the
>> 32-bit binaries built. So far it looks good. Need to find a way to
>> extend the testsuite to handle this situation.
>>
>> Any comments about it are welcome.
>>
>> Also, when would be the best time to commit this patch? Afair trunk is
>> in stage4, right?
>> The patch itself only affects x86_64-unknown-freebsd.
>>
>> TIA,
>> Andreas
>>
>> 2019-03-17  Andreas Tobler  <andreast@gcc.gnu.org>
>>
>>      * config/i386/freebsd64.h: Add bits for 32-bit multilib support.
>>      * config/i386/t-freebsd64: New file.
>>      * config.gcc: Add the t-freebsd64 for multilib support.
>>
>>
> stage4 is supposed to be regression fixes only, so it's difficult to
> make a case for this patch to get into gcc-9.
> 
> I'd say defer to gcc-10.

Ok, fine with me.
Once gcc-10 opens, I will commit this patch also to all open and active 
branches.
Thank you for the statement.
Andreas
Andreas Tobler April 25, 2019, 8:07 p.m. UTC | #3
On 18.03.19 22:28, Andreas Tobler wrote:
> On 18.03.19 22:22, Jeff Law wrote:
>> On 3/17/19 2:40 PM, Andreas Tobler wrote:
>>> Hi all,
>>>
>>> this patch adds support for multilib on x86_64-unknown-freebsd*
>>> The multilibs are 32-bit.
>>>
>>> This patch is functionality tested on gcc8 and gcc9. Test suite testing
>>> is a bit tricky since the FreeBSD dynamic linker handles both, the
>>> 32-bit and the 64-bit binaries. So, if I have a 64-bit libgcc in the
>>> LD_LIBRARY_PATH the test fails.
>>> I tweaked the build tree and removed the 64-bit libgcc to test the
>>> 32-bit binaries built. So far it looks good. Need to find a way to
>>> extend the testsuite to handle this situation.
>>>
>>> Any comments about it are welcome.
>>>
>>> Also, when would be the best time to commit this patch? Afair trunk is
>>> in stage4, right?
>>> The patch itself only affects x86_64-unknown-freebsd.
>>>
>>> TIA,
>>> Andreas
>>>
>>> 2019-03-17  Andreas Tobler  <andreast@gcc.gnu.org>
>>>
>>>       * config/i386/freebsd64.h: Add bits for 32-bit multilib support.
>>>       * config/i386/t-freebsd64: New file.
>>>       * config.gcc: Add the t-freebsd64 for multilib support.
>>>
>>>
>> stage4 is supposed to be regression fixes only, so it's difficult to
>> make a case for this patch to get into gcc-9.
>>
>> I'd say defer to gcc-10.
> 
> Ok, fine with me.
> Once gcc-10 opens, I will commit this patch also to all open and active
> branches.

Pushed to trunk, branches will follow.

Andreas
Andreas Tobler May 11, 2019, 8:47 p.m. UTC | #4
On 25.04.19 22:07, Andreas Tobler wrote:
> On 18.03.19 22:28, Andreas Tobler wrote:
>> On 18.03.19 22:22, Jeff Law wrote:
>>> On 3/17/19 2:40 PM, Andreas Tobler wrote:
>>>> Hi all,
>>>>
>>>> this patch adds support for multilib on x86_64-unknown-freebsd*
>>>> The multilibs are 32-bit.
>>>>
>>>> This patch is functionality tested on gcc8 and gcc9. Test suite testing
>>>> is a bit tricky since the FreeBSD dynamic linker handles both, the
>>>> 32-bit and the 64-bit binaries. So, if I have a 64-bit libgcc in the
>>>> LD_LIBRARY_PATH the test fails.
>>>> I tweaked the build tree and removed the 64-bit libgcc to test the
>>>> 32-bit binaries built. So far it looks good. Need to find a way to
>>>> extend the testsuite to handle this situation.
>>>>
>>>> Any comments about it are welcome.
>>>>
>>>> Also, when would be the best time to commit this patch? Afair trunk is
>>>> in stage4, right?
>>>> The patch itself only affects x86_64-unknown-freebsd.
>>>>
>>>> TIA,
>>>> Andreas
>>>>
>>>> 2019-03-17  Andreas Tobler  <andreast@gcc.gnu.org>
>>>>
>>>>        * config/i386/freebsd64.h: Add bits for 32-bit multilib support.
>>>>        * config/i386/t-freebsd64: New file.
>>>>        * config.gcc: Add the t-freebsd64 for multilib support.
>>>>
>>>>
>>> stage4 is supposed to be regression fixes only, so it's difficult to
>>> make a case for this patch to get into gcc-9.
>>>
>>> I'd say defer to gcc-10.
>>
>> Ok, fine with me.
>> Once gcc-10 opens, I will commit this patch also to all open and active
>> branches.
> 
> Pushed to trunk, branches will follow.

Commit to branch gcc9 done.

Andreas
Andreas Tobler May 11, 2019, 8:57 p.m. UTC | #5
On 25.04.19 22:07, Andreas Tobler wrote:
> On 18.03.19 22:28, Andreas Tobler wrote:
>> On 18.03.19 22:22, Jeff Law wrote:
>>> On 3/17/19 2:40 PM, Andreas Tobler wrote:
>>>> Hi all,
>>>>
>>>> this patch adds support for multilib on x86_64-unknown-freebsd*
>>>> The multilibs are 32-bit.
>>>>
>>>> This patch is functionality tested on gcc8 and gcc9. Test suite testing
>>>> is a bit tricky since the FreeBSD dynamic linker handles both, the
>>>> 32-bit and the 64-bit binaries. So, if I have a 64-bit libgcc in the
>>>> LD_LIBRARY_PATH the test fails.
>>>> I tweaked the build tree and removed the 64-bit libgcc to test the
>>>> 32-bit binaries built. So far it looks good. Need to find a way to
>>>> extend the testsuite to handle this situation.
>>>>
>>>> Any comments about it are welcome.
>>>>
>>>> Also, when would be the best time to commit this patch? Afair trunk is
>>>> in stage4, right?
>>>> The patch itself only affects x86_64-unknown-freebsd.
>>>>
>>>> TIA,
>>>> Andreas
>>>>
>>>> 2019-03-17  Andreas Tobler  <andreast@gcc.gnu.org>
>>>>
>>>>        * config/i386/freebsd64.h: Add bits for 32-bit multilib support.
>>>>        * config/i386/t-freebsd64: New file.
>>>>        * config.gcc: Add the t-freebsd64 for multilib support.
>>>>
>>>>
>>> stage4 is supposed to be regression fixes only, so it's difficult to
>>> make a case for this patch to get into gcc-9.
>>>
>>> I'd say defer to gcc-10.
>>
>> Ok, fine with me.
>> Once gcc-10 opens, I will commit this patch also to all open and active
>> branches.

Commit to branch gcc8 done.

Andreas
diff mbox series

Patch

Index: config/i386/freebsd64.h
===================================================================
--- config/i386/freebsd64.h	(revision 269746)
+++ config/i386/freebsd64.h	(working copy)
@@ -31,7 +31,7 @@ 
 
 #undef	LINK_SPEC
 #define LINK_SPEC "\
-  %{m32:-m elf_i386_fbsd} \
+  %{m32:-m elf_i386_fbsd}%{!m32:-m elf_x86_64_fbsd} \
   %{p:%nconsider using '-pg' instead of '-p' with gprof(1)} \
   %{v:-V} \
   %{assert*} %{R*} %{rpath*} %{defsym*} \
@@ -42,3 +42,6 @@ 
 	-dynamic-linker %(fbsd_dynamic_linker) } \
     %{static:-Bstatic}} \
   %{symbolic:-Bsymbolic}"
+
+#undef	MULTILIB_DEFAULTS
+#define MULTILIB_DEFAULTS { "m64" }
Index: config/i386/t-freebsd64
===================================================================
--- config/i386/t-freebsd64	(nonexistent)
+++ config/i386/t-freebsd64	(working copy)
@@ -0,0 +1,30 @@ 
+# Copyright (C) 2019 Free Software Foundation, Inc.
+#
+# This file is part of GCC.
+#
+# GCC is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3, or (at your option)
+# any later version.
+#
+# GCC is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with GCC; see the file COPYING3.  If not see
+# <http://www.gnu.org/licenses/>.
+
+# The 32-bit libraries are found in /usr/lib32
+
+# To support i386 and x86-64, the directory structrue
+# should be:
+#
+# 	/lib has x86-64 libraries.
+# 	/lib32 has i386 libraries.
+#
+
+MULTILIB_OPTIONS    = m32
+MULTILIB_DIRNAMES   = 32
+MULTILIB_OSDIRNAMES = ../lib32
Index: config.gcc
===================================================================
--- config.gcc	(revision 269746)
+++ config.gcc	(working copy)
@@ -4925,8 +4925,11 @@ 
 		;;
 	i[34567]86-*-dragonfly* | x86_64-*-dragonfly*)
 		;;
-	i[34567]86-*-freebsd* | x86_64-*-freebsd*)
+	i[34567]86-*-freebsd*)
 		;;
+	x86_64-*-freebsd*)
+		tmake_file="${tmake_file} i386/t-freebsd64"
+		;;
 	ia64*-*-linux*)
 		;;