]> granicus.if.org Git - strace/commitdiff
ldt.c: use printaddr and umove_or_printaddr
authorDmitry V. Levin <ldv@altlinux.org>
Mon, 20 Jul 2015 00:10:35 +0000 (00:10 +0000)
committerDmitry V. Levin <ldv@altlinux.org>
Mon, 20 Jul 2015 01:42:01 +0000 (01:42 +0000)
* ldt.c [I386 || X86_64 || X32] (print_user_desc):
Use umove_or_printaddr.
[I386 || X86_64 || X32] (sys_modify_ldt): Use printaddr.
[(M68K || MIPS] (set_thread_area): Likewise.
[I386 || X86_64 || X32] (set_thread_area): Do not fetch data
if !verbose.
[I386 || X86_64 || X32] (get_thread_area): Remove redundant check
for syserror.

ldt.c

diff --git a/ldt.c b/ldt.c
index dbe49d92ff5d804451411b510006cdf0d73da08d..73eb77feaaeb953d3186b25f2072f8505db29072 100644 (file)
--- a/ldt.c
+++ b/ldt.c
@@ -5,19 +5,12 @@
 # include <asm/ldt.h>
 
 void
-print_user_desc(struct tcb *tcp, long addr)
+print_user_desc(struct tcb *tcp, const long addr)
 {
        struct user_desc desc;
 
-       if (umove(tcp, addr, &desc) < 0) {
-               tprintf("%lx", addr);
+       if (umove_or_printaddr(tcp, addr, &desc))
                return;
-       }
-
-       if (!verbose(tcp)) {
-               tprintf("{entry_number:%d, ...}", desc.entry_number);
-               return;
-       }
 
        tprintf("{entry_number:%d, "
                "base_addr:%#08x, "
@@ -43,12 +36,10 @@ SYS_FUNC(modify_ldt)
 {
        if (entering(tcp)) {
                tprintf("%ld, ", tcp->u_arg[0]);
-               if (tcp->u_arg[1] == 0
-                   || tcp->u_arg[2] != sizeof(struct user_desc)) {
-                       tprintf("%lx", tcp->u_arg[1]);
-               } else {
+               if (tcp->u_arg[2] != sizeof(struct user_desc))
+                       printaddr(tcp->u_arg[1]);
+               else
                        print_user_desc(tcp, tcp->u_arg[1]);
-               }
                tprintf(", %lu", tcp->u_arg[2]);
        }
        return 0;
@@ -61,7 +52,8 @@ SYS_FUNC(set_thread_area)
        } else {
                struct user_desc desc;
 
-               if (syserror(tcp) || umove(tcp, tcp->u_arg[0], &desc) < 0) {
+               if (!verbose(tcp) || syserror(tcp) ||
+                   umove(tcp, tcp->u_arg[0], &desc) < 0) {
                        /* returned entry_number is not available */
                } else {
                        static char outstr[32];
@@ -76,12 +68,8 @@ SYS_FUNC(set_thread_area)
 
 SYS_FUNC(get_thread_area)
 {
-       if (exiting(tcp)) {
-               if (syserror(tcp))
-                       tprintf("%lx", tcp->u_arg[0]);
-               else
-                       print_user_desc(tcp, tcp->u_arg[0]);
-       }
+       if (exiting(tcp))
+               print_user_desc(tcp, tcp->u_arg[0]);
        return 0;
 }
 
@@ -91,7 +79,7 @@ SYS_FUNC(get_thread_area)
 SYS_FUNC(set_thread_area)
 {
        if (entering(tcp))
-               tprintf("%#lx", tcp->u_arg[0]);
+               printaddr(tcp->u_arg[0]);
        return 0;
 
 }