[pkg-wine-party] [PATCH] libwine, server, ntdll, loader: Add missing checks for FreeBSD_kernel. (Closes: #672415)
Hilko Bengen
bengen at debian.org
Fri May 18 23:36:57 UTC 2012
From: Austin English <austinenglish at gmail.com>
(cherry picked from upstream commits
b21319231e321f38f6dad362c9d9339e818edfcf,
599afa06b7cb83d406fdb14ee2b0a163ae7b7898,
9832bd6c546b880bb55da486084de8cf77c8d540,
534196fba934c0cf362f73a9768ed03a8fbfaa3c)
---
dlls/ntdll/nt.c | 2 +-
dlls/ntdll/signal_i386.c | 4 +++-
dlls/ntdll/signal_x86_64.c | 4 ++--
libs/wine/ldt.c | 2 +-
libs/wine/mmap.c | 2 +-
loader/main.c | 2 +-
server/ptrace.c | 2 +-
7 files changed, 10 insertions(+), 8 deletions(-)
diff --git a/dlls/ntdll/nt.c b/dlls/ntdll/nt.c
index 3cbcbe7..bb5c1e5 100644
--- a/dlls/ntdll/nt.c
+++ b/dlls/ntdll/nt.c
@@ -1132,7 +1132,7 @@ void fill_cpu_info(void)
fclose(f);
}
}
-#elif defined(__FreeBSD__)
+#elif defined(__FreeBSD__) || defined (__FreeBSD_kernel__)
{
int ret, num;
size_t len;
diff --git a/dlls/ntdll/signal_i386.c b/dlls/ntdll/signal_i386.c
index c08693e..9603f56 100644
--- a/dlls/ntdll/signal_i386.c
+++ b/dlls/ntdll/signal_i386.c
@@ -210,6 +210,8 @@ typedef struct trapframe SIGCONTEXT;
#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__)
+#include <machine/trap.h>
+
typedef struct sigcontext SIGCONTEXT;
#define EAX_sig(context) ((context)->sc_eax)
@@ -428,7 +430,7 @@ extern void DECLSPEC_NORETURN __wine_restore_regs( const CONTEXT *context );
enum i386_trap_code
{
TRAP_x86_UNKNOWN = -1, /* Unknown fault (TRAP_sig not defined) */
-#if defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__)
+#if defined(__FreeBSD__) || defined (__FreeBSD_kernel__) || defined(__NetBSD__) || defined(__OpenBSD__)
TRAP_x86_DIVIDE = T_DIVIDE, /* Division by zero exception */
TRAP_x86_TRCTRAP = T_TRCTRAP, /* Single-step exception */
TRAP_x86_NMI = T_NMI, /* NMI interrupt */
diff --git a/dlls/ntdll/signal_x86_64.c b/dlls/ntdll/signal_x86_64.c
index 48f8b6d..4807103 100644
--- a/dlls/ntdll/signal_x86_64.c
+++ b/dlls/ntdll/signal_x86_64.c
@@ -136,7 +136,7 @@ extern int arch_prctl(int func, void *ptr);
#define FPU_sig(context) ((XMM_SAVE_AREA32 *)((context)->uc_mcontext.fpregs))
-#elif defined(__FreeBSD__)
+#elif defined(__FreeBSD__) || defined (__FreeBSD_kernel__)
#include <sys/ucontext.h>
#define RAX_sig(context) ((context)->uc_mcontext.mc_rax)
@@ -2335,7 +2335,7 @@ void signal_init_thread( TEB *teb )
#if defined __linux__
arch_prctl( ARCH_SET_GS, teb );
-#elif defined __FreeBSD__
+#elif defined (__FreeBSD__) || defined (__FreeBSD_kernel__)
amd64_set_gsbase( teb );
#else
# error Please define setting %gs for your architecture
diff --git a/libs/wine/ldt.c b/libs/wine/ldt.c
index d56790f..94f15c6 100644
--- a/libs/wine/ldt.c
+++ b/libs/wine/ldt.c
@@ -434,7 +434,7 @@ void wine_ldt_init_fs( unsigned short sel, const LDT_ENTRY *entry )
ldt_info.entry_number = sel >> 3;
fill_modify_ldt_struct( &ldt_info, entry );
if ((ret = set_thread_area( &ldt_info ) < 0)) perror( "set_thread_area" );
-#elif defined(__FreeBSD__)
+#elif defined(__FreeBSD__) || defined (__FreeBSD_kernel__)
i386_set_fsbase( wine_ldt_get_base( entry ));
#endif
}
diff --git a/libs/wine/mmap.c b/libs/wine/mmap.c
index b400189..db80e35 100644
--- a/libs/wine/mmap.c
+++ b/libs/wine/mmap.c
@@ -375,7 +375,7 @@ void mmap_init(void)
char *base = stack_ptr - ((unsigned int)stack_ptr & granularity_mask) - (granularity_mask + 1);
if (base > user_space_limit) reserve_area( user_space_limit, base );
base = stack_ptr - ((unsigned int)stack_ptr & granularity_mask) + (granularity_mask + 1);
-#if defined(linux) || defined(__FreeBSD__)
+#if defined(linux) || defined(__FreeBSD__) || defined (__FreeBSD_kernel__)
/* Heuristic: assume the stack is near the end of the address */
/* space, this avoids a lot of futile allocation attempts */
end = (char *)(((unsigned long)base + 0x0fffffff) & 0xf0000000);
diff --git a/loader/main.c b/loader/main.c
index 628a0fa..5bb4e80 100644
--- a/loader/main.c
+++ b/loader/main.c
@@ -164,7 +164,7 @@ static int pre_exec(void)
return 1;
}
-#elif defined(__FreeBSD__) && defined(__i386__)
+#elif (defined(__FreeBSD__) || defined (__FreeBSD_kernel__)) && defined(__i386__)
static int pre_exec(void)
{
diff --git a/server/ptrace.c b/server/ptrace.c
index 111368b..e6c43b3 100644
--- a/server/ptrace.c
+++ b/server/ptrace.c
@@ -235,7 +235,7 @@ static inline int tkill( int tgid, int pid, int sig )
if (ret >= 0) return ret;
errno = -ret;
return -1;
-#elif defined(__FreeBSD__) && defined(HAVE_THR_KILL2)
+#elif (defined(__FreeBSD__) || defined (__FreeBSD_kernel__)) && defined(HAVE_THR_KILL2)
return thr_kill2( tgid, pid, sig );
#else
errno = ENOSYS;
--
1.7.10
More information about the pkg-wine-party
mailing list