Changeset View
Changeset View
Standalone View
Standalone View
sys/amd64/amd64/elf_machdep.c
Show First 20 Lines • Show All 63 Lines • ▼ Show 20 Lines | struct sysentvec elf64_freebsd_sysvec_la48 = { | ||||
.sv_sigcode = _binary_elf_vdso_so_1_start, | .sv_sigcode = _binary_elf_vdso_so_1_start, | ||||
.sv_szsigcode = (int *)&_binary_elf_vdso_so_1_size, | .sv_szsigcode = (int *)&_binary_elf_vdso_so_1_size, | ||||
.sv_sigcodeoff = VDSO_SIGCODE_OFFSET, | .sv_sigcodeoff = VDSO_SIGCODE_OFFSET, | ||||
.sv_name = "FreeBSD ELF64", | .sv_name = "FreeBSD ELF64", | ||||
.sv_coredump = __elfN(coredump), | .sv_coredump = __elfN(coredump), | ||||
.sv_elf_core_osabi = ELFOSABI_FREEBSD, | .sv_elf_core_osabi = ELFOSABI_FREEBSD, | ||||
.sv_elf_core_abi_vendor = FREEBSD_ABI_VENDOR, | .sv_elf_core_abi_vendor = FREEBSD_ABI_VENDOR, | ||||
.sv_elf_core_prepare_notes = __elfN(prepare_notes), | .sv_elf_core_prepare_notes = __elfN(prepare_notes), | ||||
.sv_imgact_try = NULL, | |||||
.sv_minsigstksz = MINSIGSTKSZ, | .sv_minsigstksz = MINSIGSTKSZ, | ||||
.sv_minuser = VM_MIN_ADDRESS, | .sv_minuser = VM_MIN_ADDRESS, | ||||
.sv_maxuser = VM_MAXUSER_ADDRESS_LA48, | .sv_maxuser = VM_MAXUSER_ADDRESS_LA48, | ||||
.sv_usrstack = USRSTACK_LA48, | .sv_usrstack = USRSTACK_LA48, | ||||
.sv_psstrings = PS_STRINGS_LA48, | .sv_psstrings = PS_STRINGS_LA48, | ||||
.sv_psstringssz = sizeof(struct ps_strings), | .sv_psstringssz = sizeof(struct ps_strings), | ||||
.sv_stackprot = VM_PROT_ALL, | .sv_stackprot = VM_PROT_ALL, | ||||
.sv_copyout_auxargs = __elfN(freebsd_copyout_auxargs), | .sv_copyout_auxargs = __elfN(freebsd_copyout_auxargs), | ||||
Show All 26 Lines | struct sysentvec elf64_freebsd_sysvec_la57 = { | ||||
.sv_sigcode = _binary_elf_vdso_so_1_start, | .sv_sigcode = _binary_elf_vdso_so_1_start, | ||||
.sv_szsigcode = (int *)&_binary_elf_vdso_so_1_size, | .sv_szsigcode = (int *)&_binary_elf_vdso_so_1_size, | ||||
.sv_sigcodeoff = VDSO_SIGCODE_OFFSET, | .sv_sigcodeoff = VDSO_SIGCODE_OFFSET, | ||||
.sv_name = "FreeBSD ELF64", | .sv_name = "FreeBSD ELF64", | ||||
.sv_coredump = __elfN(coredump), | .sv_coredump = __elfN(coredump), | ||||
.sv_elf_core_osabi = ELFOSABI_FREEBSD, | .sv_elf_core_osabi = ELFOSABI_FREEBSD, | ||||
.sv_elf_core_abi_vendor = FREEBSD_ABI_VENDOR, | .sv_elf_core_abi_vendor = FREEBSD_ABI_VENDOR, | ||||
.sv_elf_core_prepare_notes = __elfN(prepare_notes), | .sv_elf_core_prepare_notes = __elfN(prepare_notes), | ||||
.sv_imgact_try = NULL, | |||||
.sv_minsigstksz = MINSIGSTKSZ, | .sv_minsigstksz = MINSIGSTKSZ, | ||||
.sv_minuser = VM_MIN_ADDRESS, | .sv_minuser = VM_MIN_ADDRESS, | ||||
.sv_maxuser = VM_MAXUSER_ADDRESS_LA57, | .sv_maxuser = VM_MAXUSER_ADDRESS_LA57, | ||||
.sv_usrstack = USRSTACK_LA57, | .sv_usrstack = USRSTACK_LA57, | ||||
.sv_psstrings = PS_STRINGS_LA57, | .sv_psstrings = PS_STRINGS_LA57, | ||||
.sv_psstringssz = sizeof(struct ps_strings), | .sv_psstringssz = sizeof(struct ps_strings), | ||||
.sv_stackprot = VM_PROT_ALL, | .sv_stackprot = VM_PROT_ALL, | ||||
.sv_copyout_auxargs = __elfN(freebsd_copyout_auxargs), | .sv_copyout_auxargs = __elfN(freebsd_copyout_auxargs), | ||||
▲ Show 20 Lines • Show All 55 Lines • ▼ Show 20 Lines | if ((imgp->proc->p_md.md_flags & P_MD_LA48) != 0) | ||||
return (FALSE); | return (FALSE); | ||||
return (TRUE); | return (TRUE); | ||||
} | } | ||||
static Elf64_Brandinfo freebsd_brand_info_la48 = { | static Elf64_Brandinfo freebsd_brand_info_la48 = { | ||||
.brand = ELFOSABI_FREEBSD, | .brand = ELFOSABI_FREEBSD, | ||||
.machine = EM_X86_64, | .machine = EM_X86_64, | ||||
.compat_3_brand = "FreeBSD", | .compat_3_brand = "FreeBSD", | ||||
.emul_path = NULL, | |||||
.interp_path = "/libexec/ld-elf.so.1", | .interp_path = "/libexec/ld-elf.so.1", | ||||
.sysvec = &elf64_freebsd_sysvec_la48, | .sysvec = &elf64_freebsd_sysvec_la48, | ||||
.interp_newpath = NULL, | .interp_newpath = NULL, | ||||
.brand_note = &elf64_freebsd_brandnote, | .brand_note = &elf64_freebsd_brandnote, | ||||
.flags = BI_CAN_EXEC_DYN | BI_BRAND_NOTE, | .flags = BI_CAN_EXEC_DYN | BI_BRAND_NOTE, | ||||
}; | }; | ||||
static Elf64_Brandinfo freebsd_brand_info_la57 = { | static Elf64_Brandinfo freebsd_brand_info_la57 = { | ||||
.brand = ELFOSABI_FREEBSD, | .brand = ELFOSABI_FREEBSD, | ||||
.machine = EM_X86_64, | .machine = EM_X86_64, | ||||
.compat_3_brand = "FreeBSD", | .compat_3_brand = "FreeBSD", | ||||
.emul_path = NULL, | |||||
.interp_path = "/libexec/ld-elf.so.1", | .interp_path = "/libexec/ld-elf.so.1", | ||||
.sysvec = &elf64_freebsd_sysvec_la57, | .sysvec = &elf64_freebsd_sysvec_la57, | ||||
.interp_newpath = NULL, | .interp_newpath = NULL, | ||||
.brand_note = &elf64_freebsd_brandnote, | .brand_note = &elf64_freebsd_brandnote, | ||||
.flags = BI_CAN_EXEC_DYN | BI_BRAND_NOTE, | .flags = BI_CAN_EXEC_DYN | BI_BRAND_NOTE, | ||||
.header_supported = freebsd_brand_info_la57_img_compat, | .header_supported = freebsd_brand_info_la57_img_compat, | ||||
}; | }; | ||||
Show All 10 Lines | |||||
} | } | ||||
SYSINIT(elf64, SI_SUB_EXEC, SI_ORDER_FIRST, | SYSINIT(elf64, SI_SUB_EXEC, SI_ORDER_FIRST, | ||||
sysinit_register_elf64_brand_entries, NULL); | sysinit_register_elf64_brand_entries, NULL); | ||||
static Elf64_Brandinfo freebsd_brand_oinfo = { | static Elf64_Brandinfo freebsd_brand_oinfo = { | ||||
.brand = ELFOSABI_FREEBSD, | .brand = ELFOSABI_FREEBSD, | ||||
.machine = EM_X86_64, | .machine = EM_X86_64, | ||||
.compat_3_brand = "FreeBSD", | .compat_3_brand = "FreeBSD", | ||||
.emul_path = NULL, | |||||
.interp_path = "/usr/libexec/ld-elf.so.1", | .interp_path = "/usr/libexec/ld-elf.so.1", | ||||
.sysvec = &elf64_freebsd_sysvec_la48, | .sysvec = &elf64_freebsd_sysvec_la48, | ||||
.interp_newpath = NULL, | .interp_newpath = NULL, | ||||
.brand_note = &elf64_freebsd_brandnote, | .brand_note = &elf64_freebsd_brandnote, | ||||
.flags = BI_CAN_EXEC_DYN | BI_BRAND_NOTE | .flags = BI_CAN_EXEC_DYN | BI_BRAND_NOTE | ||||
}; | }; | ||||
SYSINIT(oelf64, SI_SUB_EXEC, SI_ORDER_ANY, | SYSINIT(oelf64, SI_SUB_EXEC, SI_ORDER_ANY, | ||||
(sysinit_cfunc_t)elf64_insert_brand_entry, &freebsd_brand_oinfo); | (sysinit_cfunc_t)elf64_insert_brand_entry, &freebsd_brand_oinfo); | ||||
static Elf64_Brandinfo kfreebsd_brand_info = { | static Elf64_Brandinfo kfreebsd_brand_info = { | ||||
.brand = ELFOSABI_FREEBSD, | .brand = ELFOSABI_FREEBSD, | ||||
.machine = EM_X86_64, | .machine = EM_X86_64, | ||||
.compat_3_brand = "FreeBSD", | .compat_3_brand = "FreeBSD", | ||||
.emul_path = NULL, | |||||
.interp_path = "/lib/ld-kfreebsd-x86-64.so.1", | .interp_path = "/lib/ld-kfreebsd-x86-64.so.1", | ||||
.sysvec = &elf64_freebsd_sysvec_la48, | .sysvec = &elf64_freebsd_sysvec_la48, | ||||
.interp_newpath = NULL, | .interp_newpath = NULL, | ||||
.brand_note = &elf64_kfreebsd_brandnote, | .brand_note = &elf64_kfreebsd_brandnote, | ||||
.flags = BI_CAN_EXEC_DYN | BI_BRAND_NOTE_MANDATORY | .flags = BI_CAN_EXEC_DYN | BI_BRAND_NOTE_MANDATORY | ||||
}; | }; | ||||
SYSINIT(kelf64, SI_SUB_EXEC, SI_ORDER_ANY, | SYSINIT(kelf64, SI_SUB_EXEC, SI_ORDER_ANY, | ||||
▲ Show 20 Lines • Show All 200 Lines • Show Last 20 Lines |