Mail Archives: cygwin/2010/04/27/05:05:43
On Apr 26 19:54, Dave Korn wrote:
> On 26/04/2010 17:45, Eric Blake wrote:
> > [this was originally raised on the libvirt list]
> >
> > On 04/25/2010 05:32 AM, Matthias Bolte wrote:
> >> + struct sigaction action_stop;
> >>
> >> - struct sigaction action_stop = {
> >> - .sa_handler = stop
> >> - };
> >> + memset(&action_stop, 0, sizeof action_stop);
> >> +
> >> + action_stop.sa_handler = stop;
> >
> > This is because on Linux, sa_handler is a macro that expands into an
> > access of a named member of a named union, whereas on cygwin, sa_handler
> > is a directly named member of an anonymous union. Is this a gcc bug, or
> > should we be changing cygwin/signal.h to follow Linux' lead of using
> > macros to access named unions to allow source compatibility, since gcc
> > falls flat at performing named initialization of a member of gcc's
> > extension of an anonymous union?
>
> This is the long-standing PR10676 :-(
>
> http://gcc.gnu.org/bugzilla/show_bug.cgi?id=10676
>
> Given the rate of progress so far, I reckon we should adopt Linux'
> workaround. Hopefully we'll be able to take it back out again someday.
Like this? We are already using analog definitions in the socket header
files.
Index: include/cygwin/signal.h
===================================================================
RCS file: /cvs/src/src/winsup/cygwin/include/cygwin/signal.h,v
retrieving revision 1.18
diff -u -p -r1.18 signal.h
--- include/cygwin/signal.h 26 Feb 2010 05:43:50 -0000 1.18
+++ include/cygwin/signal.h 27 Apr 2010 07:23:05 -0000
@@ -194,14 +194,16 @@ typedef void (*_sig_func_ptr)(int);
struct sigaction
{
- __extension__ union
+ union
{
_sig_func_ptr sa_handler; /* SIG_DFL, SIG_IGN, or pointer to a function */
void (*sa_sigaction) ( int, siginfo_t *, void * );
- };
+ } __sighandler_or_action;
sigset_t sa_mask;
int sa_flags;
};
+#define sa_handler __sighandler_or_action.sa_handler
+#define sa_sigaction __sighandler_or_action.sa_sigaction
#define SA_NOCLDSTOP 1 /* Do not generate SIGCHLD when children
stop */
Corinna
--
Corinna Vinschen Please, send mails regarding Cygwin to
Cygwin Project Co-Leader cygwin AT cygwin DOT com
Red Hat
--
Problem reports: http://cygwin.com/problems.html
FAQ: http://cygwin.com/faq/
Documentation: http://cygwin.com/docs.html
Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
- Raw text -