After 5876, the  header file sys/regset.h is no longer
included by sys/ucontext.h, and therefore no longer
indirectly included by sys/signal.h, stdlib.h etc.

Most programs are not affected at all.  Many programs
no longer need to work around "surprise" defines for
SS, CS, ERR, and the like.

A few programs will require changes as a result of
this header change, where the code expected symbols
like EAX to be defined after include <sys/ucontex.h>.
Such program are easily adapted to this change by
adding an include <sys/regset.h>.  Without that,
the code will fail to compile with errors like:
  "signal.c", line 79: undefined symbol: UESP
  "signal.c", line 80: undefined symbol: EIP
  "signal.c", line 81: undefined symbol: EFL
  "signal.c", line 82: undefined symbol: EAX
  "signal.c", line 83: undefined symbol: EDX

There were several examples in illumos-gate where
this change was required.  Here's one example:
--- a/usr/src/cmd/csh/i386/signal.c
+++ b/usr/src/cmd/csh/i386/signal.c
@@ -28,6 +26,7 @@
 #include <sys/types.h>
 #include <sys/siginfo.h>
 #include <sys/ucontext.h>
+#include <sys/regset.h>
 #include <signal.h>
 #include "signal.h"
 #include <errno.h>

The new rule is basically: If your source module needs the register
name defines (EIP etc.) it needs to include <sys/regset.h>.

I hope this solves more problems than it causes.


-------------------------------------------
illumos-discuss
Archives: https://www.listbox.com/member/archive/182180/=now
RSS Feed: https://www.listbox.com/member/archive/rss/182180/21175430-2e6923be
Modify Your Subscription: 
https://www.listbox.com/member/?member_id=21175430&id_secret=21175430-6a77cda4
Powered by Listbox: http://www.listbox.com

Reply via email to