1*31d743dfSMarcel Moolenaar /* $FreeBSD$ */ 2*31d743dfSMarcel Moolenaar #ifndef __LP64__ 3*31d743dfSMarcel Moolenaar #error "this file must be compiled for LP64." 4*31d743dfSMarcel Moolenaar #endif 5*31d743dfSMarcel Moolenaar 6*31d743dfSMarcel Moolenaar #define __ELF_WORD_SIZE 32 7*31d743dfSMarcel Moolenaar #define _MACHINE_ELF_WANT_32BIT 8*31d743dfSMarcel Moolenaar 9*31d743dfSMarcel Moolenaar #include <sys/procfs.h> 10*31d743dfSMarcel Moolenaar 11*31d743dfSMarcel Moolenaar struct prpsinfo32 { 12*31d743dfSMarcel Moolenaar int pr_version; 13*31d743dfSMarcel Moolenaar u_int pr_psinfosz; 14*31d743dfSMarcel Moolenaar char pr_fname[PRFNAMESZ+1]; 15*31d743dfSMarcel Moolenaar char pr_psargs[PRARGSZ+1]; 16*31d743dfSMarcel Moolenaar }; 17*31d743dfSMarcel Moolenaar 18*31d743dfSMarcel Moolenaar struct prstatus32 { 19*31d743dfSMarcel Moolenaar int pr_version; 20*31d743dfSMarcel Moolenaar u_int pr_statussz; 21*31d743dfSMarcel Moolenaar u_int pr_gregsetsz; 22*31d743dfSMarcel Moolenaar u_int pr_fpregsetsz; 23*31d743dfSMarcel Moolenaar int pr_osreldate; 24*31d743dfSMarcel Moolenaar int pr_cursig; 25*31d743dfSMarcel Moolenaar pid_t pr_pid; 26*31d743dfSMarcel Moolenaar struct reg32 pr_reg; 27*31d743dfSMarcel Moolenaar }; 28*31d743dfSMarcel Moolenaar 29*31d743dfSMarcel Moolenaar #define ELFCORE_COMPAT_32 1 30*31d743dfSMarcel Moolenaar #include "elfcore.c" 31*31d743dfSMarcel Moolenaar 32*31d743dfSMarcel Moolenaar static void 33*31d743dfSMarcel Moolenaar elf_convert_gregset(elfcore_gregset_t *rd, struct reg *rs) 34*31d743dfSMarcel Moolenaar { 35*31d743dfSMarcel Moolenaar #ifdef __amd64__ 36*31d743dfSMarcel Moolenaar rd->r_gs = rs->r_gs; 37*31d743dfSMarcel Moolenaar rd->r_fs = rs->r_fs; 38*31d743dfSMarcel Moolenaar rd->r_es = rs->r_es; 39*31d743dfSMarcel Moolenaar rd->r_ds = rs->r_ds; 40*31d743dfSMarcel Moolenaar rd->r_edi = rs->r_rdi; 41*31d743dfSMarcel Moolenaar rd->r_esi = rs->r_rsi; 42*31d743dfSMarcel Moolenaar rd->r_ebp = rs->r_rbp; 43*31d743dfSMarcel Moolenaar rd->r_ebx = rs->r_rbx; 44*31d743dfSMarcel Moolenaar rd->r_edx = rs->r_rdx; 45*31d743dfSMarcel Moolenaar rd->r_ecx = rs->r_rcx; 46*31d743dfSMarcel Moolenaar rd->r_eax = rs->r_rax; 47*31d743dfSMarcel Moolenaar rd->r_eip = rs->r_rip; 48*31d743dfSMarcel Moolenaar rd->r_cs = rs->r_cs; 49*31d743dfSMarcel Moolenaar rd->r_eflags = rs->r_rflags; 50*31d743dfSMarcel Moolenaar rd->r_esp = rs->r_rsp; 51*31d743dfSMarcel Moolenaar rd->r_ss = rs->r_ss; 52*31d743dfSMarcel Moolenaar #else 53*31d743dfSMarcel Moolenaar #error Unsupported architecture 54*31d743dfSMarcel Moolenaar #endif 55*31d743dfSMarcel Moolenaar } 56*31d743dfSMarcel Moolenaar 57*31d743dfSMarcel Moolenaar static void 58*31d743dfSMarcel Moolenaar elf_convert_fpregset(elfcore_fpregset_t *rd, struct fpreg *rs) 59*31d743dfSMarcel Moolenaar { 60*31d743dfSMarcel Moolenaar #ifdef __amd64__ 61*31d743dfSMarcel Moolenaar /* XXX this is wrong... */ 62*31d743dfSMarcel Moolenaar memcpy(rd, rs, sizeof(*rd)); 63*31d743dfSMarcel Moolenaar #else 64*31d743dfSMarcel Moolenaar #error Unsupported architecture 65*31d743dfSMarcel Moolenaar #endif 66*31d743dfSMarcel Moolenaar } 67