diff options
Diffstat (limited to 'tapset/errno.stp')
-rw-r--r-- | tapset/errno.stp | 40 |
1 files changed, 21 insertions, 19 deletions
diff --git a/tapset/errno.stp b/tapset/errno.stp index 74634e28..061947b9 100644 --- a/tapset/errno.stp +++ b/tapset/errno.stp @@ -357,31 +357,33 @@ function returnstr:string (returnp:long) %{ /* pure */ /* XXX: unfortunate duplication with return.stp:retval() */ - if (CONTEXT->regs) { + if (CONTEXT->regs) { #if defined (__i386__) - ret = CONTEXT->regs->eax; + ret = CONTEXT->regs->eax; #elif defined (__x86_64__) - ret = CONTEXT->regs->rax; + ret = CONTEXT->regs->rax; #elif defined (__powerpc64__) - ret = CONTEXT->regs->gpr[3]; + ret = CONTEXT->regs->gpr[3]; #elif defined (__ia64__) - ret = CONTEXT->regs->r8; + ret = CONTEXT->regs->r8; #elif defined (__sparc64__) - ret = CONTEXT->regs->u_regs[UREG_RETPC]; + ret = CONTEXT->regs->u_regs[UREG_RETPC]; #elif defined (__s390x__) ret = CONTEXT->regs->gprs[2]; #else - return; -#endif - } else - return; - - if (ret < 0 && ret > -Maxerrno && errlist[-ret]) - snprintf (THIS->__retvalue, MAXSTRINGLEN, "%ld (%s)", ret, errlist[-ret]); - else if (THIS->returnp == 2) - snprintf (THIS->__retvalue, MAXSTRINGLEN, "0x%lx", ret); - else if (THIS->returnp == 3) - snprintf (THIS->__retvalue, MAXSTRINGLEN, "%#lo", ret); - else - snprintf (THIS->__retvalue, MAXSTRINGLEN, "%ld", ret); + goto no_ret; +#endif + + if (ret < 0 && ret > -Maxerrno && errlist[-ret]) + snprintf (THIS->__retvalue, MAXSTRINGLEN, "%ld (%s)", ret, errlist[-ret]); + else if (THIS->returnp == 2) + snprintf (THIS->__retvalue, MAXSTRINGLEN, "0x%lx", ret); + else if (THIS->returnp == 3) + snprintf (THIS->__retvalue, MAXSTRINGLEN, "%#lo", ret); + else + snprintf (THIS->__retvalue, MAXSTRINGLEN, "%ld", ret); + } else { +no_ret: + strlcpy(THIS->__retvalue, "N/A", MAXSTRINGLEN); + } %} |