SHA256
1
0
forked from pool/wine
wine/susepatches.patch

87 lines
4.7 KiB
Diff

From aa7698f55186eb974cf974398198bc63d4fd3c02 Mon Sep 17 00:00:00 2001
From: Marcus Meissner <marcus@jet.franken.de>
Date: Sat, 13 Jun 2015 12:15:39 +0200
Subject: [PATCH] ntdll: link libunwind if present
On openSUSE 13.1/13.2 otherwise ntdll x86_64 build will fail with:
../../tools/winegcc/winegcc -o ntdll.dll.so -B../../tools/winebuild -m64 -fasynchronous-unwind-tables -shared /home/marcus/projects/wine/dlls/ntdll/ntdll.spec \
-nodefaultlibs -Wl,--image-base,0x7bc00000 actctx.o atom.o cdrom.o critsection.o debugbuffer.o \
debugtools.o directory.o env.o error.o exception.o file.o handletable.o heap.o large_int.o \
loader.o loadorder.o misc.o nt.o om.o path.o printf.o process.o reg.o relay.o resource.o rtl.o \
rtlbitmap.o rtlstr.o sec.o serial.o server.o signal_arm.o signal_arm64.o signal_i386.o \
signal_powerpc.o signal_x86_64.o string.o sync.o tape.o thread.o threadpool.o time.o version.o \
virtual.o wcstring.o version.res -lwinecrt0 -lwine ../../libs/port/libwine_port.a -lpthread \
signal_x86_64.o: In function `libunwind_virtual_unwind':
/home/marcus/projects/wine/dlls/ntdll/signal_x86_64.c:1554: undefined reference to `_Ux86_64_getcontext'
/home/marcus/projects/wine/dlls/ntdll/signal_x86_64.c:1556: undefined reference to `_ULx86_64_init_local'
signal_x86_64.o: In function `libunwind_set_cursor_from_context':
/home/marcus/projects/wine/dlls/ntdll/signal_x86_64.c:1442: undefined reference to `_ULx86_64_set_reg'
/home/marcus/projects/wine/dlls/ntdll/signal_x86_64.c:1444: undefined reference to `_ULx86_64_set_reg'
/home/marcus/projects/wine/dlls/ntdll/signal_x86_64.c:1446: undefined reference to `_ULx86_64_set_reg'
/home/marcus/projects/wine/dlls/ntdll/signal_x86_64.c:1448: undefined reference to `_ULx86_64_set_reg'
/home/marcus/projects/wine/dlls/ntdll/signal_x86_64.c:1450: undefined reference to `_ULx86_64_set_reg'
signal_x86_64.o:/home/marcus/projects/wine/dlls/ntdll/signal_x86_64.c:1452: more undefined references to `_ULx86_64_set_reg' follow
signal_x86_64.o: In function `libunwind_virtual_unwind':
/home/marcus/projects/wine/dlls/ntdll/signal_x86_64.c:1565: undefined reference to `_ULx86_64_get_proc_info'
/home/marcus/projects/wine/dlls/ntdll/signal_x86_64.c:1581: undefined reference to `_ULx86_64_step'
/home/marcus/projects/wine/dlls/ntdll/signal_x86_64.c:1488: undefined reference to `_ULx86_64_get_reg'
/home/marcus/projects/wine/dlls/ntdll/signal_x86_64.c:1488: undefined reference to `_ULx86_64_get_reg'
/home/marcus/projects/wine/dlls/ntdll/signal_x86_64.c:1488: undefined reference to `_ULx86_64_get_reg'
/home/marcus/projects/wine/dlls/ntdll/signal_x86_64.c:1488: undefined reference to `_ULx86_64_get_reg'
/home/marcus/projects/wine/dlls/ntdll/signal_x86_64.c:1488: undefined reference to `_ULx86_64_get_reg'
signal_x86_64.o:/home/marcus/projects/wine/dlls/ntdll/signal_x86_64.c:1488: more undefined references to `_ULx86_64_get_reg' follow
collect2: error: ld returned 1 exit status
(probably on x86 it all is inlined, but this is not the case for x86_64)
---
configure.ac | 3 +++
dlls/ntdll/Makefile.in | 2 +-
2 files changed, 4 insertions(+), 1 deletion(-)
diff --git a/configure.ac b/configure.ac
index df28b27..97b335d 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1974,6 +1974,7 @@ AC_CACHE_CHECK([whether CFI directives are supported in assembly code], ac_cv_c_
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[asm(".text\nac_test:\t.cfi_startproc\n\t.long 0\n\t.cfi_endproc");]])],
ac_cv_c_cfi_support="yes",ac_cv_c_cfi_support="no"))
+UNWIND_LIBS=
asm_func_header=".globl $asm_name_prefix\" #name suffix \"\\n\\t$asm_func_header\\n$asm_name_prefix\" #name suffix \":\\n\\t"
asm_func_trailer=""
if test "$ac_cv_c_dot_previous" = "yes"
@@ -1986,6 +1987,7 @@ then
asm_func_trailer="\\n\\t.cfi_endproc$asm_func_trailer"
AC_DEFINE([__ASM_CFI(str)],[str],[Define to a macro to output a .cfi assembly pseudo-op])
AC_SUBST([UNWINDFLAGS],[-fasynchronous-unwind-tables])
+ AC_CHECK_LIB(unwind,_U_dyn_register,[UNWIND_LIBS="-lunwind"])
else
AC_DEFINE([__ASM_CFI(str)],[""])
if test "x$enable_win64" = "xyes"
@@ -1993,6 +1995,7 @@ else
WINE_WARNING([building 64-bit Wine without support for CFI directives; exception handling will not work properly.])
fi
fi
+AC_SUBST(UNWIND_LIBS)
asm_func_code="$asm_func_header\" code \"$asm_func_trailer"
diff --git a/dlls/ntdll/Makefile.in b/dlls/ntdll/Makefile.in
index ed4bb94..08f094a 100644
--- a/dlls/ntdll/Makefile.in
+++ b/dlls/ntdll/Makefile.in
@@ -2,7 +2,7 @@ EXTRADEFS = -D_NTSYSTEM_
MODULE = ntdll.dll
IMPORTLIB = ntdll
IMPORTS = winecrt0
-EXTRALIBS = $(IOKIT_LIBS) $(RT_LIBS) $(PTHREAD_LIBS)
+EXTRALIBS = $(IOKIT_LIBS) $(RT_LIBS) $(PTHREAD_LIBS) $(UNWIND_LIBS)
EXTRADLLFLAGS = -nodefaultlibs -Wl,--image-base,0x7bc00000
C_SRCS = \
--
1.8.4.5