[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