Restore tcb::u_lrval; fix lseek on MIPS-n32

Linux kernel v3.4 adds x32 support.  Both x32 and n32 use 64bit offset
for lseek parameter and return value.  We need u_lrval to handle it
properly.  Also we shouldn't check HAVE_LONG_LONG_OFF_T for n32 lseek.
This patch fixes it properly and prepares lseek for x32.

* defs.h (tcb): Restore tcb::u_lrval field, RVAL_Lfoo constants.
Set RVAL_MASK to 7.
* file.c (sys_lseek): Print 64bit offset and return RVAL_LUDECIMAL
for n32.
* syscall.c (get_error): Set u_lrval for MIPS-n32.
(trace_syscall_exiting): Handle RVAL_Lfoo return value types.

Signed-off-by: H.J. Lu <hongjiu.lu@intel.com>
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
diff --git a/defs.h b/defs.h
index 1ebbd29..7cf91b7 100644
--- a/defs.h
+++ b/defs.h
@@ -327,7 +327,10 @@
 #if defined(LINUX_MIPSN32)
 	long long ext_arg[MAX_ARGS];	/* System call arguments */
 #endif
-	long u_rval;		/* (first) return value */
+	long u_rval;		/* return value */
+#if defined(LINUX_MIPSN32) || defined(X32)
+	long long u_lrval;	/* long long return value */
+#endif
 #if SUPPORTED_PERSONALITIES > 1
 	int currpers;		/* Personality at the time of scno update */
 #endif
@@ -418,7 +421,15 @@
 #define RVAL_HEX	001	/* hex format */
 #define RVAL_OCTAL	002	/* octal format */
 #define RVAL_UDECIMAL	003	/* unsigned decimal format */
-#define RVAL_MASK	003	/* mask for these values */
+#if defined(LINUX_MIPSN32) || defined(X32)
+# if 0 /* unused so far */
+#  define RVAL_LDECIMAL	004	/* long decimal format */
+#  define RVAL_LHEX	005	/* long hex format */
+#  define RVAL_LOCTAL	006	/* long octal format */
+# endif
+# define RVAL_LUDECIMAL	007	/* long unsigned decimal format */
+#endif
+#define RVAL_MASK	007	/* mask for these values */
 
 #define RVAL_STR	010	/* Print `auxstr' field after return val */
 #define RVAL_NONE	020	/* Print nothing */