Over the last 24 hours, signal_i386.c stopped building on FreeBSD/i386 10.0 as follows:
+signal_i386.c:283:40: error: 'ucontext_t' has no member named 'sc_trapno' +signal_i386.c:284:40: error: 'ucontext_t' has no member named 'sc_err' +signal_i386.c:279:40: error: 'ucontext_t' has no member named 'sc_fs' +signal_i386.c:280:40: error: 'ucontext_t' has no member named 'sc_gs' +signal_i386.c:276:40: error: 'ucontext_t' has no member named 'sc_cs' +signal_i386.c:281:40: error: 'ucontext_t' has no member named 'sc_ss' +signal_i386.c:288:40: error: 'ucontext_t' has no member named 'sc_esp' +signal_i386.c:268:40: error: 'ucontext_t' has no member named 'sc_eax' +signal_i386.c:269:40: error: 'ucontext_t' has no member named 'sc_ebx' +signal_i386.c:270:40: error: 'ucontext_t' has no member named 'sc_ecx' +signal_i386.c:271:40: error: 'ucontext_t' has no member named 'sc_edx' +signal_i386.c:272:40: error: 'ucontext_t' has no member named 'sc_esi' +signal_i386.c:273:40: error: 'ucontext_t' has no member named 'sc_edi' : +signal_i386.c:997:1: warning: control reaches end of non-void function [-Wreturn-type] +signal_i386.c:566:1: warning: control reaches end of non-void function [-Wreturn-type] +signal_i386.c:580:1: warning: control reaches end of non-void function [-Wreturn-type]
On FreeBSD, /usr/include/sys/ucontext.h has the following:
typedef struct __ucontext { /* * Keep the order of the first two fields. Also, * keep them the first two fields in the structure. * This way we can have a union with struct * sigcontext and ucontext_t. This allows us to * support them both at the same time. * note: the union is not defined, though. */ sigset_t uc_sigmask; mcontext_t uc_mcontext;
struct __ucontext *uc_link; stack_t uc_stack; int uc_flags; #define UCF_SWAPPED 0x00000001 /* Used by swapcontext(3). */ int __spare__[4]; } ucontext_t;
mcontext_t is defined in /usr/include/x86/ucontext as follows:
typedef struct __mcontext { /* * The definition of mcontext_t must match the layout of * struct sigcontext after the sc_mask member. This is so * that we can support sigcontext and ucontext_t at the same * time. */ __register_t mc_onstack; /* XXX - sigcontext compat. */ __register_t mc_gs; /* machine state (struct trapframe) */ __register_t mc_fs; __register_t mc_es; __register_t mc_ds; __register_t mc_edi; __register_t mc_esi; __register_t mc_ebp; __register_t mc_isp; __register_t mc_ebx; __register_t mc_edx; __register_t mc_ecx; __register_t mc_eax; __register_t mc_trapno; __register_t mc_err; __register_t mc_eip; __register_t mc_cs; __register_t mc_eflags; __register_t mc_esp; __register_t mc_ss; :
Gerald