libwine: Added LDT support for GNU/Hurd.

Based on a patch by Andrew Nguyen.
This commit is contained in:
André Hentschel 2014-01-06 02:31:08 +01:00 committed by Alexandre Julliard
parent 84df351b1e
commit 02e6f7d146
1 changed files with 8 additions and 0 deletions

View File

@ -92,6 +92,11 @@ static inline int set_thread_area( struct modify_ldt_s *ptr )
#include <machine/sysarch.h> #include <machine/sysarch.h>
#endif /* __NetBSD__ || __FreeBSD__ || __OpenBSD__ */ #endif /* __NetBSD__ || __FreeBSD__ || __OpenBSD__ */
#ifdef __GNU__
#include <mach/i386/mach_i386.h>
#include <mach/mach_traps.h>
#endif
#ifdef __APPLE__ #ifdef __APPLE__
#include <i386/user_ldt.h> #include <i386/user_ldt.h>
#endif #endif
@ -203,6 +208,9 @@ static int internal_set_entry( unsigned short sel, const LDT_ENTRY *entry )
#elif defined(__APPLE__) #elif defined(__APPLE__)
if ((ret = i386_set_ldt(index, (union ldt_entry *)entry, 1)) < 0) if ((ret = i386_set_ldt(index, (union ldt_entry *)entry, 1)) < 0)
perror("i386_set_ldt"); perror("i386_set_ldt");
#elif defined(__GNU__)
if ((ret = i386_set_ldt(mach_thread_self(), sel, (descriptor_list_t)entry, 1)) != KERN_SUCCESS)
perror("i386_set_ldt");
#else #else
fprintf( stderr, "No LDT support on this platform\n" ); fprintf( stderr, "No LDT support on this platform\n" );
exit(1); exit(1);