SHA256
1
0
forked from pool/wine

- wine-relocate-base.patch: is upstream

- winetricks: updated

OBS-URL: https://build.opensuse.org/package/show/Emulators/wine?expand=0&rev=316
This commit is contained in:
Marcus Meissner 2015-11-01 20:12:22 +00:00 committed by Git OBS Bridge
parent 15a1f9f3b2
commit 4a3d1f02d0
3 changed files with 2 additions and 70 deletions

View File

@ -1,68 +0,0 @@
Prelink was used to rewrite binares and set their text segment, but
modern linkers support setting the value at link time. Prelink is
being retired by upstream.
Signed-off-by: Michael Cronenworth <mike@cchtml.com>
---
configure.ac | 11 ++++++++---
tools/winegcc/winegcc.c | 11 +++++++++--
2 files changed, 17 insertions(+), 5 deletions(-)
diff --git a/configure.ac b/configure.ac
index de8cde5..f283802 100644
--- a/configure.ac
+++ b/configure.ac
@@ -988,10 +988,15 @@ wine-installed: main.o
*) LDEXECFLAGS="$LDEXECFLAGS -Wl,--section-start,.interp=0x7bf00400" ;;
esac
])
- AC_PATH_PROG(PRELINK, prelink, false, [/sbin /usr/sbin $PATH])
- if test "x$PRELINK" = xfalse
+ WINE_TRY_CFLAGS([-Wl,-Ttext-segment=0x7bc00000],
+ [HAVE_TTEXT_SEGMENT="yes"])
+ if test "x$HAVE_TTEXT_SEGMENT" != "xyes"
then
- WINE_WARNING([prelink not found, base address of core dlls won't be set correctly.])
+ AC_PATH_PROG(PRELINK, prelink, false, [/sbin /usr/sbin $PATH])
+ if test "x$PRELINK" = xfalse
+ then
+ WINE_WARNING([prelink not found and linker does not support relocation, base address of core dlls won't be set correctly.])
+ fi
fi
;;
esac
diff --git a/tools/winegcc/winegcc.c b/tools/winegcc/winegcc.c
index 3b2794e..4acd12d 100644
--- a/tools/winegcc/winegcc.c
+++ b/tools/winegcc/winegcc.c
@@ -1134,6 +1134,12 @@ static void build(struct options* opts)
}
break;
default:
+ /* Try option first, modern linkers support this */
+ if (opts->image_base &&
+ !try_link(opts->prefix, link_args, strmake("-Wl,-Ttext-segment=%s", opts->image_base)))
+ {
+ strarray_add(link_args, strmake("-Wl,-Ttext-segment=%s", opts->image_base));
+ }
break;
}
@@ -1167,8 +1173,9 @@ static void build(struct options* opts)
spawn(opts->prefix, link_args, 0);
strarray_free (link_args);
- /* set the base address */
- if (opts->image_base && !opts->target)
+ /* set the base address with prelink if linker support is not present */
+ if (opts->image_base && !opts->target &&
+ try_link(opts->prefix, link_args, strmake("-Wl,-Ttext-segment=%s", opts->image_base)))
{
const char *prelink = PRELINK;
if (prelink[0] && strcmp(prelink,"false"))
--
2.4.3

View File

@ -8,6 +8,8 @@ Fri Oct 30 13:46:11 UTC 2015 - meissner@suse.com
- Alternative for the deprecated prelink tool.
- Major Turkish translation update.
- Various bug fixes.
- wine-relocate-base.patch: is upstream
- winetricks: updated
-------------------------------------------------------------------
Fri Oct 23 09:25:26 UTC 2015 - meissner@suse.com

View File

@ -72,7 +72,6 @@ Source7: baselibs.conf
# SUSE specific patches
# - currently none, but add them here
#Patch0: susepatches.patch
Patch1: wine-relocate-base.patch
Recommends: wine-gecko >= 2.24
Recommends: wine-mp3
# not packaged in distro...
@ -118,7 +117,6 @@ libraries.
%prep
%setup -q
#%patch0 -p1
%patch1 -p1
#
cp %{S:3} .
#