commit:     7a0e31adf6af28adf3c8709e542ecf7039cb5942
Author:     Sergei Trofimovich <slyfox <AT> gentoo <DOT> org>
AuthorDate: Thu Dec  1 21:53:42 2016 +0000
Commit:     Sergei Trofimovich <slyfox <AT> gentoo <DOT> org>
CommitDate: Thu Dec  1 22:05:20 2016 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=7a0e31ad

dev-lang/mono: fix ABI_X86=32 build case for amd64 host, bug #600664

The patch passes flags to adjust target ABI
of a multiarch assembler and linker.

Reported-by: Ivan Dorna
Reported-by: Toralf Förster
Bug: https://github.com/gentoo/dotnet/issues/270
Bug: https://bugs.gentoo.org/600664

Package-Manager: portage-2.3.2

 dev-lang/mono/files/mono-4.8.0.371-x86_32.patch | 27 +++++++++++++++++++++++++
 dev-lang/mono/mono-4.8.0.371.ebuild             |  5 ++++-
 2 files changed, 31 insertions(+), 1 deletion(-)

diff --git a/dev-lang/mono/files/mono-4.8.0.371-x86_32.patch 
b/dev-lang/mono/files/mono-4.8.0.371-x86_32.patch
new file mode 100644
index 00000000..063ea63
--- /dev/null
+++ b/dev-lang/mono/files/mono-4.8.0.371-x86_32.patch
@@ -0,0 +1,27 @@
+Native toolchain can default to different ABI (amd64 in bug case).
+Set target to i386.
+https://bugs.gentoo.org/600664
+diff --git a/mono/mini/aot-compiler.c b/mono/mini/aot-compiler.c
+index a1c359f..beaaf76 100644
+--- a/mono/mini/aot-compiler.c
++++ b/mono/mini/aot-compiler.c
+@@ -9842,7 +9842,9 @@ compile_asm (MonoAotCompile *acfg)
+       const char *tool_prefix = acfg->aot_opts.tool_prefix ? 
acfg->aot_opts.tool_prefix : "";
+       char *ld_flags = acfg->aot_opts.ld_flags ? acfg->aot_opts.ld_flags : 
g_strdup("");
+ 
+-#if defined(TARGET_AMD64) && !defined(TARGET_MACH)
++#if defined(TARGET_X86) && !defined(TARGET_MACH)
++#define AS_OPTIONS "--32"
++#elif defined(TARGET_AMD64) && !defined(TARGET_MACH)
+ #define AS_OPTIONS "--64"
+ #elif defined(TARGET_POWERPC64)
+ #define AS_OPTIONS "-a64 -mppc64"
+@@ -9886,6 +9888,8 @@ compile_asm (MonoAotCompile *acfg)
+ #define LD_OPTIONS "--shared"
+ #elif defined(TARGET_POWERPC64)
+ #define LD_OPTIONS "-m elf64ppc"
++#elif defined(TARGET_X86)
++#define LD_OPTIONS "-m elf_i386"
+ #endif
+ 
+ #ifndef LD_OPTIONS

diff --git a/dev-lang/mono/mono-4.8.0.371.ebuild 
b/dev-lang/mono/mono-4.8.0.371.ebuild
index 4a4e512..1995170 100644
--- a/dev-lang/mono/mono-4.8.0.371.ebuild
+++ b/dev-lang/mono/mono-4.8.0.371.ebuild
@@ -33,7 +33,10 @@ DEPEND="${COMMONDEPEND}
        !dev-lang/mono-basic
 "
 
-PATCHES=("${FILESDIR}"/${PN}-4.8.0.371-makedev.patch)
+PATCHES=(
+       "${FILESDIR}"/${PN}-4.8.0.371-makedev.patch
+       "${FILESDIR}"/${PN}-4.8.0.371-x86_32.patch
+)
 
 S="${WORKDIR}/${PN}-$(get_version_component_range 1-3)"
 

Reply via email to