makefiles: When supported, use -Ttext-segment also for the main loader.

Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
Alexandre Julliard 2016-03-28 16:24:37 +09:00
parent b06d343086
commit 36cf292048
2 changed files with 43 additions and 38 deletions

54
configure vendored
View File

@ -8550,6 +8550,34 @@ fi
case $host_cpu in
*i[3456789]86* | x86_64)
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports -Wl,-Ttext-segment=0x7bc00000" >&5
$as_echo_n "checking whether the compiler supports -Wl,-Ttext-segment=0x7bc00000... " >&6; }
if ${ac_cv_cflags__Wl__Ttext_segment_0x7bc00000+:} false; then :
$as_echo_n "(cached) " >&6
else
ac_wine_try_cflags_saved=$CFLAGS
CFLAGS="$CFLAGS -Wl,-Ttext-segment=0x7bc00000"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
int main(int argc, char **argv) { return 0; }
_ACEOF
if ac_fn_c_try_link "$LINENO"; then :
ac_cv_cflags__Wl__Ttext_segment_0x7bc00000=yes
else
ac_cv_cflags__Wl__Ttext_segment_0x7bc00000=no
fi
rm -f core conftest.err conftest.$ac_objext \
conftest$ac_exeext conftest.$ac_ext
CFLAGS=$ac_wine_try_cflags_saved
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cflags__Wl__Ttext_segment_0x7bc00000" >&5
$as_echo "$ac_cv_cflags__Wl__Ttext_segment_0x7bc00000" >&6; }
if test "x$ac_cv_cflags__Wl__Ttext_segment_0x7bc00000" = xyes; then :
case $host_os in
freebsd* | kfreebsd*-gnu) LDEXECFLAGS="$LDEXECFLAGS -Wl,-Ttext-segment=0x60000000" ;;
*) LDEXECFLAGS="$LDEXECFLAGS -Wl,-Ttext-segment=0x7bf00000" ;;
esac
else
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports -Wl,--section-start,.interp=0x7bf00400" >&5
$as_echo_n "checking whether the compiler supports -Wl,--section-start,.interp=0x7bf00400... " >&6; }
if ${ac_cv_cflags__Wl___section_start__interp_0x7bf00400+:} false; then :
@ -8577,33 +8605,7 @@ if test "x$ac_cv_cflags__Wl___section_start__interp_0x7bf00400" = xyes; then :
freebsd* | kfreebsd*-gnu) LDEXECFLAGS="$LDEXECFLAGS -Wl,--section-start,.interp=0x60000400" ;;
*) LDEXECFLAGS="$LDEXECFLAGS -Wl,--section-start,.interp=0x7bf00400" ;;
esac
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports -Wl,-Ttext-segment=0x7bc00000" >&5
$as_echo_n "checking whether the compiler supports -Wl,-Ttext-segment=0x7bc00000... " >&6; }
if ${ac_cv_cflags__Wl__Ttext_segment_0x7bc00000+:} false; then :
$as_echo_n "(cached) " >&6
else
ac_wine_try_cflags_saved=$CFLAGS
CFLAGS="$CFLAGS -Wl,-Ttext-segment=0x7bc00000"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
int main(int argc, char **argv) { return 0; }
_ACEOF
if ac_fn_c_try_link "$LINENO"; then :
ac_cv_cflags__Wl__Ttext_segment_0x7bc00000=yes
else
ac_cv_cflags__Wl__Ttext_segment_0x7bc00000=no
fi
rm -f core conftest.err conftest.$ac_objext \
conftest$ac_exeext conftest.$ac_ext
CFLAGS=$ac_wine_try_cflags_saved
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cflags__Wl__Ttext_segment_0x7bc00000" >&5
$as_echo "$ac_cv_cflags__Wl__Ttext_segment_0x7bc00000" >&6; }
if test "x$ac_cv_cflags__Wl__Ttext_segment_0x7bc00000" = xyes; then :
:
else
# Extract the first word of "prelink", so it can be a program name with args.
set dummy prelink; ac_word=$2
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5

View File

@ -895,14 +895,17 @@ case $host_os in
case $host_cpu in
*i[[3456789]]86* | x86_64)
WINE_TRY_CFLAGS([-Wl,--section-start,.interp=0x7bf00400],
WINE_TRY_CFLAGS([-Wl,-Ttext-segment=0x7bc00000],
[case $host_os in
freebsd* | kfreebsd*-gnu) LDEXECFLAGS="$LDEXECFLAGS -Wl,-Ttext-segment=0x60000000" ;;
*) LDEXECFLAGS="$LDEXECFLAGS -Wl,-Ttext-segment=0x7bf00000" ;;
esac],
[WINE_TRY_CFLAGS([-Wl,--section-start,.interp=0x7bf00400],
[case $host_os in
freebsd* | kfreebsd*-gnu) LDEXECFLAGS="$LDEXECFLAGS -Wl,--section-start,.interp=0x60000400" ;;
*) LDEXECFLAGS="$LDEXECFLAGS -Wl,--section-start,.interp=0x7bf00400" ;;
esac
])
WINE_TRY_CFLAGS([-Wl,-Ttext-segment=0x7bc00000],[:],
[AC_PATH_PROG(PRELINK, prelink, false, [/sbin /usr/sbin $PATH])
esac])
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.])