* [PATCH 1/4] C-SKY: fix sigcontext miss match
@ 2019-03-07 1:34 Mao Han
2019-03-07 1:34 ` [PATCH 2/4] C-SKY: remove user_regs definition Mao Han
` (3 more replies)
0 siblings, 4 replies; 5+ messages in thread
From: Mao Han @ 2019-03-07 1:34 UTC (permalink / raw)
To: libc-alpha; +Cc: Mao Han
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 | 6 ++
sysdeps/unix/sysv/linux/csky/register-dump.h | 127 +++++++++++++--------------
sysdeps/unix/sysv/linux/csky/sys/ucontext.h | 1 -
3 files changed, 68 insertions(+), 66 deletions(-)
diff --git a/ChangeLog b/ChangeLog
index 53c5d2f..dba3547 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2019-02-15 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-05 Adhemerval Zanella <adhemerval.zanella@linaro.org>
* nptl/nptl-init.c (__have_futex_clock_realtime,
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;
--
2.7.4
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [PATCH 2/4] C-SKY: remove user_regs definition
2019-03-07 1:34 [PATCH 1/4] C-SKY: fix sigcontext miss match Mao Han
@ 2019-03-07 1:34 ` Mao Han
2019-03-07 1:34 ` [PATCH 3/4] C-SKY: mark lr as undefined to stop unwinding Mao Han
` (2 subsequent siblings)
3 siblings, 0 replies; 5+ messages in thread
From: Mao Han @ 2019-03-07 1:34 UTC (permalink / raw)
To: libc-alpha; +Cc: Mao Han
C-SKY GDB dose not use this file for ptrace and coredump. ptrace can use
pt_regs definition from linux kernel directly. The old definition only
got 34 regs instead of 38 regs from linux kernel, which will corrupted
the memory after ptrace PTRACE_GETREGSET call.
* sysdeps/unix/sysv/linux/csky/sys/procfs.h: Use linux definition
directly.
* sysdeps/unix/sysv/linux/csky/sys/user.h: Remove user_regs
definition.
---
ChangeLog | 7 +++++
sysdeps/unix/sysv/linux/csky/bits/procfs.h | 19 ++++++++------
sysdeps/unix/sysv/linux/csky/sys/user.h | 41 ++----------------------------
3 files changed, 20 insertions(+), 47 deletions(-)
diff --git a/ChangeLog b/ChangeLog
index dba3547..713e512 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,12 @@
2019-02-15 Mao Han <han_mao@c-sky.com>
+ * sysdeps/unix/sysv/linux/csky/sys/procfs.h: Use linux definition
+ directly.
+ * sysdeps/unix/sysv/linux/csky/sys/user.h: Remove user_regs
+ definition.
+
+2019-02-13 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
diff --git a/sysdeps/unix/sysv/linux/csky/bits/procfs.h b/sysdeps/unix/sysv/linux/csky/bits/procfs.h
index e3edf15..cf59f72 100644
--- a/sysdeps/unix/sysv/linux/csky/bits/procfs.h
+++ b/sysdeps/unix/sysv/linux/csky/bits/procfs.h
@@ -20,15 +20,18 @@
# error "Never include <bits/procfs.h> directly; use <sys/procfs.h> instead."
#endif
+#include <asm/ptrace.h>
+
/* Type for a general-purpose register. */
typedef unsigned long elf_greg_t;
-
-/* And the whole bunch of them. We could have used `struct
- user_regs' directly in the typedef, but tradition says that
- the register set is an array, which does have some peculiar
- semantics, so leave it that way. */
-#define ELF_NGREG (sizeof (struct user_regs) / sizeof (elf_greg_t))
+/* Type for a floating-point registers. */
+typedef unsigned long elf_fpreg_t;
+
+/* In gdb/bfd elf32-csky.c, csky_elf_grok_prstatus() use fixed size of
+ elf_prstatus. It's 148 for abiv1 and 220 for abiv2, the size is enough
+ for coredump and no need full sizeof (struct pt_regs). */
+#define ELF_NGREG ((sizeof (struct pt_regs) / sizeof (elf_greg_t)) - 2)
typedef elf_greg_t elf_gregset_t[ELF_NGREG];
-/* Register set for the floating-point registers. */
-typedef struct user_fpregs elf_fpregset_t;
+#define ELF_NFPREG (sizeof (struct user_fp) / sizeof (elf_fpreg_t))
+typedef elf_fpreg_t elf_fpregset_t[ELF_NFPREG];
diff --git a/sysdeps/unix/sysv/linux/csky/sys/user.h b/sysdeps/unix/sysv/linux/csky/sys/user.h
index 3372ece..3c0c96d 100644
--- a/sysdeps/unix/sysv/linux/csky/sys/user.h
+++ b/sysdeps/unix/sysv/linux/csky/sys/user.h
@@ -1,4 +1,5 @@
-/* ptrace register data format definitions. C-SKY version.
+/* This file is not used by C-SKY GDB. ptrace can use pt_regs definition
+ from linux kernel directly.
Copyright (C) 2018-2019 Free Software Foundation, Inc.
This file is part of the GNU C Library.
@@ -19,42 +20,4 @@
#ifndef _SYS_USER_H
#define _SYS_USER_H 1
-struct user_fpregs {
- unsigned long fsr; /* FPU status reg. */
- unsigned long fesr; /* FPU exception status reg. */
- unsigned long fp[32]; /* FPU general regs. */
-};
-
-struct user_regs {
- unsigned long int uregs[34]; /* CSKY V2 has 32 general rgister. */
-};
-
-/* When the kernel dumps core, it starts by dumping the user struct -
- this will be used by gdb to figure out where the data and stack segments
- are within the file, and what virtual addresses to use. */
-struct user{
-/* We start with the registers, to mimic the way that "memory" is returned
- from the ptrace(3,...) function. */
- struct user_regs regs; /* The registers are actually stored. */
- int u_fpvalid; /* True if math co-processor being used. */
-
-/* The rest of this junk is to help gdb figure out what goes where. */
- unsigned long int u_tsize; /* Text segment size (pages). */
- unsigned long int u_dsize; /* Data segment size (pages). */
- unsigned long int u_ssize; /* Stack segment size (pages). */
- unsigned long start_code; /* Starting virtual address of text. */
- unsigned long start_stack; /* Starting virtual address of stack area.
- This is actually the bottom of the stack
- the top of the stack is always found in
- the esp register. */
- long int signal; /* Signal that caused the core dump. */
- int reserved; /* No longer used. */
- struct user_regs * u_ar0; /* Used by gdb to help find the values
- for the registers. */
- unsigned long magic; /* To uniquely identify a core file. */
- char u_comm[32]; /* User command that was responsible. */
- struct user_fpregs u_fp;
- struct user_fpregs* u_fpstate; /* Math Co-processor pointer. */
-};
-
#endif /* _SYS_USER_H */
--
2.7.4
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [PATCH 3/4] C-SKY: mark lr as undefined to stop unwinding
2019-03-07 1:34 [PATCH 1/4] C-SKY: fix sigcontext miss match Mao Han
2019-03-07 1:34 ` [PATCH 2/4] C-SKY: remove user_regs definition Mao Han
@ 2019-03-07 1:34 ` Mao Han
2019-03-07 1:34 ` [PATCH 4/4] C-SKY: add elf header definition for elfutils Mao Han
2019-03-11 2:59 ` [COMMITTED][PATCH 1/4] C-SKY: fix sigcontext miss match Mao Han
3 siblings, 0 replies; 5+ messages in thread
From: Mao Han @ 2019-03-07 1:34 UTC (permalink / raw)
To: libc-alpha; +Cc: Mao Han
Mark the lr register as undefined at the start of execution, so unwind
will stop at this frame. run-backtrace-*.sh from elfutils testsuite will
fail without this patch.
* sysdeps/csky/abiv2/start.S: Likewise.
* sysdeps/unix/sysv/linux/csky/abiv1/setcontext.S: Likewise.
* sysdeps/unix/sysv/linux/csky/abiv2/setcontext.S: Likewise.
---
ChangeLog | 6 ++++++
sysdeps/csky/abiv2/start.S | 4 ++++
sysdeps/unix/sysv/linux/csky/abiv2/clone.S | 7 +++++--
sysdeps/unix/sysv/linux/csky/abiv2/setcontext.S | 2 ++
4 files changed, 17 insertions(+), 2 deletions(-)
diff --git a/ChangeLog b/ChangeLog
index 713e512..c95dfbc 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,11 @@
2019-02-15 Mao Han <han_mao@c-sky.com>
+ * sysdeps/csky/abiv2/start.S: Likewise.
+ * sysdeps/unix/sysv/linux/csky/abiv2/clone.S: Likewise.
+ * sysdeps/unix/sysv/linux/csky/abiv2/setcontext.S: Likewise.
+
+2019-02-13 Mao Han <han_mao@c-sky.com>
+
* sysdeps/unix/sysv/linux/csky/sys/procfs.h: Use linux definition
directly.
* sysdeps/unix/sysv/linux/csky/sys/user.h: Remove user_regs
diff --git a/sysdeps/csky/abiv2/start.S b/sysdeps/csky/abiv2/start.S
index 324ed69..b1e6152 100644
--- a/sysdeps/csky/abiv2/start.S
+++ b/sysdeps/csky/abiv2/start.S
@@ -46,6 +46,9 @@
.type _start,@function;
.align 4;
_start:
+ cfi_startproc
+ .cfi_label .Ldummy
+ cfi_undefined (lr)
subi sp, 8
/* Clear the link register since this is the outermost frame. */
movi lr, 0
@@ -96,6 +99,7 @@ _start:
/* Should never get here. */
jsri abort
#endif /* !SHARED */
+ cfi_endproc
.size _start,.-_start
diff --git a/sysdeps/unix/sysv/linux/csky/abiv2/clone.S b/sysdeps/unix/sysv/linux/csky/abiv2/clone.S
index 3e7328a..c1352ee 100644
--- a/sysdeps/unix/sysv/linux/csky/abiv2/clone.S
+++ b/sysdeps/unix/sysv/linux/csky/abiv2/clone.S
@@ -54,7 +54,7 @@ ENTRY (__clone)
btsti a0, 31 /* Check if return is less than zero. */
bt __do_syscall_error
cmpnei a0, 0
- bf __child
+ bf __thread_start
rts
__error_arg:
@@ -81,7 +81,9 @@ __do_syscall_error:
rts
PSEUDO_END (__clone)
-__child:
+ENTRY (__thread_start)
+ .cfi_label .Ldummy
+ cfi_undefined (lr)
ldw a0, (sp, 4) /* Restore args from new sp. */
ldw a1, (sp, 0) /* Restore function from new sp. */
addi sp, 8
@@ -90,6 +92,7 @@ __child:
/* exit */
lrw r7, __NR_exit
trap 0
+END (__thread_start)
libc_hidden_def (__clone)
weak_alias (__clone, clone)
diff --git a/sysdeps/unix/sysv/linux/csky/abiv2/setcontext.S b/sysdeps/unix/sysv/linux/csky/abiv2/setcontext.S
index 6d3f04f..34de6e3 100644
--- a/sysdeps/unix/sysv/linux/csky/abiv2/setcontext.S
+++ b/sysdeps/unix/sysv/linux/csky/abiv2/setcontext.S
@@ -62,6 +62,8 @@ END (setcontext)
weak_alias (__setcontext, setcontext)
ENTRY (__startcontext)
+ .cfi_label .Ldummy
+ cfi_undefined (lr)
mov a0, r9
cmpnei r9, 0 /* r9 was set in makecontext. */
bf 1f /* null, then exit. */
--
2.7.4
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [PATCH 4/4] C-SKY: add elf header definition for elfutils
2019-03-07 1:34 [PATCH 1/4] C-SKY: fix sigcontext miss match Mao Han
2019-03-07 1:34 ` [PATCH 2/4] C-SKY: remove user_regs definition Mao Han
2019-03-07 1:34 ` [PATCH 3/4] C-SKY: mark lr as undefined to stop unwinding Mao Han
@ 2019-03-07 1:34 ` Mao Han
2019-03-11 2:59 ` [COMMITTED][PATCH 1/4] C-SKY: fix sigcontext miss match Mao Han
3 siblings, 0 replies; 5+ messages in thread
From: Mao Han @ 2019-03-07 1:34 UTC (permalink / raw)
To: libc-alpha; +Cc: Mao Han
This patch adds some defines relate to machine flag and section information,
which is used by elfutils elflint check. A C-SKY typo is also fixed with
this patch.
* elf/elf.h (EF_CSKY_ABIMASK, EF_CSKY_OTHER, EF_CSKY_PROCESSOR)
(EF_CSKY_ABIV1, EF_CSKY_ABIV2, SHT_CSKY_ATTRIBUTES): New defines.
---
elf/elf.h | 15 +++++++++++++--
1 file changed, 13 insertions(+), 2 deletions(-)
diff --git a/elf/elf.h b/elf/elf.h
index 47a514a..01648bd 100644
--- a/elf/elf.h
+++ b/elf/elf.h
@@ -360,7 +360,7 @@ typedef struct
#define EM_RISCV 243 /* RISC-V */
#define EM_BPF 247 /* Linux BPF -- in-kernel virtual machine */
-#define EM_CSKY 252 /* C_SKY */
+#define EM_CSKY 252 /* C-SKY */
#define EM_NUM 253
@@ -3022,7 +3022,7 @@ enum
/* Keep this the last entry. */
#define R_ARM_NUM 256
-/* csky */
+/* C-SKY */
#define R_CKCORE_NONE 0 /* no reloc */
#define R_CKCORE_ADDR32 1 /* direct 32 bit (S + A) */
#define R_CKCORE_PCRELIMM8BY4 2 /* disp ((S + A - P) >> 2) & 0xff */
@@ -3086,6 +3086,17 @@ enum
#define R_CKCORE_TLS_DTPOFF32 57
#define R_CKCORE_TLS_TPOFF32 58
+/* C-SKY elf header definition. */
+#define EF_CSKY_ABIMASK 0XF0000000
+#define EF_CSKY_OTHER 0X0FFF0000
+#define EF_CSKY_PROCESSOR 0X0000FFFF
+
+#define EF_CSKY_ABIV1 0X10000000
+#define EF_CSKY_ABIV2 0X20000000
+
+/* C-SKY attributes section. */
+#define SHT_CSKY_ATTRIBUTES (SHT_LOPROC + 1)
+
/* IA-64 specific declarations. */
/* Processor specific flags for the Ehdr e_flags field. */
--
2.7.4
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [COMMITTED][PATCH 1/4] C-SKY: fix sigcontext miss match
2019-03-07 1:34 [PATCH 1/4] C-SKY: fix sigcontext miss match Mao Han
` (2 preceding siblings ...)
2019-03-07 1:34 ` [PATCH 4/4] C-SKY: add elf header definition for elfutils Mao Han
@ 2019-03-11 2:59 ` Mao Han
3 siblings, 0 replies; 5+ messages in thread
From: Mao Han @ 2019-03-11 2:59 UTC (permalink / raw)
To: libc-alpha
On Thu, Mar 07, 2019 at 09:34:03AM +0800, Mao Han wrote:
> 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 | 6 ++
> sysdeps/unix/sysv/linux/csky/register-dump.h | 127 +++++++++++++--------------
> sysdeps/unix/sysv/linux/csky/sys/ucontext.h | 1 -
> 3 files changed, 68 insertions(+), 66 deletions(-)
>
> diff --git a/ChangeLog b/ChangeLog
> index 53c5d2f..dba3547 100644
Committed. Tested on C-SKY.
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2019-03-11 3:00 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-03-07 1:34 [PATCH 1/4] C-SKY: fix sigcontext miss match Mao Han
2019-03-07 1:34 ` [PATCH 2/4] C-SKY: remove user_regs definition Mao Han
2019-03-07 1:34 ` [PATCH 3/4] C-SKY: mark lr as undefined to stop unwinding Mao Han
2019-03-07 1:34 ` [PATCH 4/4] C-SKY: add elf header definition for elfutils Mao Han
2019-03-11 2:59 ` [COMMITTED][PATCH 1/4] C-SKY: fix sigcontext miss match Mao Han
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).