diff options
| author | Vineet Gupta <vgupta@synopsys.com> | 2015-02-14 15:25:41 +0530 | 
|---|---|---|
| committer | Bernhard Reutner-Fischer <rep.dot.nop@gmail.com> | 2015-02-16 21:52:13 +0100 | 
| commit | 90b115c036d68c4c581ae974cdbf5352ad7daa84 (patch) | |
| tree | 7f17ac054fc2f405c5823df206ecd9c284dd668b /libc/sysdeps | |
| parent | 7bb51423cccff0b524ba4ddd0679e8c7c1e4a7b1 (diff) | |
ARC: siagction: opencode memcpy
Signed-off-by: Vineet Gupta <vgupta@synopsys.com>
Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
Diffstat (limited to 'libc/sysdeps')
| -rw-r--r-- | libc/sysdeps/linux/arc/sigaction.c | 11 | 
1 files changed, 7 insertions, 4 deletions
diff --git a/libc/sysdeps/linux/arc/sigaction.c b/libc/sysdeps/linux/arc/sigaction.c index 73c496d2a..a34c7cf4c 100644 --- a/libc/sysdeps/linux/arc/sigaction.c +++ b/libc/sysdeps/linux/arc/sigaction.c @@ -22,8 +22,9 @@ __libc_sigaction (int sig, const struct sigaction *act, struct sigaction *oact)  {  	struct sigaction kact; -	/* !act means caller only wants to know @oact -	 * Hence only otherwise, do SA_RESTORER stuff +	/* +	 * SA_RESTORER is only relevant for act != NULL case +	 * (!act means caller only wants to know @oact)  	 *  	 * For the normal/default cases (user not providing SA_RESTORER) use  	 * a real sigreturn stub to avoid kernel synthesizing one on user stack @@ -31,9 +32,11 @@ __libc_sigaction (int sig, const struct sigaction *act, struct sigaction *oact)  	 * update) and costly cache line flushes for code modification  	 */  	if (act && !(act->sa_flags & SA_RESTORER)) { -		memcpy(&kact, act, sizeof(kact));  		kact.sa_restorer = __default_rt_sa_restorer; -		kact.sa_flags |= SA_RESTORER; +		kact.sa_flags = act->sa_flags | SA_RESTORER; + +		kact.sa_handler = act->sa_handler; +		kact.sa_mask = act->sa_mask;  		act = &kact;  	}  | 
