C-SKY: fix sigcontext miss match
authorMao Han <han_mao@c-sky.com>
Mon, 11 Mar 2019 01:45:15 +0000 (09:45 +0800)
committerMao Han <han_mao@c-sky.com>
Mon, 11 Mar 2019 01:45:15 +0000 (09:45 +0800)
C-SKY defines SIGCONTEXT as siginfo_t *_si, struct ucontext_t * for
__profil_counter.  ucontext_t get an extra __mask field which is miss
match with the struct sigcontext from linux kernel.  The time value
from gprof report will be always zero without this patch.  This
patch also fix the registers sequence in register-dump.h.

* sysdeps/unix/sysv/linux/csky/register-dump.h: Adjust offset change.
* sysdeps/unix/sysv/linux/csky/sys/ucontext.h: Remove __mask field
in mcontext_t

ChangeLog
sysdeps/unix/sysv/linux/csky/register-dump.h
sysdeps/unix/sysv/linux/csky/sys/ucontext.h

index b51532c..afe1bb4 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2019-03-11  Mao Han  <han_mao@c-sky.com>
+
+       * sysdeps/unix/sysv/linux/csky/register-dump.h: Adjust offset change.
+       * sysdeps/unix/sysv/linux/csky/sys/ucontext.h: Remove __mask field
+       in mcontext_t
+
 2019-03-08  Mike FABIAN  <mfabian@redhat.com>
 
        [BZ #24307]
index 003d105..9496189 100644 (file)
@@ -76,37 +76,36 @@ register_dump (int fd, const struct ucontext_t *ctx)
   hexvalue (ctx->uc_mcontext.__gregs.__pc, regs[1], 8);
   hexvalue (ctx->uc_mcontext.__gregs.__usp, regs[2], 8);
   hexvalue (ctx->uc_mcontext.__gregs.__lr, regs[3], 8);
-  hexvalue (ctx->uc_mcontext.__mask, regs[4], 8);
-  hexvalue (ctx->uc_mcontext.__gregs.__a0, regs[5], 8);
-  hexvalue (ctx->uc_mcontext.__gregs.__a1, regs[6], 8);
-  hexvalue (ctx->uc_mcontext.__gregs.__a2, regs[7], 8);
-  hexvalue (ctx->uc_mcontext.__gregs.__a3, regs[8], 8);
-  hexvalue (ctx->uc_mcontext.__gregs.__regs[0], regs[9], 8);
-  hexvalue (ctx->uc_mcontext.__gregs.__regs[1], regs[10], 8);
-  hexvalue (ctx->uc_mcontext.__gregs.__regs[2], regs[11], 8);
-  hexvalue (ctx->uc_mcontext.__gregs.__regs[3], regs[12], 8);
-  hexvalue (ctx->uc_mcontext.__gregs.__regs[4], regs[13], 8);
-  hexvalue (ctx->uc_mcontext.__gregs.__regs[5], regs[14], 8);
-  hexvalue (ctx->uc_mcontext.__gregs.__regs[6], regs[15], 8);
-  hexvalue (ctx->uc_mcontext.__gregs.__regs[7], regs[16], 8);
-  hexvalue (ctx->uc_mcontext.__gregs.__regs[8], regs[17], 8);
-  hexvalue (ctx->uc_mcontext.__gregs.__regs[9], regs[18], 8);
-  hexvalue (ctx->uc_mcontext.__gregs.__exregs[0], regs[19], 8);
-  hexvalue (ctx->uc_mcontext.__gregs.__exregs[1], regs[20], 8);
-  hexvalue (ctx->uc_mcontext.__gregs.__exregs[2], regs[21], 8);
-  hexvalue (ctx->uc_mcontext.__gregs.__exregs[3], regs[22], 8);
-  hexvalue (ctx->uc_mcontext.__gregs.__exregs[4], regs[23], 8);
-  hexvalue (ctx->uc_mcontext.__gregs.__exregs[5], regs[24], 8);
-  hexvalue (ctx->uc_mcontext.__gregs.__exregs[6], regs[25], 8);
-  hexvalue (ctx->uc_mcontext.__gregs.__exregs[7], regs[26], 8);
-  hexvalue (ctx->uc_mcontext.__gregs.__exregs[8], regs[27], 8);
-  hexvalue (ctx->uc_mcontext.__gregs.__exregs[9], regs[28], 8);
-  hexvalue (ctx->uc_mcontext.__gregs.__exregs[10], regs[29], 8);
-  hexvalue (ctx->uc_mcontext.__gregs.__exregs[11], regs[30], 8);
-  hexvalue (ctx->uc_mcontext.__gregs.__exregs[12], regs[31], 8);
-  hexvalue (ctx->uc_mcontext.__gregs.__exregs[13], regs[32], 8);
-  hexvalue (ctx->uc_mcontext.__gregs.__exregs[14], regs[33], 8);
-  hexvalue (ctx->uc_mcontext.__gregs.__tls, regs[34], 8);
+  hexvalue (ctx->uc_mcontext.__gregs.__a0, regs[4], 8);
+  hexvalue (ctx->uc_mcontext.__gregs.__a1, regs[5], 8);
+  hexvalue (ctx->uc_mcontext.__gregs.__a2, regs[6], 8);
+  hexvalue (ctx->uc_mcontext.__gregs.__a3, regs[7], 8);
+  hexvalue (ctx->uc_mcontext.__gregs.__regs[0], regs[8], 8);
+  hexvalue (ctx->uc_mcontext.__gregs.__regs[1], regs[9], 8);
+  hexvalue (ctx->uc_mcontext.__gregs.__regs[2], regs[10], 8);
+  hexvalue (ctx->uc_mcontext.__gregs.__regs[3], regs[11], 8);
+  hexvalue (ctx->uc_mcontext.__gregs.__regs[4], regs[12], 8);
+  hexvalue (ctx->uc_mcontext.__gregs.__regs[5], regs[13], 8);
+  hexvalue (ctx->uc_mcontext.__gregs.__regs[6], regs[14], 8);
+  hexvalue (ctx->uc_mcontext.__gregs.__regs[7], regs[15], 8);
+  hexvalue (ctx->uc_mcontext.__gregs.__regs[8], regs[16], 8);
+  hexvalue (ctx->uc_mcontext.__gregs.__regs[9], regs[17], 8);
+  hexvalue (ctx->uc_mcontext.__gregs.__exregs[0], regs[18], 8);
+  hexvalue (ctx->uc_mcontext.__gregs.__exregs[1], regs[19], 8);
+  hexvalue (ctx->uc_mcontext.__gregs.__exregs[2], regs[20], 8);
+  hexvalue (ctx->uc_mcontext.__gregs.__exregs[3], regs[21], 8);
+  hexvalue (ctx->uc_mcontext.__gregs.__exregs[4], regs[22], 8);
+  hexvalue (ctx->uc_mcontext.__gregs.__exregs[5], regs[23], 8);
+  hexvalue (ctx->uc_mcontext.__gregs.__exregs[6], regs[24], 8);
+  hexvalue (ctx->uc_mcontext.__gregs.__exregs[7], regs[25], 8);
+  hexvalue (ctx->uc_mcontext.__gregs.__exregs[8], regs[26], 8);
+  hexvalue (ctx->uc_mcontext.__gregs.__exregs[9], regs[27], 8);
+  hexvalue (ctx->uc_mcontext.__gregs.__exregs[10], regs[28], 8);
+  hexvalue (ctx->uc_mcontext.__gregs.__exregs[11], regs[29], 8);
+  hexvalue (ctx->uc_mcontext.__gregs.__exregs[12], regs[30], 8);
+  hexvalue (ctx->uc_mcontext.__gregs.__exregs[13], regs[31], 8);
+  hexvalue (ctx->uc_mcontext.__gregs.__exregs[14], regs[32], 8);
+  hexvalue (ctx->uc_mcontext.__gregs.__tls, regs[33], 8);
 
   /* Generate the output.  */
   ADD_STRING ("Register dump:\n\n PSR: ");
@@ -117,72 +116,70 @@ register_dump (int fd, const struct ucontext_t *ctx)
   ADD_MEM (regs[2], 8);
   ADD_STRING ("   LR: ");
   ADD_MEM (regs[3], 8);
-  ADD_STRING ("\n MASK: ");
-  ADD_MEM (regs[4], 8);
   ADD_STRING ("\n\n A0: ");
-  ADD_MEM (regs[5], 8);
+  ADD_MEM (regs[4], 8);
   ADD_STRING ("   A1: ");
-  ADD_MEM (regs[6], 8);
+  ADD_MEM (regs[5], 8);
   ADD_STRING ("   A2: ");
-  ADD_MEM (regs[7], 8);
+  ADD_MEM (regs[6], 8);
   ADD_STRING ("   A3: ");
-  ADD_MEM (regs[8], 8);
+  ADD_MEM (regs[7], 8);
   ADD_STRING ("\n R4: ");
+  ADD_MEM (regs[8], 8);
+  ADD_STRING ("   R5: ");
   ADD_MEM (regs[9], 8);
-  ADD_STRING ("   r5: ");
+  ADD_STRING ("   R6: ");
   ADD_MEM (regs[10], 8);
-  ADD_STRING ("   r6: ");
+  ADD_STRING ("   R7: ");
   ADD_MEM (regs[11], 8);
-  ADD_STRING ("   r7: ");
-  ADD_MEM (regs[12], 8);
   ADD_STRING ("\n R8: ");
-  ADD_MEM (regs[13], 8);
+  ADD_MEM (regs[12], 8);
   ADD_STRING ("   R9: ");
-  ADD_MEM (regs[14], 8);
+  ADD_MEM (regs[13], 8);
   ADD_STRING ("   R10: ");
-  ADD_MEM (regs[15], 8);
+  ADD_MEM (regs[14], 8);
   ADD_STRING ("  R11: ");
-  ADD_MEM (regs[16], 8);
+  ADD_MEM (regs[15], 8);
   ADD_STRING ("\n R12: ");
-  ADD_MEM (regs[17], 8);
+  ADD_MEM (regs[16], 8);
   ADD_STRING ("  R13: ");
-  ADD_MEM (regs[18], 8);
+  ADD_MEM (regs[17], 8);
   ADD_STRING ("  R14: ");
-  ADD_MEM (regs[19], 8);
+  ADD_MEM (regs[2], 8);
   ADD_STRING ("  R15: ");
-  ADD_MEM (regs[20], 8);
+  ADD_MEM (regs[3], 8);
   ADD_STRING ("\n R16: ");
-  ADD_MEM (regs[21], 8);
+  ADD_MEM (regs[18], 8);
   ADD_STRING ("  R17: ");
-  ADD_MEM (regs[22], 8);
+  ADD_MEM (regs[19], 8);
   ADD_STRING ("  R18: ");
-  ADD_MEM (regs[23], 8);
+  ADD_MEM (regs[20], 8);
   ADD_STRING ("  R19: ");
-  ADD_MEM (regs[24], 8);
+  ADD_MEM (regs[21], 8);
   ADD_STRING ("\n R20: ");
-  ADD_MEM (regs[25], 8);
+  ADD_MEM (regs[22], 8);
   ADD_STRING ("  R21: ");
-  ADD_MEM (regs[26], 8);
+  ADD_MEM (regs[23], 8);
   ADD_STRING ("  R22: ");
-  ADD_MEM (regs[27], 8);
+  ADD_MEM (regs[24], 8);
   ADD_STRING ("  R23: ");
-  ADD_MEM (regs[28], 8);
+  ADD_MEM (regs[25], 8);
   ADD_STRING ("\n R24: ");
-  ADD_MEM (regs[29], 8);
+  ADD_MEM (regs[26], 8);
   ADD_STRING ("  R25: ");
-  ADD_MEM (regs[30], 8);
+  ADD_MEM (regs[27], 8);
   ADD_STRING ("  R26: ");
-  ADD_MEM (regs[31], 8);
+  ADD_MEM (regs[28], 8);
   ADD_STRING ("  R27: ");
-  ADD_MEM (regs[32], 8);
+  ADD_MEM (regs[29], 8);
   ADD_STRING ("\n R28: ");
-  ADD_MEM (regs[33], 8);
+  ADD_MEM (regs[30], 8);
   ADD_STRING ("  R29: ");
-  ADD_MEM (regs[34], 8);
+  ADD_MEM (regs[31], 8);
   ADD_STRING ("  R30: ");
+  ADD_MEM (regs[32], 8);
+  ADD_STRING ("  R31: ");
   ADD_MEM (regs[33], 8);
-  ADD_STRING ("  TP: ");
-  ADD_MEM (regs[34], 8);
 
   ADD_STRING ("\n");
 
index b4b277a..5eac9e6 100644 (file)
@@ -69,7 +69,6 @@ typedef struct
 /* Context to describe whole processor state.  */
 typedef struct
   {
-    unsigned long __mask;
     gregset_t __gregs;
     fpregset_t __fpregs;
   } mcontext_t;