Changeset View
Changeset View
Standalone View
Standalone View
sys/powerpc/powerpc/elf64_machdep.c
| Show First 20 Lines • Show All 148 Lines • ▼ Show 20 Lines | struct sysentvec elf64_freebsd_sysvec_v2 = { | ||||
| .sv_regset_end = SET_LIMIT(__elfN(regset)), | .sv_regset_end = SET_LIMIT(__elfN(regset)), | ||||
| }; | }; | ||||
| static bool ppc64_elfv1_header_match(const struct image_params *params, | static bool ppc64_elfv1_header_match(const struct image_params *params, | ||||
| const int32_t *, const uint32_t *); | const int32_t *, const uint32_t *); | ||||
| static bool ppc64_elfv2_header_match(const struct image_params *params, | static bool ppc64_elfv2_header_match(const struct image_params *params, | ||||
| const int32_t *, const uint32_t *); | const int32_t *, const uint32_t *); | ||||
| static Elf64_Brandinfo freebsd_brand_info_elfv1 = { | static const Elf64_Brandinfo freebsd_brand_info_elfv1 = { | ||||
| .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_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, | C_SYSINIT(elf64v1, SI_SUB_EXEC, SI_ORDER_ANY, | ||||
| (sysinit_cfunc_t) elf64_insert_brand_entry, | (sysinit_cfunc_t) elf64_insert_brand_entry, | ||||
| &freebsd_brand_info_elfv1); | &freebsd_brand_info_elfv1); | ||||
| static Elf64_Brandinfo freebsd_brand_info_elfv2 = { | static const 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, | C_SYSINIT(elf64v2, SI_SUB_EXEC, SI_ORDER_ANY, | ||||
| (sysinit_cfunc_t) elf64_insert_brand_entry, | (sysinit_cfunc_t) elf64_insert_brand_entry, | ||||
| &freebsd_brand_info_elfv2); | &freebsd_brand_info_elfv2); | ||||
| static Elf64_Brandinfo freebsd_brand_oinfo = { | static const 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, | C_SYSINIT(oelf64, SI_SUB_EXEC, SI_ORDER_ANY, | ||||
| (sysinit_cfunc_t) elf64_insert_brand_entry, | (sysinit_cfunc_t) 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) | ||||
| { | { | ||||
| ▲ Show 20 Lines • Show All 253 Lines • Show Last 20 Lines | |||||