svn commit: r354260 - in stable/12/sys: arm64/arm64 kern riscv/riscv
Mitchell Horne
mhorne at FreeBSD.org
Sat Nov 2 19:46:40 UTC 2019
Author: mhorne
Date: Sat Nov 2 19:46:39 2019
New Revision: 354260
URL: https://svnweb.freebsd.org/changeset/base/354260
Log:
MFC r340228-r340229, r340231
r340228 by jhb:
Enable use of a global shared page for RISC-V.
machine/vmparam.h already defines the SHAREDPAGE constant. This
change just enables it for ELF executables. The only use of the
shared page currently is to hold the signal trampoline.
Reviewed by: markj, kib
Sponsored by: DARPA
Differential Revision: https://reviews.freebsd.org/D17875
r340229 by jhb:
Drop the legacy ELF brandinfo for the old rtld from arm64 and riscv.
These architectures never shipped binaries with an rtld path of
/usr/libexec/ld-elf.so.1.
Reviewed by: markj
Sponsored by: DARPA
Differential Revision: https://reviews.freebsd.org/D17876
r340231 by jhb:
Enable non-executable stacks by default on RISC-V.
Reviewed by: markj
Sponsored by: DARPA
Differential Revision: https://reviews.freebsd.org/D17878
Modified:
stable/12/sys/arm64/arm64/elf_machdep.c
stable/12/sys/kern/imgact_elf.c
stable/12/sys/riscv/riscv/elf_machdep.c
Directory Properties:
stable/12/ (props changed)
Modified: stable/12/sys/arm64/arm64/elf_machdep.c
==============================================================================
--- stable/12/sys/arm64/arm64/elf_machdep.c Sat Nov 2 19:33:02 2019 (r354259)
+++ stable/12/sys/arm64/arm64/elf_machdep.c Sat Nov 2 19:46:39 2019 (r354260)
@@ -107,21 +107,6 @@ static Elf64_Brandinfo freebsd_brand_info = {
SYSINIT(elf64, SI_SUB_EXEC, SI_ORDER_FIRST,
(sysinit_cfunc_t)elf64_insert_brand_entry, &freebsd_brand_info);
-static Elf64_Brandinfo freebsd_brand_oinfo = {
- .brand = ELFOSABI_FREEBSD,
- .machine = EM_AARCH64,
- .compat_3_brand = "FreeBSD",
- .emul_path = NULL,
- .interp_path = "/usr/libexec/ld-elf.so.1",
- .sysvec = &elf64_freebsd_sysvec,
- .interp_newpath = NULL,
- .brand_note = &elf64_freebsd_brandnote,
- .flags = BI_CAN_EXEC_DYN | BI_BRAND_NOTE
-};
-
-SYSINIT(oelf64, SI_SUB_EXEC, SI_ORDER_ANY,
- (sysinit_cfunc_t)elf64_insert_brand_entry, &freebsd_brand_oinfo);
-
void
elf64_dump_thread(struct thread *td __unused, void *dst __unused,
size_t *off __unused)
Modified: stable/12/sys/kern/imgact_elf.c
==============================================================================
--- stable/12/sys/kern/imgact_elf.c Sat Nov 2 19:33:02 2019 (r354259)
+++ stable/12/sys/kern/imgact_elf.c Sat Nov 2 19:46:39 2019 (r354260)
@@ -119,7 +119,8 @@ SYSCTL_INT(_debug, OID_AUTO, __elfN(legacy_coredump),
int __elfN(nxstack) =
#if defined(__amd64__) || defined(__powerpc64__) /* both 64 and 32 bit */ || \
- (defined(__arm__) && __ARM_ARCH >= 7) || defined(__aarch64__)
+ (defined(__arm__) && __ARM_ARCH >= 7) || defined(__aarch64__) || \
+ defined(__riscv)
1;
#else
0;
Modified: stable/12/sys/riscv/riscv/elf_machdep.c
==============================================================================
--- stable/12/sys/riscv/riscv/elf_machdep.c Sat Nov 2 19:33:02 2019 (r354259)
+++ stable/12/sys/riscv/riscv/elf_machdep.c Sat Nov 2 19:46:39 2019 (r354260)
@@ -84,10 +84,12 @@ struct sysentvec elf64_freebsd_sysvec = {
.sv_setregs = exec_setregs,
.sv_fixlimit = NULL,
.sv_maxssiz = NULL,
- .sv_flags = SV_ABI_FREEBSD | SV_LP64 | SV_ASLR,
+ .sv_flags = SV_ABI_FREEBSD | SV_LP64 | SV_SHP | SV_ASLR,
.sv_set_syscall_retval = cpu_set_syscall_retval,
.sv_fetch_syscall_args = cpu_fetch_syscall_args,
.sv_syscallnames = syscallnames,
+ .sv_shared_page_base = SHAREDPAGE,
+ .sv_shared_page_len = PAGE_SIZE,
.sv_schedtail = NULL,
.sv_thread_detach = NULL,
.sv_trap = NULL,
@@ -110,22 +112,6 @@ static Elf64_Brandinfo freebsd_brand_info = {
SYSINIT(elf64, SI_SUB_EXEC, SI_ORDER_FIRST,
(sysinit_cfunc_t) elf64_insert_brand_entry,
&freebsd_brand_info);
-
-static Elf64_Brandinfo freebsd_brand_oinfo = {
- .brand = ELFOSABI_FREEBSD,
- .machine = EM_RISCV,
- .compat_3_brand = "FreeBSD",
- .emul_path = NULL,
- .interp_path = "/usr/libexec/ld-elf.so.1",
- .sysvec = &elf64_freebsd_sysvec,
- .interp_newpath = NULL,
- .brand_note = &elf64_freebsd_brandnote,
- .flags = BI_CAN_EXEC_DYN | BI_BRAND_NOTE
-};
-
-SYSINIT(oelf64, SI_SUB_EXEC, SI_ORDER_ANY,
- (sysinit_cfunc_t) elf64_insert_brand_entry,
- &freebsd_brand_oinfo);
static int debug_kld;
SYSCTL_INT(_kern, OID_AUTO, debug_kld,
More information about the svn-src-stable-12
mailing list