aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMao Han <han_mao@c-sky.com>2019-03-11 09:45:15 +0800
committerMao Han <han_mao@c-sky.com>2019-03-11 09:45:15 +0800
commit6229c9bff7e3171a565b78f7f1a210126e041b5b (patch)
tree5860827d3f4488ee742b62c10763b73718319059
parent86bdd49d93665b9d7b1b98502b84d0fa9af6915f (diff)
downloadglibc-6229c9bff7e3171a565b78f7f1a210126e041b5b.zip
glibc-6229c9bff7e3171a565b78f7f1a210126e041b5b.tar.gz
glibc-6229c9bff7e3171a565b78f7f1a210126e041b5b.tar.bz2
C-SKY: fix sigcontext miss match
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
-rw-r--r--ChangeLog6
-rw-r--r--sysdeps/unix/sysv/linux/csky/register-dump.h127
-rw-r--r--sysdeps/unix/sysv/linux/csky/sys/ucontext.h1
3 files changed, 68 insertions, 66 deletions
diff --git a/ChangeLog b/ChangeLog
index b51532c..afe1bb4 100644
--- 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]
diff --git a/sysdeps/unix/sysv/linux/csky/register-dump.h b/sysdeps/unix/sysv/linux/csky/register-dump.h
index 003d105..9496189 100644
--- a/sysdeps/unix/sysv/linux/csky/register-dump.h
+++ b/sysdeps/unix/sysv/linux/csky/register-dump.h
@@ -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");
diff --git a/sysdeps/unix/sysv/linux/csky/sys/ucontext.h b/sysdeps/unix/sysv/linux/csky/sys/ucontext.h
index b4b277a..5eac9e6 100644
--- a/sysdeps/unix/sysv/linux/csky/sys/ucontext.h
+++ b/sysdeps/unix/sysv/linux/csky/sys/ucontext.h
@@ -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;