This is the mail archive of the libc-alpha@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]

Re: [PATCH][SH] SH CFI directives patch, revised


Hi!

On Mon, 28 May 2012 00:26:46 +0200, I wrote:
> On Thu, 17 May 2012 18:33:08 +0800, Chung-Lin Tang <cltang@codesourcery.com> wrote:
> diff --git a/nptl/sysdeps/unix/sysv/linux/sh/lowlevelrobustlock.S b/nptl/sysdeps/unix/sysv/linux/sh/lowlevelrobustlock.S
> index e3aaeee..7a192a9 100644
> --- a/nptl/sysdeps/unix/sysv/linux/sh/lowlevelrobustlock.S
> +++ b/nptl/sysdeps/unix/sysv/linux/sh/lowlevelrobustlock.S
> @@ -263,6 +263,7 @@ __lll_robust_timedlock_wait:
>  	cfi_restore (r8)
>  	cfi_restore (r9)
>  	cfi_restore (r10)
> +	cfi_restore (r11)
>  	cfi_def_cfa_offset (0)
>  	rts
>  	 mov	#EINVAL, r0
> 
> Should be obvious.
> 
> But, in this case, wouldn't it be simpler to use a nested
> Â.cfi_remember_state [...] .cfi_remember_state [...] .cfi_restore_state
> [...]  .cfi_restore_state instead of restoring the state manually (as
> quoted)?  My reading of GDB's dwarf2-frame seems to confirm that this is
> permissible.  (No need to send a patch if you agree.

I pushed the following as commit
4b2c8da708024ca9f7a6f86bdb46cb8c0d6df275:

2012-06-23  Thomas Schwinge  <thomas@codesourcery.com>

	* sysdeps/unix/sysv/linux/sh/lowlevelrobustlock.S
	(__lll_robust_timedlock_wait): Simplify CFI directives.

diff --git a/nptl/sysdeps/unix/sysv/linux/sh/lowlevelrobustlock.S b/nptl/sysdeps/unix/sysv/linux/sh/lowlevelrobustlock.S
index 7a192a9..d2624dd 100644
--- a/nptl/sysdeps/unix/sysv/linux/sh/lowlevelrobustlock.S
+++ b/nptl/sysdeps/unix/sysv/linux/sh/lowlevelrobustlock.S
@@ -139,6 +139,8 @@ __lll_robust_timedlock_wait:
 	cmp/hs	r0, r1
 	bt	3f
 
+	cfi_remember_state
+
 	mov.l	r11, @-r15
 	cfi_adjust_cfa_offset(4)
 	cfi_rel_offset (r11, 0)
@@ -258,13 +260,9 @@ __lll_robust_timedlock_wait:
 8:
 	bra	6b
 	 mov	#ETIMEDOUT, r0
+
+	cfi_restore_state
 3:
-	/* Restore initial state for invalid timeout case.  */
-	cfi_restore (r8)
-	cfi_restore (r9)
-	cfi_restore (r10)
-	cfi_restore (r11)
-	cfi_def_cfa_offset (0)
 	rts
 	 mov	#EINVAL, r0
 	cfi_endproc


> I'd also prepare a
> patch to improve the binutils documentation.)

Still to be done.


GrÃÃe,
 Thomas

Attachment: pgp00000.pgp
Description: PGP signature


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