x32: decode clone LDT user_desc entries for x86 processes

* mem.c [X32]: Include asm/ldt.h.
[X32] (print_ldt_entry, sys_modify_ldt, sys_set_thread_area,
sys_get_thread_area): Define.
* process.c [X32]: Include asm/ldt.h.
(sys_clone) [X32]: Decode LDT entry if current_personality == 1.
diff --git a/mem.c b/mem.c
index 264faab..9207fb2 100644
--- a/mem.c
+++ b/mem.c
@@ -33,12 +33,12 @@
 #include "defs.h"
 #include <asm/mman.h>
 #include <sys/mman.h>
-#if defined(I386) || defined(X86_64)
+#if defined(I386) || defined(X86_64) || defined(X32)
 # include <asm/ldt.h>
 # ifdef HAVE_STRUCT_USER_DESC
 #  define modify_ldt_ldt_s user_desc
 # endif
-#endif /* I386 || X86_64 */
+#endif /* I386 || X86_64 || X32 */
 
 static unsigned long
 get_pagesize()
@@ -543,7 +543,7 @@
 }
 #endif
 
-#if defined(I386) || defined(X86_64)
+#if defined(I386) || defined(X86_64) || defined(X32)
 void
 print_ldt_entry(struct modify_ldt_ldt_s *ldt_entry)
 {
@@ -635,7 +635,7 @@
 	return 0;
 
 }
-#endif /* I386 || X86_64 */
+#endif /* I386 || X86_64 || X32 */
 
 #if defined(M68K)
 int
diff --git a/process.c b/process.c
index 600a86b..963d3b1 100644
--- a/process.c
+++ b/process.c
@@ -491,13 +491,13 @@
 	XLAT_END
 };
 
-#if defined I386 || defined X86_64
+#if defined I386 || defined X86_64 || defined X32
 # include <asm/ldt.h>
 #  ifdef HAVE_STRUCT_USER_DESC
 #   define modify_ldt_ldt_s user_desc
 #  endif
 extern void print_ldt_entry();
-#endif /* I386 || X86_64 */
+#endif /* I386 || X86_64 || X32 */
 
 #if defined IA64
 # define ARG_FLAGS	0
@@ -556,7 +556,7 @@
 		if (flags & CLONE_PARENT_SETTID)
 			tprintf(", parent_tidptr=%#lx", tcp->u_arg[ARG_PTID]);
 		if (flags & CLONE_SETTLS) {
-#if defined I386 || defined X86_64
+#if defined I386 || defined X86_64 || defined X32
 # ifndef I386
 			if (current_personality == 1)
 # endif
@@ -572,7 +572,7 @@
 				}
 			}
 			else
-#endif /* I386 || X86_64 */
+#endif /* I386 || X86_64 || X32 */
 				tprintf(", tls=%#lx", tcp->u_arg[ARG_TLS]);
 		}
 		if (flags & (CLONE_CHILD_SETTID|CLONE_CHILD_CLEARTID))