Remove function sr_ResHI from Linux specific code.
Add function VG_(sr_as_string).
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@15116 a5019735-40e9-0310-863c-91ae7b9d1cf9
diff --git a/coregrind/m_libcprint.c b/coregrind/m_libcprint.c
index fbd3d4c..b6efaad 100644
--- a/coregrind/m_libcprint.c
+++ b/coregrind/m_libcprint.c
@@ -643,6 +643,44 @@
VG_(exit)(1);
}
+/* ---------------------------------------------------------------------
+ VG_(sr_as_string)()
+ ------------------------------------------------------------------ */
+
+/* Return a textual representation of a SysRes value in a statically
+ allocated buffer. The buffer will be overwritten with the next
+ invocation. */
+#if defined(VGO_linux)
+// FIXME: Does this function need to be adjusted for MIPS's _valEx ?
+const HChar *VG_(sr_as_string) ( SysRes sr )
+{
+ static HChar buf[7+1+2+16+1+1]; // large enough
+
+ if (sr_isError(sr))
+ VG_(sprintf)(buf, "Failure(0x%lx)", sr_Err(sr));
+ else
+ VG_(sprintf)(buf, "Success(0x%lx)", sr_Res(sr));
+ return buf;
+}
+
+#elif defined(VGO_darwin)
+
+const HChar *VG_(sr_as_string) ( SysRes sr )
+{
+ static HChar buf[7+1+2+16+1+2+16+1+1]; // large enough
+
+ if (sr_isError(sr))
+ VG_(sprintf)(buf, "Failure(0x%lx)", sr_Err(sr));
+ else
+ VG_(sprintf)(buf, "Success(0x%lx:0x%lx)", sr_ResHI(sr), sr_Res(sr));
+ return buf;
+}
+
+#else
+
+#error unknown OS
+
+#endif
/*--------------------------------------------------------------------*/
/*--- end ---*/
diff --git a/coregrind/m_syswrap/priv_types_n_macros.h b/coregrind/m_syswrap/priv_types_n_macros.h
index 14f1780..26a82f7 100644
--- a/coregrind/m_syswrap/priv_types_n_macros.h
+++ b/coregrind/m_syswrap/priv_types_n_macros.h
@@ -331,11 +331,13 @@
return sr_Res(st->sres);
}
+#if defined(VGO_darwin)
static inline UWord getRESHI ( SyscallStatus* st ) {
vg_assert(st->what == SsComplete);
vg_assert(!sr_isError(st->sres));
return sr_ResHI(st->sres);
}
+#endif
static inline UWord getERR ( SyscallStatus* st ) {
vg_assert(st->what == SsComplete);
diff --git a/coregrind/m_syswrap/syswrap-main.c b/coregrind/m_syswrap/syswrap-main.c
index a7127ea..c5aac59 100644
--- a/coregrind/m_syswrap/syswrap-main.c
+++ b/coregrind/m_syswrap/syswrap-main.c
@@ -1669,9 +1669,7 @@
if (sci->flags & SfNoWriteResult) {
PRINT(" --> [pre-success] NoWriteResult");
} else {
- PRINT(" --> [pre-success] Success(0x%llx:0x%llx)",
- (ULong)sr_ResHI(sci->status.sres),
- (ULong)sr_Res(sci->status.sres));
+ PRINT(" --> [pre-success] %s", VG_(sr_as_string)(sci->status.sres));
}
/* In this case the allowable flags are to ask for a signal-poll
and/or a yield after the call. Changing the args isn't
@@ -1684,7 +1682,7 @@
else
if (sci->status.what == SsComplete && sr_isError(sci->status.sres)) {
/* The pre-handler decided to fail syscall itself. */
- PRINT(" --> [pre-fail] Failure(0x%llx)", (ULong)sr_Err(sci->status.sres));
+ PRINT(" --> [pre-fail] %s", VG_(sr_as_string)(sci->status.sres));
/* In this case, the pre-handler is also allowed to ask for the
post-handler to be run anyway. Changing the args is not
allowed. */
@@ -1769,18 +1767,9 @@
/* Be decorative, if required. */
if (VG_(clo_trace_syscalls)) {
- Bool failed = sr_isError(sci->status.sres);
- if (failed) {
- PRINT("SYSCALL[%d,%d](%s) ... [async] --> Failure(0x%llx)",
- VG_(getpid)(), tid, VG_SYSNUM_STRING(sysno),
- (ULong)sr_Err(sci->status.sres));
- } else {
- PRINT("SYSCALL[%d,%d](%s) ... [async] --> "
- "Success(0x%llx:0x%llx)",
- VG_(getpid)(), tid, VG_SYSNUM_STRING(sysno),
- (ULong)sr_ResHI(sci->status.sres),
- (ULong)sr_Res(sci->status.sres) );
- }
+ PRINT("SYSCALL[%d,%d](%s) ... [async] --> %s",
+ VG_(getpid)(), tid, VG_SYSNUM_STRING(sysno),
+ VG_(sr_as_string)(sci->status.sres));
}
} else {
@@ -1800,15 +1789,7 @@
/* Be decorative, if required. */
if (VG_(clo_trace_syscalls)) {
- Bool failed = sr_isError(sci->status.sres);
- if (failed) {
- PRINT("[sync] --> Failure(0x%llx)",
- (ULong)sr_Err(sci->status.sres) );
- } else {
- PRINT("[sync] --> Success(0x%llx:0x%llx)",
- (ULong)sr_ResHI(sci->status.sres),
- (ULong)sr_Res(sci->status.sres) );
- }
+ PRINT("[sync] --> %s", VG_(sr_as_string)(sci->status.sres));
}
}
}