Changeset View
Changeset View
Standalone View
Standalone View
sys/powerpc/powerpc/elf64_machdep.c
Show First 20 Lines • Show All 157 Lines • ▼ Show 20 Lines | static Elf64_Brandinfo freebsd_brand_info_elfv1 = { | ||||
.sysvec = &elf64_freebsd_sysvec_v1, | .sysvec = &elf64_freebsd_sysvec_v1, | ||||
.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 = &ppc64_elfv1_header_match | .header_supported = &ppc64_elfv1_header_match | ||||
}; | }; | ||||
SYSINIT(elf64v1, SI_SUB_EXEC, SI_ORDER_ANY, | SYSINIT(elf64v1, SI_SUB_EXEC, SI_ORDER_ANY, | ||||
(sysinit_cfunc_t) elf64_insert_brand_entry, | elf64_insert_brand_entry, &freebsd_brand_info_elfv1); | ||||
&freebsd_brand_info_elfv1); | |||||
static Elf64_Brandinfo freebsd_brand_info_elfv2 = { | static Elf64_Brandinfo freebsd_brand_info_elfv2 = { | ||||
.brand = ELFOSABI_FREEBSD, | .brand = ELFOSABI_FREEBSD, | ||||
.machine = EM_PPC64, | .machine = EM_PPC64, | ||||
.compat_3_brand = "FreeBSD", | .compat_3_brand = "FreeBSD", | ||||
.interp_path = "/libexec/ld-elf.so.1", | .interp_path = "/libexec/ld-elf.so.1", | ||||
.sysvec = &elf64_freebsd_sysvec_v2, | .sysvec = &elf64_freebsd_sysvec_v2, | ||||
.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 = &ppc64_elfv2_header_match | .header_supported = &ppc64_elfv2_header_match | ||||
}; | }; | ||||
SYSINIT(elf64v2, SI_SUB_EXEC, SI_ORDER_ANY, | SYSINIT(elf64v2, SI_SUB_EXEC, SI_ORDER_ANY, | ||||
(sysinit_cfunc_t) elf64_insert_brand_entry, | elf64_insert_brand_entry, &freebsd_brand_info_elfv2); | ||||
&freebsd_brand_info_elfv2); | |||||
static Elf64_Brandinfo freebsd_brand_oinfo = { | static Elf64_Brandinfo freebsd_brand_oinfo = { | ||||
.brand = ELFOSABI_FREEBSD, | .brand = ELFOSABI_FREEBSD, | ||||
.machine = EM_PPC64, | .machine = EM_PPC64, | ||||
.compat_3_brand = "FreeBSD", | .compat_3_brand = "FreeBSD", | ||||
.interp_path = "/usr/libexec/ld-elf.so.1", | .interp_path = "/usr/libexec/ld-elf.so.1", | ||||
.sysvec = &elf64_freebsd_sysvec_v1, | .sysvec = &elf64_freebsd_sysvec_v1, | ||||
.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 = &ppc64_elfv1_header_match | .header_supported = &ppc64_elfv1_header_match | ||||
}; | }; | ||||
SYSINIT(oelf64, SI_SUB_EXEC, SI_ORDER_ANY, | SYSINIT(oelf64, SI_SUB_EXEC, SI_ORDER_ANY, | ||||
(sysinit_cfunc_t) elf64_insert_brand_entry, | elf64_insert_brand_entry, &freebsd_brand_oinfo); | ||||
&freebsd_brand_oinfo); | |||||
void elf_reloc_self(Elf_Dyn *dynp, Elf_Addr relocbase); | void elf_reloc_self(Elf_Dyn *dynp, Elf_Addr relocbase); | ||||
static void | static void | ||||
ppc64_init_sysvecs(void *arg) | ppc64_init_sysvecs(void *arg) | ||||
{ | { | ||||
exec_sysvec_init(&elf64_freebsd_sysvec_v2); | exec_sysvec_init(&elf64_freebsd_sysvec_v2); | ||||
exec_sysvec_init_secondary(&elf64_freebsd_sysvec_v2, | exec_sysvec_init_secondary(&elf64_freebsd_sysvec_v2, | ||||
▲ Show 20 Lines • Show All 253 Lines • Show Last 20 Lines |