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