diff --git a/share/libc/__fc_machdep.h b/share/libc/__fc_machdep.h index 6af1bbe7c382e329b9a0add976dda89b1e1feb4a..4e49988157b50ac08aabc7f15db64180c89054d7 100644 --- a/share/libc/__fc_machdep.h +++ b/share/libc/__fc_machdep.h @@ -774,7 +774,8 @@ //NOT IN MSVC: #define __FC_ERFKILL //NOT IN MSVC: #define __FC_EHWPOISON - +/* signal.h */ +#define __FC_NSIG 23 // End of MSVC_X86_64 #else diff --git a/share/libc/__fc_machdep_linux_shared.h b/share/libc/__fc_machdep_linux_shared.h index 03639befe95c9d1f3bb0a270cef3d2ff08830410..a050f99a3adf7fd5297e7f2b8e75296e1aaef5b2 100644 --- a/share/libc/__fc_machdep_linux_shared.h +++ b/share/libc/__fc_machdep_linux_shared.h @@ -271,4 +271,8 @@ /* time.h */ #define __FC_TIME_T long +/* signal.h */ +#define __FC_NSIG 65 +#define __FC__NSIG __FC_NSIG + #endif diff --git a/share/libc/signal.h b/share/libc/signal.h index 37749792bb6187579df6a8e994f804b9bfd99e7f..4d2102c0fe945b2152a17c5108f3a10af6fe31f2 100644 --- a/share/libc/signal.h +++ b/share/libc/signal.h @@ -27,6 +27,7 @@ #include "features.h" __PUSH_FC_STDLIB +#include "__fc_machdep.h" #include "__fc_define_pid_t.h" #include "__fc_define_uid_and_gid.h" #include "__fc_define_pthread_types.h" @@ -101,6 +102,11 @@ extern void __fc_sig_err(int); #define SIGRTMIN 32 #define SIGRTMAX 64 +#define NSIG __FC_NSIG +#ifdef __FC__NSIG +#define _NSIG __FC__NSIG +#endif + #define SA_NOCLDSTOP 0x00000001 #define SA_NOCLDWAIT 0x00000002 #define SA_SIGINFO 0x00000004 diff --git a/tests/libc/oracle/signal_h.res.oracle b/tests/libc/oracle/signal_h.res.oracle index 2b9a206e15cb5859893318f65f3b4cf19a8f200b..aa2b3157f65fd3ce79deff218dce25daf54b5585 100644 --- a/tests/libc/oracle/signal_h.res.oracle +++ b/tests/libc/oracle/signal_h.res.oracle @@ -126,7 +126,7 @@ function sigaction: precondition 'valid_read_act_or_null' got status valid. [eva] tests/libc/signal_h.c:48: function sigaction: precondition 'separation,separated_acts' got status valid. -[eva] share/libc/signal.h:216: +[eva] share/libc/signal.h:222: cannot evaluate ACSL term, unsupported ACSL construct: logic coercion struct sigaction -> set<struct sigaction> [eva] Done for function sigaction [eva] computing for function sigaction <- main. @@ -142,6 +142,7 @@ [eva:invalid-assigns] tests/libc/signal_h.c:51: Completely invalid destination for assigns clause *oldact. Ignoring. [eva] Done for function sigaction +[eva] tests/libc/signal_h.c:55: assertion 'valid_nsig' got status valid. [eva] Recording results for main [eva] done for function main [eva] ====== VALUES COMPUTED ====== diff --git a/tests/libc/signal_h.c b/tests/libc/signal_h.c index c0d539f925a32964ca7764d56389e9467bf68d3d..bfb2fb979f9a27cfa6932a29b6430b9caeb9df99 100644 --- a/tests/libc/signal_h.c +++ b/tests/libc/signal_h.c @@ -52,5 +52,7 @@ int main() { return -1; } + //@ assert valid_nsig: NSIG >= 0; + return 0; }