🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

1 total messages Started by Johan Widen Fri, 24 Mar 1989 19:53
function call broken in Sequent Symmetry gdb (fix)
#732
Author: Johan Widen
Date: Fri, 24 Mar 1989 19:53
122 lines
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