From 916cb4ec13dfde5b0378ff8a7a6240bfb4ed11f9 Mon Sep 17 00:00:00 2001 From: Eugene Syromyatnikov Date: Fri, 5 Jan 2018 21:06:10 +0100 Subject: [PATCH] ldt.c: print lm field for 64-bit tracees * configure.ac (AC_CHECK_MEMBERS): Add struct user_desc.lm. * ldt.c (print_user_desc) [HAVE_STRUCT_USER_DESC_LM]: Print lm field for non-compat tracees (it is ignored for compat ones). --- configure.ac | 5 ++++- ldt.c | 7 +++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/configure.ac b/configure.ac index 07ccc834..82de8476 100644 --- a/configure.ac +++ b/configure.ac @@ -304,7 +304,10 @@ AC_CHECK_TYPES([struct stat64, struct __old_kernel_stat],,, [#include #include ]) -AC_CHECK_TYPES([struct user_desc],,, [#include ]) +AC_CHECK_TYPES([struct user_desc], + [AC_CHECK_MEMBERS([struct user_desc.lm],,, + [#include ])],, + [#include ]) AC_CHECK_MEMBERS([struct stat.st_mtime_nsec, struct stat64.st_mtime_nsec],,, [#include diff --git a/ldt.c b/ldt.c index 7b075078..5945d36f 100644 --- a/ldt.c +++ b/ldt.c @@ -58,6 +58,13 @@ print_user_desc(struct tcb *const tcp, const kernel_ulong_t addr) PRINT_FIELD_U_CAST(", ", desc, limit_in_pages, unsigned int); PRINT_FIELD_U_CAST(", ", desc, seg_not_present, unsigned int); PRINT_FIELD_U_CAST(", ", desc, useable, unsigned int); + +# ifdef HAVE_STRUCT_USER_DESC_LM + /* lm is totally ignored for 32-bit processes */ + if (current_klongsize == 8) + PRINT_FIELD_U_CAST(", ", desc, lm, unsigned int); +# endif /* HAVE_STRUCT_USER_DESC_LM */ + tprints("}"); } -- 2.40.0