Browse Source

reflection and traps checks for frame pointer alignment

git-svn-id: https://svn.inf.ethz.ch/svn/lecturers/a2/trunk@7110 8c9fc860-2736-0410-a75d-ab315db34111
skoster 8 years ago
parent
commit
c21d00d060
2 changed files with 2 additions and 2 deletions
  1. 1 1
      source/Generic.Reflection.Mod
  2. 1 1
      source/Generic.Unix.Traps.Mod

+ 1 - 1
source/Generic.Reflection.Mod

@@ -910,7 +910,7 @@ CONST
 		count := 0;	(* frame count *)
 		REPEAT
 			m := Modules.ThisModuleByAdr0(pc);
-			IF (ShowAllProcs OR (m # NIL) OR (count = 0)) & (bp # 0) & (bp >= low) & (bp < high) THEN
+			IF (ShowAllProcs OR (m # NIL) OR (count = 0)) & (bp # 0) & (bp >= low) & (bp < high) & (bp MOD SIZEOF(ADDRESS)=0) THEN
 				IF CheckHeapAddress( pc ) THEN
 					WriteProc0(w, m, pc, bp, refs, offset, base); w.Ln;Wait(w); w.Update;
 					IF long & (~overflow OR (count > 0)) THEN	(* show variables *)

+ 1 - 1
source/Generic.Unix.Traps.Mod

@@ -233,7 +233,7 @@ VAR
 			S.GET( sp, pc );   (* get return address on top of stack *)
 		END;
 		entry := Modules.GetExceptionHandler( pc );
-		WHILE (entry = -1) & (fp <= process.stackBottom) & (fp#0) DO
+		WHILE (entry = -1) & (fp <= process.stackBottom) & (fp#0) & (fp MOD SIZEOF(ADDRESS)=0) DO
 			fp := CheckBP(fp);
 			S.GET( fp + AddrSize, pc );
 			pc := pc - 1;   (*  CALL instruction, machine dependent!!! *)