Thread View: gnu.gdb.bug
1 messages
1 total messages
Started by Johan Widen
Fri, 24 Mar 1989 19:53
function call broken in Sequent Symmetry gdb (fix)
Author: 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
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads