+ int badcall();
+
+ switch (_sigsim) {
+ case UNKNOWN:
+ sv.sv_handler = badcall;
+ sv.sv_mask = sv.sv_onstack = 0;
+ if (sigvec(SIGSYS, &sv, &osv) < 0) {
+ _sigsim = SIMULATE;
+ } else {
+ _sigsim = NATIVE;
+ signal(SIGSYS, osv.sv_handler);
+ }
+ /* fall through */
+ case NATIVE:
+ case SIMULATE:
+ sv.sv_handler = a;
+ sv.sv_mask = sv.sv_onstack = 0;
+ if (sigvec(s, &sv, &osv) < 0)
+ return (BADSIG);
+ return (osv.sv_handler);
+ }
+}