* alpha-nat.c (fetch_aout_core_registers): Rename from
fetch_core_registers. (fetch_elf_core_registers): New function. (supply_gregset): Use ALPHA_REGSET_BASE. (supply_fpregset): Likewise. (fill_fpregset): Likewise. (alpha_aout_core_fns): Rename from alpha_core_fns. (alpha_elf_core_fns): New. * config/alpha/alpha-linux.mh (NATDEPFILES): solib.o not osfsolib.o. Disable MMALLOC. * config/alpha/nm-linux.h (SVR4_SHARED_LIBS): Define if ELF. (TARGET_ELF64): Likewise. (ALPHA_REGSET_BASE): New. * config/alpha/nm-osf.h (ALPHA_REGSET_BASE): New. * config/alpha/tm-alphalinux.h: Include tm-sysv4.h. * solib.c (elf_locate_base): Add TARGET_ELF64 support. (info_sharedlibary_command): Likewise. * configure.host: Match alpha*. * configure.tgt: Likewise.
This commit is contained in:
parent
1eaf1cef93
commit
ffa1f5b9c3
|
@ -81,7 +81,7 @@ get_longjmp_target (pc)
|
|||
*/
|
||||
|
||||
static void
|
||||
fetch_core_registers (core_reg_sect, core_reg_size, which, reg_addr)
|
||||
fetch_aout_core_registers (core_reg_sect, core_reg_size, which, reg_addr)
|
||||
char *core_reg_sect;
|
||||
unsigned core_reg_size;
|
||||
int which;
|
||||
|
@ -132,6 +132,38 @@ fetch_core_registers (core_reg_sect, core_reg_size, which, reg_addr)
|
|||
}
|
||||
}
|
||||
|
||||
static void
|
||||
fetch_elf_core_registers (core_reg_sect, core_reg_size, which, reg_addr)
|
||||
char *core_reg_sect;
|
||||
unsigned core_reg_size;
|
||||
int which;
|
||||
CORE_ADDR reg_addr;
|
||||
{
|
||||
if (core_reg_size < 32*8)
|
||||
{
|
||||
error ("Core file register section too small (%u bytes).", core_reg_size);
|
||||
return;
|
||||
}
|
||||
|
||||
if (which == 2)
|
||||
{
|
||||
/* The FPU Registers. */
|
||||
memcpy (®isters[REGISTER_BYTE (FP0_REGNUM)], core_reg_sect, 31*8);
|
||||
memset (®isters[REGISTER_BYTE (FP0_REGNUM+31)], 0, 8);
|
||||
memset (®ister_valid[FP0_REGNUM], 1, 32);
|
||||
}
|
||||
else
|
||||
{
|
||||
/* The General Registers. */
|
||||
memcpy (®isters[REGISTER_BYTE (V0_REGNUM)], core_reg_sect, 31*8);
|
||||
memcpy (®isters[REGISTER_BYTE (PC_REGNUM)], core_reg_sect+31*8, 8);
|
||||
memset (®isters[REGISTER_BYTE (ZERO_REGNUM)], 0, 8);
|
||||
memset (®ister_valid[V0_REGNUM], 1, 32);
|
||||
register_valid[PC_REGNUM] = 1;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/* Map gdb internal register number to a ptrace ``address''.
|
||||
These ``addresses'' are defined in <sys/ptrace.h> */
|
||||
|
||||
|
@ -157,7 +189,7 @@ kernel_u_size ()
|
|||
return (sizeof (struct user));
|
||||
}
|
||||
|
||||
#ifdef USE_PROC_FS
|
||||
#if defined(USE_PROC_FS) || defined(HAVE_GREGSET_T)
|
||||
#include <sys/procfs.h>
|
||||
|
||||
/*
|
||||
|
@ -169,7 +201,7 @@ supply_gregset (gregsetp)
|
|||
gregset_t *gregsetp;
|
||||
{
|
||||
register int regi;
|
||||
register long *regp = gregsetp->regs;
|
||||
register long *regp = ALPHA_REGSET_BASE (gregsetp);
|
||||
static char zerobuf[MAX_REGISTER_RAW_SIZE] = {0};
|
||||
|
||||
for (regi = 0; regi < 31; regi++)
|
||||
|
@ -188,7 +220,7 @@ fill_gregset (gregsetp, regno)
|
|||
int regno;
|
||||
{
|
||||
int regi;
|
||||
register long *regp = gregsetp->regs;
|
||||
register long *regp = ALPHA_REGSET_BASE (gregsetp);
|
||||
|
||||
for (regi = 0; regi < 31; regi++)
|
||||
if ((regno == -1) || (regno == regi))
|
||||
|
@ -208,7 +240,7 @@ supply_fpregset (fpregsetp)
|
|||
fpregset_t *fpregsetp;
|
||||
{
|
||||
register int regi;
|
||||
register long *regp = fpregsetp->regs;
|
||||
register long *regp = ALPHA_REGSET_BASE (fpregsetp);
|
||||
|
||||
for (regi = 0; regi < 32; regi++)
|
||||
supply_register (regi + FP0_REGNUM, (char *)(regp + regi));
|
||||
|
@ -220,7 +252,7 @@ fill_fpregset (fpregsetp, regno)
|
|||
int regno;
|
||||
{
|
||||
int regi;
|
||||
register long *regp = fpregsetp->regs;
|
||||
register long *regp = ALPHA_REGSET_BASE (fpregsetp);
|
||||
|
||||
for (regi = FP0_REGNUM; regi < FP0_REGNUM + 32; regi++)
|
||||
{
|
||||
|
@ -236,15 +268,23 @@ fill_fpregset (fpregsetp, regno)
|
|||
|
||||
/* Register that we are able to handle alpha core file formats. */
|
||||
|
||||
static struct core_fns alpha_core_fns =
|
||||
static struct core_fns alpha_aout_core_fns =
|
||||
{
|
||||
bfd_target_aout_flavour,
|
||||
fetch_core_registers,
|
||||
fetch_aout_core_registers,
|
||||
NULL
|
||||
};
|
||||
|
||||
static struct core_fns alpha_elf_core_fns =
|
||||
{
|
||||
bfd_target_elf_flavour,
|
||||
fetch_elf_core_registers,
|
||||
NULL
|
||||
};
|
||||
|
||||
void
|
||||
_initialize_core_alpha ()
|
||||
{
|
||||
add_core_fns (&alpha_core_fns);
|
||||
add_core_fns (&alpha_aout_core_fns);
|
||||
add_core_fns (&alpha_elf_core_fns);
|
||||
}
|
||||
|
|
|
@ -74,4 +74,7 @@ extern long alpha_linux_sigtramp_offset PARAMS ((CORE_ADDR));
|
|||
#undef FRAME_PAST_SIGTRAMP_FRAME
|
||||
#define FRAME_PAST_SIGTRAMP_FRAME(frame, pc) (0)
|
||||
|
||||
/* We need this for the SOLIB_TRAMPOLINE stuff. */
|
||||
#include "tm-sysv4.h"
|
||||
|
||||
#endif /* TM_LINUXALPHA_H */
|
||||
|
|
|
@ -10,6 +10,7 @@
|
|||
|
||||
case "${host_cpu}" in
|
||||
|
||||
alpha*) gdb_host_cpu=alpha ;;
|
||||
c[12]) gdb_host_cpu=convex ;;
|
||||
hppa*) gdb_host_cpu=pa ;;
|
||||
i[3456]86*) gdb_host_cpu=i386 ;;
|
||||
|
@ -29,10 +30,10 @@ case "${host}" in
|
|||
|
||||
a29k-*-*) gdb_host=ultra3 ;;
|
||||
|
||||
alpha-*-osf1*) gdb_host=alpha-osf1 ;;
|
||||
alpha-*-osf2*) gdb_host=alpha-osf2 ;;
|
||||
alpha-*-osf[3456789]*) gdb_host=alpha-osf3 ;;
|
||||
alpha-*-linux*) gdb_host=alpha-linux ;;
|
||||
alpha*-*-osf1*) gdb_host=alpha-osf1 ;;
|
||||
alpha*-*-osf2*) gdb_host=alpha-osf2 ;;
|
||||
alpha*-*-osf[3456789]*) gdb_host=alpha-osf3 ;;
|
||||
alpha*-*-linux*) gdb_host=alpha-linux ;;
|
||||
|
||||
arm-*-*) gdb_host=arm ;;
|
||||
|
||||
|
|
|
@ -12,7 +12,7 @@
|
|||
|
||||
case "${target_cpu}" in
|
||||
|
||||
alpha) gdb_target_cpu=alpha ;;
|
||||
alpha*) gdb_target_cpu=alpha ;;
|
||||
c[12]) gdb_target_cpu=convex ;;
|
||||
hppa*) gdb_target_cpu=pa ;;
|
||||
i[3456]86*) gdb_target_cpu=i386 ;;
|
||||
|
@ -43,8 +43,8 @@ a29k-*-sym1*) gdb_target=ultra3 ;;
|
|||
a29k-*-udi*) gdb_target=a29k-udi ;;
|
||||
a29k-*-vxworks*) gdb_target=vx29k ;;
|
||||
|
||||
alpha-*-osf*) gdb_target=alpha-osf1 ;;
|
||||
alpha-*-linux*) gdb_target=alpha-linux ;;
|
||||
alpha*-*-osf*) gdb_target=alpha-osf1 ;;
|
||||
alpha*-*-linux*) gdb_target=alpha-linux ;;
|
||||
|
||||
arc-*-*) gdb_target=arc ;;
|
||||
|
||||
|
|
Loading…
Reference in New Issue