]> granicus.if.org Git - strace/blobdiff - syscall.c
mem: decode hugetlb page size in mmap flags
[strace] / syscall.c
index 87825e6bdb4e6ae3604b583429757079c0de63f6..b1047feb67f0ec2cb43180f1e59b00f963b03ddf 100644 (file)
--- a/syscall.c
+++ b/syscall.c
@@ -308,12 +308,12 @@ update_personality(struct tcb *tcp, unsigned int personality)
        tcp->currpers = personality;
 
 # undef PERSONALITY_NAMES
-# if defined POWERPC64 || defined AARCH64 || defined TILE
-#  define PERSONALITY_NAMES {"64 bit", "32 bit"}
-# elif defined X86_64
+# if defined X86_64
 #  define PERSONALITY_NAMES {"64 bit", "32 bit", "x32"}
 # elif defined X32
 #  define PERSONALITY_NAMES {"x32", "32 bit"}
+# elif SUPPORTED_PERSONALITIES == 2
+#  define PERSONALITY_NAMES {"64 bit", "32 bit"}
 # endif
 # ifdef PERSONALITY_NAMES
        if (!qflag) {
@@ -570,9 +570,9 @@ tamper_with_syscall_entering(struct tcb *tcp, unsigned int *signo)
 
        opts->first = opts->step;
 
-       if (opts->signo > 0)
-               *signo = opts->signo;
-       if (opts->rval != INJECT_OPTS_RVAL_DEFAULT && !arch_set_scno(tcp, -1))
+       if (opts->data.flags & INJECT_F_SIGNAL)
+               *signo = opts->data.signo;
+       if (opts->data.flags & INJECT_F_RETVAL && !arch_set_scno(tcp, -1))
                tcp->flags |= TCB_TAMPERED;
 
        return 0;
@@ -586,17 +586,17 @@ tamper_with_syscall_exiting(struct tcb *tcp)
        if (!opts)
                return 0;
 
-       if (opts->rval >= 0) {
+       if (opts->data.rval >= 0) {
                kernel_long_t u_rval = tcp->u_rval;
 
-               tcp->u_rval = opts->rval;
+               tcp->u_rval = opts->data.rval;
                if (arch_set_success(tcp)) {
                        tcp->u_rval = u_rval;
                } else {
                        tcp->u_error = 0;
                }
        } else {
-               unsigned long new_error = -opts->rval;
+               unsigned long new_error = -opts->data.rval;
 
                if (new_error != tcp->u_error && new_error <= MAX_ERRNO_VALUE) {
                        unsigned long u_error = tcp->u_error;