jw@sics.se (Johan Widen) (03/25/89)
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