diff options
author | Dmitry V. Levin <ldv@altlinux.org> | 2013-09-11 13:26:17 +0000 |
---|---|---|
committer | Dmitry V. Levin <ldv@altlinux.org> | 2013-09-11 13:26:17 +0000 |
commit | aca4ff79d1adc70ec033ffc5377ba7494daf350d (patch) | |
tree | 09948a27f43dfb3ae76a799d74b6f16f740ca56d /signal.c | |
parent | a877379bcbb0ca6270031c31f5eb8213b460c7cb (diff) | |
download | strace-aca4ff79d1adc70ec033ffc5377ba7494daf350d.tar.gz strace-aca4ff79d1adc70ec033ffc5377ba7494daf350d.tar.bz2 strace-aca4ff79d1adc70ec033ffc5377ba7494daf350d.tar.xz |
x86, x86_64: fix compilation warnings
Fix "dereferencing type-punned pointer will break strict-aliasing rules"
warnings introduced by commit v4.8-52-gb51f364.
* signal.c (sys_sigreturn): Avoid dereferencing type-punned pointers.
Diffstat (limited to 'signal.c')
-rw-r--r-- | signal.c | 13 |
1 files changed, 8 insertions, 5 deletions
@@ -888,13 +888,16 @@ sys_sigreturn(struct tcb *tcp) * and after it an additional u32 extramask[1] which holds * upper half of the mask. */ - sigset_t sigm; + union { + sigset_t sig; + uint32_t mask[2]; + } sigmask; if (umove(tcp, *i386_esp_ptr, &signal_stack) < 0) return 0; - sigemptyset(&sigm); - ((uint32_t*)&sigm)[0] = signal_stack.sc.oldmask; - ((uint32_t*)&sigm)[1] = signal_stack.extramask[0]; - tprints(sprintsigmask(") (mask ", &sigm)); + sigemptyset(&sigmask.sig); + sigmask.mask[0] = signal_stack.sc.oldmask; + sigmask.mask[1] = signal_stack.extramask[0]; + tprints(sprintsigmask(") (mask ", &sigmask.sig)); } #elif defined(IA64) if (entering(tcp)) { |