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