diff options
author | Dan McDonald <danmcd@joyent.com> | 2020-11-17 14:48:44 -0500 |
---|---|---|
committer | Dan McDonald <danmcd@joyent.com> | 2020-11-17 14:48:44 -0500 |
commit | 2d6415143e9c1044d04ebf846f72f232883413cb (patch) | |
tree | 555fae9f2f89b0c9a4d8c4bbd66b02b70ded9fc7 /usr/src/uts/common/sys | |
parent | 5a1b3228538dfeb09e05cc2bdfad707ee4d698d7 (diff) | |
parent | 5a0af8165ce9590e7a18f1ef4f9badc4dd72c6e6 (diff) | |
download | illumos-joyent-release-20201119.tar.gz |
[illumos-gate merge]release-20201119
commit 5a0af8165ce9590e7a18f1ef4f9badc4dd72c6e6
13274 enable -fstack-protector-strong by default in user land
commit 6a817834d81cc75ce12d0d393320837b1fec1e85
5788 Want support for GCC's stack protector in libc
commit 350ffdd54baf880f440ddf9697666e283894ded1
13273 want upanic(2)
commit 7fdea60d55a95f0e46066fd021c4ef1b1321bafc
13300 mlxcx_cq_setup() doesn't take required locks for ASSERTs
Merge notes:
- Manifest changes to match package changes (including shipping libssp_ns.a)
- Modified lx_vdso tools to not include SSP, to match other build-only tools.
Diffstat (limited to 'usr/src/uts/common/sys')
-rw-r--r-- | usr/src/uts/common/sys/ccompile.h | 1 | ||||
-rw-r--r-- | usr/src/uts/common/sys/elf.h | 4 | ||||
-rw-r--r-- | usr/src/uts/common/sys/proc.h | 11 | ||||
-rw-r--r-- | usr/src/uts/common/sys/procfs.h | 15 | ||||
-rw-r--r-- | usr/src/uts/common/sys/syscall.h | 46 |
5 files changed, 54 insertions, 23 deletions
diff --git a/usr/src/uts/common/sys/ccompile.h b/usr/src/uts/common/sys/ccompile.h index de0031d6b0..e687fd99a3 100644 --- a/usr/src/uts/common/sys/ccompile.h +++ b/usr/src/uts/common/sys/ccompile.h @@ -160,6 +160,7 @@ extern "C" { #define __unused __sun_attr__((__unused__)) #define __used __attribute__((__used__)) #define __weak_symbol __attribute__((__weak__)) +#define __HIDDEN __attribute__((visibility("hidden"))) #ifdef __cplusplus } diff --git a/usr/src/uts/common/sys/elf.h b/usr/src/uts/common/sys/elf.h index 1a2ca397ef..384c6daf99 100644 --- a/usr/src/uts/common/sys/elf.h +++ b/usr/src/uts/common/sys/elf.h @@ -21,6 +21,7 @@ /* * Copyright 2012 DEY Storage Systems, Inc. All rights reserved. * Copyright (c) 2018, Joyent, Inc. + * Copyright 2020 Oxide Computer Company */ /* * Copyright 2010 Sun Microsystems, Inc. All rights reserved. @@ -1018,7 +1019,8 @@ typedef Elf64_Word Elf64_Capchain; #define NT_SPYMASTER 23 /* psinfo_t for agent LWP spymaster */ #define NT_SECFLAGS 24 /* process security-flags */ #define NT_LWPNAME 25 /* prlwpname_t */ -#define NT_NUM 25 +#define NT_UPANIC 26 /* prupanic_t */ +#define NT_NUM 26 #ifdef _KERNEL diff --git a/usr/src/uts/common/sys/proc.h b/usr/src/uts/common/sys/proc.h index 757bbc87e7..bb6f62f83f 100644 --- a/usr/src/uts/common/sys/proc.h +++ b/usr/src/uts/common/sys/proc.h @@ -22,6 +22,7 @@ /* * Copyright (c) 1988, 2010, Oracle and/or its affiliates. All rights reserved. * Copyright 2018 Joyent, Inc. + * Copyright 2020 Oxide Computer Company */ /* Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T */ @@ -355,6 +356,8 @@ typedef struct proc { kcondvar_t p_poolcv; /* synchronization with pools */ uint_t p_poolcnt; /* # threads inside pool barrier */ uint_t p_poolflag; /* pool-related flags (see below) */ + uint_t p_upanicflag; /* upanic-related flags (see below) */ + void *p_upanic; /* optional upanic data */ uintptr_t p_portcnt; /* event ports counter */ struct zone *p_zone; /* zone in which process lives */ struct vnode *p_execdir; /* directory that p_exec came from */ @@ -524,6 +527,14 @@ extern struct pid pid0; /* p0's pid */ #define PBWAIT 0x0001 /* process should wait outside fork/exec/exit */ #define PEXITED 0x0002 /* process exited and about to become zombie */ +/* + * p_upanicflag codes + */ +#define P_UPF_PANICKED 0x0001 +#define P_UPF_HAVEMSG 0x0002 +#define P_UPF_TRUNCMSG 0x0004 +#define P_UPF_INVALMSG 0x0008 + /* Macro to convert proc pointer to a user block pointer */ #define PTOU(p) (&(p)->p_user) diff --git a/usr/src/uts/common/sys/procfs.h b/usr/src/uts/common/sys/procfs.h index 517f2551b4..3d6760a7b4 100644 --- a/usr/src/uts/common/sys/procfs.h +++ b/usr/src/uts/common/sys/procfs.h @@ -678,6 +678,21 @@ typedef struct prheader { (((unsigned)((flag)-1) < 32*sizeof (*(sp))/sizeof (uint32_t)) && \ (((uint32_t *)(sp))[((flag)-1)/32] & (1U<<(((flag)-1)%32)))) +/* + * Core file upanic NT_UPANIC structure. + */ +#define PRUPANIC_VERSION_1 1 +#define PRUPANIC_VERSION_CURRENT PRUPANIC_VERSION_1 +#define PRUPANIC_FLAG_MSG_VALID 0x01 +#define PRUPANIC_FLAG_MSG_ERROR 0x02 +#define PRUPANIC_FLAG_MSG_TRUNC 0x04 +#define PRUPANIC_BUFLEN 1024 +typedef struct prupanic { + uint32_t pru_version; + uint32_t pru_flags; + uint8_t pru_data[PRUPANIC_BUFLEN]; +} prupanic_t; + #if defined(_SYSCALL32) /* diff --git a/usr/src/uts/common/sys/syscall.h b/usr/src/uts/common/sys/syscall.h index 8709f98c26..cd4f5445b0 100644 --- a/usr/src/uts/common/sys/syscall.h +++ b/usr/src/uts/common/sys/syscall.h @@ -24,6 +24,7 @@ * Copyright (c) 1989, 2010, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2013 by Delphix. All rights reserved. * Copyright (c) 2015, Joyent, Inc. All rights reserved. + * Copyright 2020 Oxide Computer Company */ /* Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T */ @@ -168,38 +169,38 @@ extern "C" { #define SYS_tasksys 70 /* * subcodes: - * settaskid(...) :: tasksys(0, ...) - * gettaskid(...) :: tasksys(1, ...) - * getprojid(...) :: tasksys(2, ...) + * settaskid(...) :: tasksys(0, ...) + * gettaskid(...) :: tasksys(1, ...) + * getprojid(...) :: tasksys(2, ...) */ #define SYS_acctctl 71 #define SYS_exacctsys 72 /* * subcodes: - * getacct(...) :: exacct(0, ...) - * putacct(...) :: exacct(1, ...) - * wracct(...) :: exacct(2, ...) + * getacct(...) :: exacct(0, ...) + * putacct(...) :: exacct(1, ...) + * wracct(...) :: exacct(2, ...) */ #define SYS_getpagesizes 73 /* * subcodes: * getpagesizes2(...) :: getpagesizes(0, ...) - * getpagesizes(...) :: getpagesizes(1, ...) legacy + * getpagesizes(...) :: getpagesizes(1, ...) legacy */ #define SYS_rctlsys 74 /* * subcodes: - * getrctl(...) :: rctlsys(0, ...) - * setrctl(...) :: rctlsys(1, ...) - * rctllist(...) :: rctlsys(2, ...) - * rctlctl(...) :: rctlsys(3, ...) + * getrctl(...) :: rctlsys(0, ...) + * setrctl(...) :: rctlsys(1, ...) + * rctllist(...) :: rctlsys(2, ...) + * rctlctl(...) :: rctlsys(3, ...) */ #define SYS_sidsys 75 /* * subcodes: - * allocids(...) :: sidsys(0, ...) - * idmap_reg(...) :: sidsys(1, ...) - * idmap_unreg(...) :: sidsys(2, ...) + * allocids(...) :: sidsys(0, ...) + * idmap_reg(...) :: sidsys(1, ...) + * idmap_unreg(...) :: sidsys(2, ...) */ #define SYS_lwp_park 77 /* @@ -213,8 +214,8 @@ extern "C" { #define SYS_sendfilev 78 /* * subcodes : - * sendfilev() :: sendfilev(0, ...) - * sendfilev64() :: sendfilev(1, ...) + * sendfilev() :: sendfilev(0, ...) + * sendfilev64() :: sendfilev(1, ...) */ #define SYS_rmdir 79 #define SYS_mkdir 80 @@ -222,11 +223,11 @@ extern "C" { #define SYS_privsys 82 /* * subcodes: - * setppriv(...) :: privsys(0, ...) - * getppriv(...) :: privsys(1, ...) - * getimplinfo(...) :: privsys(2, ...) - * setpflags(...) :: privsys(3, ...) - * getpflags(...) :: privsys(4, ...) + * setppriv(...) :: privsys(0, ...) + * getppriv(...) :: privsys(1, ...) + * getimplinfo(...) :: privsys(2, ...) + * setpflags(...) :: privsys(3, ...) + * getpflags(...) :: privsys(4, ...) * issetugid(); :: privsys(5) */ #define SYS_ucredsys 83 @@ -297,6 +298,7 @@ extern "C" { #define SYS_writev 122 #define SYS_preadv 123 #define SYS_pwritev 124 +#define SYS_upanic 125 #define SYS_getrandom 126 #define SYS_mmapobj 127 #define SYS_setrlimit 128 @@ -368,7 +370,7 @@ extern "C" { #define SYS_meminfosys SYS_lgrpsys /* * subcodes: - * meminfo(...) :: meminfosys(MISYS_MEMINFO, ...) + * meminfo(...) :: meminfosys(MISYS_MEMINFO, ...) */ #define SYS_rusagesys 181 /* |