unofficial mirror of libc-alpha@sourceware.org
 help / color / mirror / Atom feed
From: Mao Han <han_mao@c-sky.com>
To: libc-alpha@sourceware.org
Cc: Mao Han <han_mao@c-sky.com>
Subject: [PATCH 3/4] C-SKY: mark lr as undefined to stop unwinding
Date: Thu,  7 Mar 2019 09:34:05 +0800	[thread overview]
Message-ID: <52cd01f3630c1c06c0d526e30acd6f4a0a3c3f4f.1551922357.git.han_mao@c-sky.com> (raw)
In-Reply-To: <edbba2b7bdb7bb93dd1be5e068c6af81f845da8f.1551922357.git.han_mao@c-sky.com>
In-Reply-To: <edbba2b7bdb7bb93dd1be5e068c6af81f845da8f.1551922357.git.han_mao@c-sky.com>

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


  parent reply	other threads:[~2019-03-07  1:53 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
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 [this message]
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

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.gnu.org/software/libc/involved.html

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=52cd01f3630c1c06c0d526e30acd6f4a0a3c3f4f.1551922357.git.han_mao@c-sky.com \
    --to=han_mao@c-sky.com \
    --cc=libc-alpha@sourceware.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).