From: Razvan Virtan Date: Mon, 4 Oct 2021 16:50:18 +0000 (+0300) Subject: Add missing symbols to the uksignal interface X-Git-Tag: RELEASE-0.6~3 X-Git-Url: http://xenbits.xensource.com/gitweb?a=commitdiff_plain;h=fd18158dd422f84b5131d348fc7c4935f9326b1e;p=unikraft%2Flibs%2Fnewlib.git Add missing symbols to the uksignal interface The Go runtime requires some symbols related to signals that are not currently defined in `signal.h` (after the uksignal support was added). Changes brought in this commit: - add missing fields to `siginfo_t` - declare `sigaltstack` (the stub implementation is added to uksignal in a separate pull request, part of the core Unikraft repository) - add symbols for `ss_flags` values Signed-off-by: Răzvan Vîrtan Tested-by: Unikraft CI GitHub-Pull-Request: #11 --- diff --git a/musl-imported/include/signal.h b/musl-imported/include/signal.h index 55b40d1..5a53589 100644 --- a/musl-imported/include/signal.h +++ b/musl-imported/include/signal.h @@ -65,11 +65,33 @@ typedef __sigset_t sigset_t; #define NSIG _NSIG +/* XXX: not used - defined just for newlib */ +union sigval { + int sival_int; /* Integer signal value */ + void *sival_ptr; /* Pointer signal value */ +}; + typedef struct { int si_signo; /* Signal number */ int si_code; /* Cause of the signal */ pid_t si_pid; /* Sending process ID */ + union sigval si_value; /* Signal value */ + + union { + struct { + void *si_addr; + short si_addr_lsb; + union { + struct { + void *si_lower; + void *si_upper; + } __addr_bnd; + unsigned si_pkey; + } __first; + } __sigfault; + } __si_fields; } siginfo_t; +#define si_addr __si_fields.__sigfault.si_addr struct sigaction { union { @@ -119,18 +141,18 @@ int sigismember(const sigset_t *set, int signo); int siginterrupt(int sig, int flag); void psignal(int sig, const char *s); -/* TODO: not used - defined just for newlib */ -union sigval { - int sival_int; /* Integer signal value */ - void *sival_ptr; /* Pointer signal value */ -}; - struct sigevent { int sigev_notify; /* Notification type */ int sigev_signo; /* Signal number */ union sigval sigev_value; /* Signal value */ }; +/* + * Possible values for ss_flags in stack_t below. + */ +#define SS_ONSTACK 0x1 +#define SS_DISABLE 0x2 + /* TODO: not used - defined just for v8 */ typedef struct sigaltstack { void *ss_sp; @@ -138,6 +160,8 @@ typedef struct sigaltstack { size_t ss_size; } stack_t; +int sigaltstack(const stack_t *ss, stack_t *old_ss); + #ifdef __cplusplus } #endif