commit:     328509762ae5fa834d72e58858252200ed52f6a8
Author:     Sergei Trofimovich <slyfox <AT> gentoo <DOT> org>
AuthorDate: Fri Nov 15 12:30:08 2019 +0000
Commit:     Sergei Trofimovich <slyfox <AT> gentoo <DOT> org>
CommitDate: Fri Nov 15 12:31:00 2019 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=32850976

app-emulation/dosemu: fix LTO build, bug #700126

Reported-by: Robert Gill
Closes: https://bugs.gentoo.org/700126
Package-Manager: Portage-2.3.79, Repoman-2.3.18
Signed-off-by: Sergei Trofimovich <slyfox <AT> gentoo.org>

 .../dosemu/dosemu-1.4.1_pre20130107-r5.ebuild      |  1 +
 .../files/dosemu-1.4.1_pre20130107-lto.patch       | 27 ++++++++++++++++++++++
 2 files changed, 28 insertions(+)

diff --git a/app-emulation/dosemu/dosemu-1.4.1_pre20130107-r5.ebuild 
b/app-emulation/dosemu/dosemu-1.4.1_pre20130107-r5.ebuild
index d6de58d0a4b..f2516914456 100644
--- a/app-emulation/dosemu/dosemu-1.4.1_pre20130107-r5.ebuild
+++ b/app-emulation/dosemu/dosemu-1.4.1_pre20130107-r5.ebuild
@@ -54,6 +54,7 @@ PATCHES=(
        "${FILESDIR}"/${P}-flex-2.6.3.patch
        "${FILESDIR}"/${P}-ia16-ldflags.patch
        "${FILESDIR}"/${P}-fix-inline.patch
+       "${FILESDIR}"/${P}-lto.patch
 )
 
 src_prepare() {

diff --git a/app-emulation/dosemu/files/dosemu-1.4.1_pre20130107-lto.patch 
b/app-emulation/dosemu/files/dosemu-1.4.1_pre20130107-lto.patch
new file mode 100644
index 00000000000..730ad4e5d5f
--- /dev/null
+++ b/app-emulation/dosemu/files/dosemu-1.4.1_pre20130107-lto.patch
@@ -0,0 +1,27 @@
+'asmlinkage' macros are supposed to make symbol available
+for calling from inline (or not) assembly.
+
+'static' keyword is not compatible to it and breaks -flto
+when gcc's LTO partitioner separates assembly definitions
+from C definitions. This causes symbol resolution failures:
+
+  ld: /tmp/dosemu.bin.h8Y59G.ltrans0.ltrans.o: in function `stub_rep__':
+  <artificial>:(.text+0xe): undefined reference to `rep_movs_stos'
+
+The changes turns 'asmlinkage' into exported symbol.
+
+https://bugs.gentoo.org/700126
+--- a/src/emu-i386/simx86/cpatch.c
++++ b/src/emu-i386/simx86/cpatch.c
+@@ -37,9 +37,9 @@
+ #include "codegen-arch.h"
+ 
+ #ifdef __i386__
+-#define asmlinkage static __attribute__((used)) __attribute__((cdecl))
++#define asmlinkage __attribute__((used)) __attribute__((cdecl))
+ #else
+-#define asmlinkage static __attribute__((used))
++#define asmlinkage __attribute__((used))
+ #endif
+ 
+ int s_munprotect(unsigned int addr)

Reply via email to