PERFORCE change 152323 for review
Peter Wemm
peter at FreeBSD.org
Sat Nov 1 11:48:34 PDT 2008
http://perforce.freebsd.org/chv.cgi?CH=152323
Change 152323 by peter at peter_overcee on 2008/11/01 18:48:28
Give in and try an explicitly unaligned bitfield in sigaction. This
is to work around other signal mask problems elsewhere because valgrind
likes to assume that (UWord) == bitfield container (eg: m_libcsignal.c)
Affected files ...
.. //depot/projects/valgrind/include/vki/vki-amd64-freebsd.h#5 edit
.. //depot/projects/valgrind/include/vki/vki-x86-freebsd.h#4 edit
Differences ...
==== //depot/projects/valgrind/include/vki/vki-amd64-freebsd.h#5 (text+ko) ====
@@ -63,12 +63,12 @@
#define VKI_SIG_IGN ((__vki_sighandler_t)1) /* ignore signal */
#define _VKI_NSIG 128
-#define _VKI_NSIG_BPW 32
+#define _VKI_NSIG_BPW 64
#define _VKI_NSIG_WORDS (_VKI_NSIG / _VKI_NSIG_BPW)
-/* 32 bit words, even on amd64 - is not long aligned. */
+/* Beware, not longword aligned in struct sigaction */
typedef struct {
- vki_uint32_t sig[_VKI_NSIG_WORDS];
+ vki_uint64_t sig[_VKI_NSIG_WORDS];
} vki_sigset_t;
#define VKI_SIGHUP 1
@@ -124,7 +124,8 @@
struct vki_sigaction {
__vki_sighandler_t ksa_handler;
unsigned int sa_flags;
- vki_sigset_t sa_mask; /* mask last for extensibility */
+ vki_sigset_t sa_mask __attribute__((__packed__));
+ unsigned int __sa_pad;
};
typedef struct vki_sigaltstack {
==== //depot/projects/valgrind/include/vki/vki-x86-freebsd.h#4 (text+ko) ====
@@ -66,7 +66,6 @@
#define _VKI_NSIG_BPW 32
#define _VKI_NSIG_WORDS (_VKI_NSIG / _VKI_NSIG_BPW)
-/* 32 bit words, even on amd64 - is not long aligned. */
typedef struct {
vki_uint32_t sig[_VKI_NSIG_WORDS];
} vki_sigset_t;
More information about the p4-projects
mailing list