diff --git a/wine-relocate-base.patch b/wine-relocate-base.patch new file mode 100644 index 0000000..969c591 --- /dev/null +++ b/wine-relocate-base.patch @@ -0,0 +1,68 @@ +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 +--- + 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 + + + + diff --git a/wine.changes b/wine.changes index f304a7f..7b593b9 100644 --- a/wine.changes +++ b/wine.changes @@ -1,3 +1,10 @@ +------------------------------------------------------------------- +Sat Oct 17 18:13:42 UTC 2015 - meissner@suse.com + +- remove prelink build dependency +- wine-relocate-base.patch: Use the -Ttext-segment linker option to + specify the text segment start. + ------------------------------------------------------------------- Fri Oct 16 14:24:25 UTC 2015 - meissner@suse.com diff --git a/wine.spec b/wine.spec index 27c087a..1f25c5a 100644 --- a/wine.spec +++ b/wine.spec @@ -48,10 +48,6 @@ BuildRequires: openal-soft-devel BuildRequires: openldap2-devel BuildRequires: openssl-devel BuildRequires: pkgconfig -%ifarch %{ix86} x86_64 -# only used on win32 and win64 today -BuildRequires: prelink -%endif # Marcus: remove it in devel too if you remove it here. BuildRequires: gcc48 @@ -80,6 +76,7 @@ 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... @@ -126,6 +123,7 @@ libraries. %prep %setup -q #%patch0 -p1 +%patch1 -p1 # cp %{S:3} . #