Skip to content

Commit

Permalink
app-emulation/dosemu: fix LTO build, bug #700126
Browse files Browse the repository at this point in the history
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 <[email protected]>
  • Loading branch information
Sergei Trofimovich committed Nov 15, 2019
1 parent 132bb62 commit 3285097
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 0 deletions.
1 change: 1 addition & 0 deletions app-emulation/dosemu/dosemu-1.4.1_pre20130107-r5.ebuild
Original file line number Diff line number Diff line change
Expand Up @@ -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() {
Expand Down
27 changes: 27 additions & 0 deletions app-emulation/dosemu/files/dosemu-1.4.1_pre20130107-lto.patch
Original file line number Diff line number Diff line change
@@ -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)

0 comments on commit 3285097

Please sign in to comment.