Article View: gnu.gdb.bug
Article #732function call broken in Sequent Symmetry gdb (fix)
From: Johan Widen
Date: Fri, 24 Mar 1989 19:53
Date: Fri, 24 Mar 1989 19:53
122 lines
3148 bytes
3148 bytes
The following concerns gdb 3.1 on the Sequent Symmetry.
Assume that we are debugging a program which contains the following
declaration:
int foo(i)
int i;
{
return i + 1;
}
Giving the following command to gdb, on the Sequent Symmetry
(gdb) print foo(1)
results in a segmentation fault in the program.
The reason is that
store_inferior_registers()
in symmetry-dep.c is broken. The following patch should correct this
problem. (I have also included a patch for m-symmetry.h. This patch is
only cosmetic.)
*** /tmp/,RCSt1a00267 Fri Mar 24 20:37:32 1989
--- m-symmetry.h Fri Mar 24 20:32:55 1989
***************
*** 361,369 ****
#define FIX_CALL_DUMMY(dummyname, pc, fun, nargs, type) \
{ \
! int from, to, delta, loc; \
! loc = (int)(read_register (SP_REGNUM) - CALL_DUMMY_LENGTH); \
! from = loc + 5; \
to = (int)(fun); \
delta = to - from; \
*(int *)((char *)(dummyname) + 1) = delta; \
--- 361,368 ----
#define FIX_CALL_DUMMY(dummyname, pc, fun, nargs, type) \
{ \
! int from, to, delta; \
! from = (int)(pc) + 5; \
to = (int)(fun); \
delta = to - from; \
*(int *)((char *)(dummyname) + 1) = delta; \
*** /tmp/,RCSt1a00272 Fri Mar 24 20:37:43 1989
--- symmetry-dep.c Fri Mar 24 20:31:54 1989
***************
*** 142,175 ****
switch(regno)
{
case 0:
! pt_regset.pr_eax = regno;
break;
case 1:
! pt_regset.pr_ecx = regno;
break;
case 2:
! pt_regset.pr_edx = regno;
break;
case 3:
! pt_regset.pr_ebx = regno;
break;
case 4:
! pt_regset.pr_esp = regno;
break;
case 5:
! pt_regset.pr_ebp = regno;
break;
case 6:
! pt_regset.pr_esi = regno;
break;
case 7:
! pt_regset.pr_edi = regno;
break;
case 8:
! pt_regset.pr_eip = regno;
break;
case 9:
! pt_regset.pr_flags = regno;
break;
}
}
--- 142,175 ----
switch(regno)
{
case 0:
! pt_regset.pr_eax = reg;
break;
case 1:
! pt_regset.pr_ecx = reg;
break;
case 2:
! pt_regset.pr_edx = reg;
break;
case 3:
! pt_regset.pr_ebx = reg;
break;
case 4:
! pt_regset.pr_esp = reg;
break;
case 5:
! pt_regset.pr_ebp = reg;
break;
case 6:
! pt_regset.pr_esi = reg;
break;
case 7:
! pt_regset.pr_edi = reg;
break;
case 8:
! pt_regset.pr_eip = reg;
break;
case 9:
! pt_regset.pr_flags = reg;
break;
}
}
--
Johan Widen
SICS, PO Box 1263, S-164 28 KISTA, SWEDEN Internet: jw@sics.se
Tel: +46 8 752 15 32 Ttx: 812 61 54 SICS S Fax: +46 8 751 72 30
Technical Details
Message-ID:
<JW.89Mar24205353@obelisk.sics.se>Path:
arc1-ca.pugleaf.net!utzoo!utgpu!jarvis.csri.toronto.edu!mailrus!csd4.milw.wisc.edu!lll-winken!uunet!mcvax!kth!osiris!sics.se!jwShow Full Headers
Complete Article Headers
Path: arc1-ca.pugleaf.net!utzoo!utgpu!jarvis.csri.toronto.edu!mailrus!csd4.milw.wisc.edu!lll-winken!uunet!mcvax!kth!osiris!sics.se!jw From: jw@sics.se (Johan Widen) Newsgroups: gnu.gdb.bug Subject: function call broken in Sequent Symmetry gdb (fix) Message-ID: <JW.89Mar24205353@obelisk.sics.se> Date: 24 Mar 89 19:53:53 GMT Sender: news@osiris.sics.se Distribution: gnu Organization: Swedish Institute of Computer Science, Kista Lines: 122