This is the mail archive of the glibc-cvs@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

GNU C Library master sources branch master updated. glibc-2.16-ports-merge-796-g1672585


This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GNU C Library master sources".

The branch, master has been updated
       via  1672585fc12c06af75378535df11b916ebc12edf (commit)
      from  9e4eee23af656c890394205fb15d252e171d346e (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
http://sources.redhat.com/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=1672585fc12c06af75378535df11b916ebc12edf

commit 1672585fc12c06af75378535df11b916ebc12edf
Author: Joseph Myers <joseph@codesourcery.com>
Date:   Thu Nov 29 23:03:48 2012 +0000

    Add 64-bit support to MIPS register-dump.h (bug 14893).

diff --git a/NEWS b/NEWS
index e055231..79d2970 100644
--- a/NEWS
+++ b/NEWS
@@ -22,7 +22,7 @@ Version 2.17
   14661, 14669, 14672, 14683, 14694, 14716, 14719, 14743, 14767, 14783,
   14784, 14785, 14793, 14796, 14797, 14801, 14803, 14805, 14807, 14811,
   14815, 14821, 14822, 14824, 14828, 14831, 14835, 14838, 14856, 14863,
-  14865, 14866, 14868, 14869, 14871, 14879, 14889.
+  14865, 14866, 14868, 14869, 14871, 14879, 14889, 14893.
 
 * CVE-2011-4609 svc_run() produces high cpu usage when accept fails with
   EMFILE has been fixed (Bugzilla #14889).
diff --git a/ports/ChangeLog.mips b/ports/ChangeLog.mips
index 6034fd0..b6886af 100644
--- a/ports/ChangeLog.mips
+++ b/ports/ChangeLog.mips
@@ -1,3 +1,20 @@
+2012-11-29  Joseph Myers  <joseph@codesourcery.com>
+
+	[BZ #14893]
+	* sysdeps/mips/mips64/n32/_itoa.h: New file.
+	* sysdeps/unix/sysv/linux/mips/register-dump.h: Include
+	<sgidefs.h>.
+	(CTX_TYPE): New macro.
+	(CTX_REG): Likewise.
+	(CTX_PC): Likewise.
+	(CTX_MDHI): Likewise.
+	(CTX_MDLO): Likewise.
+	(REG_HEX_SIZE): Likewise.
+	(hexvalue): Take _ITOA_WORD_TYPE argument.
+	(register_dump): Use these macros instead of hardcoding struct
+	sigcontext * type and accesses and 8-byte textual output for
+	registers.
+
 2012-11-22  Joseph Myers  <joseph@codesourcery.com>
 
 	[BZ #14822]
diff --git a/ports/sysdeps/mips/mips64/n32/_itoa.h b/ports/sysdeps/mips/mips64/n32/_itoa.h
new file mode 100644
index 0000000..363cdfe
--- /dev/null
+++ b/ports/sysdeps/mips/mips64/n32/_itoa.h
@@ -0,0 +1,4 @@
+/* MIPS n32 uses 64-bit _itoa_word and _itoa is mapped to _itoa_word.  */
+#define _ITOA_NEEDED		0
+#define _ITOA_WORD_TYPE		unsigned long long int
+#include_next <_itoa.h>
diff --git a/ports/sysdeps/unix/sysv/linux/mips/register-dump.h b/ports/sysdeps/unix/sysv/linux/mips/register-dump.h
index 1862281..0156910 100644
--- a/ports/sysdeps/unix/sysv/linux/mips/register-dump.h
+++ b/ports/sysdeps/unix/sysv/linux/mips/register-dump.h
@@ -17,9 +17,26 @@
    License along with the GNU C Library.  If not, see
    <http://www.gnu.org/licenses/>.  */
 
+#include <sgidefs.h>
 #include <sys/uio.h>
 #include <_itoa.h>
 
+#if _MIPS_SIM == _ABIO32
+# define CTX_TYPE	struct sigcontext *
+# define CTX_REG(ctx, i)	((ctx)->sc_regs[(i)])
+# define CTX_PC(ctx)	((ctx)->sc_pc)
+# define CTX_MDHI(ctx)	((ctx)->sc_mdhi)
+# define CTX_MDLO(ctx)	((ctx)->sc_mdlo)
+# define REG_HEX_SIZE	8
+#else
+# define CTX_TYPE	ucontext_t *
+# define CTX_REG(ctx, i)	((ctx)->uc_mcontext.gregs[(i)])
+# define CTX_PC(ctx)	((ctx)->uc_mcontext.pc)
+# define CTX_MDHI(ctx)	((ctx)->uc_mcontext.mdhi)
+# define CTX_MDLO(ctx)	((ctx)->uc_mcontext.mdhi)
+# define REG_HEX_SIZE	16
+#endif
+
 /* We will print the register dump in this format:
 
  R0   XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX
@@ -32,7 +49,7 @@
 */
 
 static void
-hexvalue (unsigned long int value, char *buf, size_t len)
+hexvalue (_ITOA_WORD_TYPE value, char *buf, size_t len)
 {
   char *cp = _itoa_word (value, buf + len, 16, 0);
   while (cp > buf)
@@ -40,9 +57,9 @@ hexvalue (unsigned long int value, char *buf, size_t len)
 }
 
 static void
-register_dump (int fd, struct sigcontext *ctx)
+register_dump (int fd, CTX_TYPE ctx)
 {
-  char regs[38][8];
+  char regs[38][REG_HEX_SIZE];
   struct iovec iov[38 * 2 + 10];
   size_t nr = 0;
   int i;
@@ -58,40 +75,40 @@ register_dump (int fd, struct sigcontext *ctx)
 
   /* Generate strings of register contents.  */
   for (i = 0; i < 32; i++)
-    hexvalue (ctx->sc_regs[i], regs[i], 8);
-  hexvalue (ctx->sc_pc, regs[32], 8);
-  hexvalue (ctx->sc_mdhi, regs[33], 8);
-  hexvalue (ctx->sc_mdlo, regs[34], 8);
+    hexvalue (CTX_REG (ctx, i), regs[i], REG_HEX_SIZE);
+  hexvalue (CTX_PC (ctx), regs[32], REG_HEX_SIZE);
+  hexvalue (CTX_MDHI (ctx), regs[33], REG_HEX_SIZE);
+  hexvalue (CTX_MDLO (ctx), regs[34], REG_HEX_SIZE);
 
   /* Generate the output.  */
   ADD_STRING ("Register dump:\n\n R0   ");
   for (i = 0; i < 8; i++)
     {
-      ADD_MEM (regs[i], 8);
+      ADD_MEM (regs[i], REG_HEX_SIZE);
       ADD_STRING (" ");
     }
   ADD_STRING ("\n R8   ");
   for (i = 8; i < 16; i++)
     {
-      ADD_MEM (regs[i], 8);
+      ADD_MEM (regs[i], REG_HEX_SIZE);
       ADD_STRING (" ");
     }
   ADD_STRING ("\n R16  ");
   for (i = 16; i < 24; i++)
     {
-      ADD_MEM (regs[i], 8);
+      ADD_MEM (regs[i], REG_HEX_SIZE);
       ADD_STRING (" ");
     }
   ADD_STRING ("\n R24  ");
   for (i = 24; i < 32; i++)
     {
-      ADD_MEM (regs[i], 8);
+      ADD_MEM (regs[i], REG_HEX_SIZE);
       ADD_STRING (" ");
     }
   ADD_STRING ("\n            pc       lo       hi\n      ");
   for (i = 32; i < 35; i++)
     {
-      ADD_MEM (regs[i], 8);
+      ADD_MEM (regs[i], REG_HEX_SIZE);
       ADD_STRING (" ");
     }
   ADD_STRING ("\n");

-----------------------------------------------------------------------

Summary of changes:
 NEWS                                               |    2 +-
 ports/ChangeLog.mips                               |   17 ++++++++
 .../x32 => ports/sysdeps/mips/mips64/n32}/_itoa.h  |    2 +-
 ports/sysdeps/unix/sysv/linux/mips/register-dump.h |   41 ++++++++++++++------
 4 files changed, 48 insertions(+), 14 deletions(-)
 copy {sysdeps/x86_64/x32 => ports/sysdeps/mips/mips64/n32}/_itoa.h (56%)


hooks/post-receive
-- 
GNU C Library master sources


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]