Article View: gnu.gdb.bug
Article #176Backtrace bug on HP PA
From: perobert
Date: Mon, 10 Aug 1992 22:24
Date: Mon, 10 Aug 1992 22:24
89 lines
5658 bytes
5658 bytes
There is a bug in the code for HP PA that causes the backtrace command
to occasionally go into an infinite loop. The problem is in tm-hppa.h
where a line was inadvertently deleted. The other changes have been made
so that the compiler won't give warnings. ~ftp/dist/pa-gdb-4.5.tar.Z on
jaguar.cs.utah.edu has been updated with the fix. Also a number of
people have been having trouble applying our tar file because some
files in the stock gdb-4.6 have a protection of 444.
Thanks
-Paul
The fix:
rcsdiff -r1.2 -c tm-hppa.h
RCS file: RCS/tm-hppa.h,v
retrieving revision 1.2
diff -c -r1.2 tm-hppa.h
*** /tmp/,RCSt1026853 Mon Aug 10 16:03:49 1992
--- tm-hppa.h Mon Aug 10 14:47:46 1992
***************
*** 400,405 ****
--- 400,406 ----
{ regnum = GET_FIELD (this_insn, 27, 31); \
(frame_saved_regs).regs[regnum + FP0_REGNUM] = next_addr; \
next_addr += 8; \
+ pc += 4; \
} \
else \
break; \
***************
*** 421,429 ****
/* Space for "arguments"; the RP goes in here. */ \
sp += 48; \
int_buffer = read_register (RP_REGNUM) | 0x3; \
! write_memory (sp - 20, &int_buffer, 4); \
int_buffer = read_register (FP_REGNUM); \
! write_memory (sp, &int_buffer, 4); \
write_register (FP_REGNUM, sp); \
sp += 4; \
for (regnum = 1; regnum < 31; regnum++) \
--- 422,430 ----
/* Space for "arguments"; the RP goes in here. */ \
sp += 48; \
int_buffer = read_register (RP_REGNUM) | 0x3; \
! write_memory (sp - 20, (char *)&int_buffer, 4); \
int_buffer = read_register (FP_REGNUM); \
! write_memory (sp, (char *)&int_buffer, 4); \
write_register (FP_REGNUM, sp); \
sp += 4; \
for (regnum = 1; regnum < 31; regnum++) \
***************
*** 430,437 ****
if (regnum != RP_REGNUM && regnum != FP_REGNUM) \
sp = push_word (sp, read_register (regnum)); \
for (regnum = FP0_REGNUM; regnum < NUM_REGS; regnum++) \
! { read_register_bytes (REGISTER_BYTE (regnum), &freg_buffer, 8); \
! sp = push_bytes (sp, &freg_buffer, 8);} \
sp = push_word (sp, read_register (IPSW_REGNUM)); \
sp = push_word (sp, read_register (SAR_REGNUM)); \
sp = push_word (sp, read_register (PCOQ_TAIL_REGNUM)); \
--- 431,438 ----
if (regnum != RP_REGNUM && regnum != FP_REGNUM) \
sp = push_word (sp, read_register (regnum)); \
for (regnum = FP0_REGNUM; regnum < NUM_REGS; regnum++) \
! { read_register_bytes (REGISTER_BYTE (regnum), (char *)&freg_buffer, 8); \
! sp = push_bytes (sp, (char *)&freg_buffer, 8);} \
sp = push_word (sp, read_register (IPSW_REGNUM)); \
sp = push_word (sp, read_register (SAR_REGNUM)); \
sp = push_word (sp, read_register (PCOQ_TAIL_REGNUM)); \
***************
*** 455,462 ****
write_register (regnum, read_memory_integer (fsr.regs[regnum], 4)); \
for (regnum = NUM_REGS - 1; regnum >= FP0_REGNUM ; regnum--) \
if (fsr.regs[regnum]) \
! { read_memory (fsr.regs[regnum], &freg_buffer, 8); \
! write_register_bytes (REGISTER_BYTE (regnum), &freg_buffer, 8); }\
if (fsr.regs[IPSW_REGNUM]) \
write_register (IPSW_REGNUM, \
read_memory_integer (fsr.regs[IPSW_REGNUM], 4)); \
--- 456,463 ----
write_register (regnum, read_memory_integer (fsr.regs[regnum], 4)); \
for (regnum = NUM_REGS - 1; regnum >= FP0_REGNUM ; regnum--) \
if (fsr.regs[regnum]) \
! { read_memory (fsr.regs[regnum], (char *)&freg_buffer, 8); \
! write_register_bytes (REGISTER_BYTE (regnum), (char *)&freg_buffer, 8)
; }\
if (fsr.regs[IPSW_REGNUM]) \
write_register (IPSW_REGNUM, \
read_memory_integer (fsr.regs[IPSW_REGNUM], 4)); \
Technical Details
Message-ID:
<9208102225.AA24561@bells.cs.utah.edu>Path:
arc1-ca.pugleaf.net!sparky!uunet!cis.ohio-state.edu!bells.cs.utah.edu!perobertShow Full Headers
Complete Article Headers
Newsgroups: gnu.gdb.bug Path: arc1-ca.pugleaf.net!sparky!uunet!cis.ohio-state.edu!bells.cs.utah.edu!perobert From: perobert@bells.cs.utah.edu Subject: Backtrace bug on HP PA Message-ID: <9208102225.AA24561@bells.cs.utah.edu> Sender: gnulists@ai.mit.edu Organization: GNUs Not Usenet Distribution: gnu Date: Mon, 10 Aug 1992 22:24:56 GMT Approved: bug-gdb@prep.ai.mit.edu Lines: 90