From 337f7d754a9f8e98b78ca0e207e625ee92bbbea3 Mon Sep 17 00:00:00 2001 From: norayr Date: Wed, 20 May 2015 14:20:50 +0400 Subject: [PATCH] JmpBufCheck added to Kernel.Mod as in ofront; -- noch --- src/lib/system/darwin/clang/Kernel.Mod | 23 ++++++++++++++++++++++- src/lib/system/darwin/clang/Kernel0.Mod | 23 ++++++++++++++++++++++- src/lib/system/freebsd/clang/Kernel.Mod | 23 ++++++++++++++++++++++- src/lib/system/freebsd/clang/Kernel0.Mod | 23 ++++++++++++++++++++++- src/lib/system/linux/clang/Kernel.Mod | 23 ++++++++++++++++++++++- src/lib/system/linux/clang/Kernel0.Mod | 23 ++++++++++++++++++++++- src/lib/system/linux/gcc/Kernel.Mod | 23 ++++++++++++++++++++++- src/lib/system/linux/gcc/Kernel0.Mod | 23 ++++++++++++++++++++++- 8 files changed, 176 insertions(+), 8 deletions(-) diff --git a/src/lib/system/darwin/clang/Kernel.Mod b/src/lib/system/darwin/clang/Kernel.Mod index e84e5eae..cd516916 100644 --- a/src/lib/system/darwin/clang/Kernel.Mod +++ b/src/lib/system/darwin/clang/Kernel.Mod @@ -156,6 +156,26 @@ MODULE Kernel; SYSTEM.GET(i, littleEndian); (* indirection via i avoids warning on SUN cc -O *) END EndianTest; + PROCEDURE -SizeofUnixJmpBuf(): INTEGER + "sizeof(Unix_JmpBuf)"; + + PROCEDURE -SizeofSigJmpBuf(): INTEGER + "sizeof(sigjmp_buf)"; + + PROCEDURE -Error(msg: ARRAY OF CHAR; len: INTEGER) + "write(1/*stdout*/, msg, len); char ch = 0xa; write(1, &ch, 1)"; + + PROCEDURE JmpBufCheck; (* check for inconsistent usage of sigjmp_buf *) + VAR x, y: LONGINT; + BEGIN + x := SizeofUnixJmpBuf(); + y := SizeofSigJmpBuf(); + IF x < y THEN + Error("Kernel.JmpBufCheck: inconsistent usage of sigjmp_buf", 52); + Exit(1); + END + END JmpBufCheck; + BEGIN EndianTest(); SetHalt(Halt); @@ -163,5 +183,6 @@ BEGIN getcwd(CWD); Args.GetEnv("OBERON", OBERON); Args.GetEnv("OBERON_LIB", LIB); - TimeUnit := 1000; timeStart := 0; timeStart := Time() + TimeUnit := 1000; timeStart := 0; timeStart := Time(); + JmpBufCheck() END Kernel. diff --git a/src/lib/system/darwin/clang/Kernel0.Mod b/src/lib/system/darwin/clang/Kernel0.Mod index c128b73d..6a58650f 100644 --- a/src/lib/system/darwin/clang/Kernel0.Mod +++ b/src/lib/system/darwin/clang/Kernel0.Mod @@ -160,6 +160,26 @@ MODULE Kernel0; SYSTEM.GET(i, littleEndian); (* indirection via i avoids warning on SUN cc -O *) END EndianTest; + PROCEDURE -SizeofUnixJmpBuf(): INTEGER + "sizeof(Unix_JmpBuf)"; + + PROCEDURE -SizeofSigJmpBuf(): INTEGER + "sizeof(sigjmp_buf)"; + + PROCEDURE -Error(msg: ARRAY OF CHAR; len: INTEGER) + "write(1/*stdout*/, msg, len); char ch = 0xa; write(1, &ch, 1)"; + + PROCEDURE JmpBufCheck; (* check for inconsistent usage of sigjmp_buf *) + VAR x, y: LONGINT; + BEGIN + x := SizeofUnixJmpBuf(); + y := SizeofSigJmpBuf(); + IF x < y THEN + Error("Kernel.JmpBufCheck: inconsistent usage of sigjmp_buf", 52); + Exit(1); + END + END JmpBufCheck; + BEGIN EndianTest(); SetHalt(Halt); @@ -175,5 +195,6 @@ BEGIN Strings.Append(version.prefix, OBERON); Strings.Append("/lib/voc/sym:", OBERON); Args.GetEnv("OBERON_LIB", LIB); - TimeUnit := 1000; timeStart := 0; timeStart := Time() + TimeUnit := 1000; timeStart := 0; timeStart := Time(); + JmpBufCheck() END Kernel0. diff --git a/src/lib/system/freebsd/clang/Kernel.Mod b/src/lib/system/freebsd/clang/Kernel.Mod index e84e5eae..cd516916 100644 --- a/src/lib/system/freebsd/clang/Kernel.Mod +++ b/src/lib/system/freebsd/clang/Kernel.Mod @@ -156,6 +156,26 @@ MODULE Kernel; SYSTEM.GET(i, littleEndian); (* indirection via i avoids warning on SUN cc -O *) END EndianTest; + PROCEDURE -SizeofUnixJmpBuf(): INTEGER + "sizeof(Unix_JmpBuf)"; + + PROCEDURE -SizeofSigJmpBuf(): INTEGER + "sizeof(sigjmp_buf)"; + + PROCEDURE -Error(msg: ARRAY OF CHAR; len: INTEGER) + "write(1/*stdout*/, msg, len); char ch = 0xa; write(1, &ch, 1)"; + + PROCEDURE JmpBufCheck; (* check for inconsistent usage of sigjmp_buf *) + VAR x, y: LONGINT; + BEGIN + x := SizeofUnixJmpBuf(); + y := SizeofSigJmpBuf(); + IF x < y THEN + Error("Kernel.JmpBufCheck: inconsistent usage of sigjmp_buf", 52); + Exit(1); + END + END JmpBufCheck; + BEGIN EndianTest(); SetHalt(Halt); @@ -163,5 +183,6 @@ BEGIN getcwd(CWD); Args.GetEnv("OBERON", OBERON); Args.GetEnv("OBERON_LIB", LIB); - TimeUnit := 1000; timeStart := 0; timeStart := Time() + TimeUnit := 1000; timeStart := 0; timeStart := Time(); + JmpBufCheck() END Kernel. diff --git a/src/lib/system/freebsd/clang/Kernel0.Mod b/src/lib/system/freebsd/clang/Kernel0.Mod index c128b73d..6a58650f 100644 --- a/src/lib/system/freebsd/clang/Kernel0.Mod +++ b/src/lib/system/freebsd/clang/Kernel0.Mod @@ -160,6 +160,26 @@ MODULE Kernel0; SYSTEM.GET(i, littleEndian); (* indirection via i avoids warning on SUN cc -O *) END EndianTest; + PROCEDURE -SizeofUnixJmpBuf(): INTEGER + "sizeof(Unix_JmpBuf)"; + + PROCEDURE -SizeofSigJmpBuf(): INTEGER + "sizeof(sigjmp_buf)"; + + PROCEDURE -Error(msg: ARRAY OF CHAR; len: INTEGER) + "write(1/*stdout*/, msg, len); char ch = 0xa; write(1, &ch, 1)"; + + PROCEDURE JmpBufCheck; (* check for inconsistent usage of sigjmp_buf *) + VAR x, y: LONGINT; + BEGIN + x := SizeofUnixJmpBuf(); + y := SizeofSigJmpBuf(); + IF x < y THEN + Error("Kernel.JmpBufCheck: inconsistent usage of sigjmp_buf", 52); + Exit(1); + END + END JmpBufCheck; + BEGIN EndianTest(); SetHalt(Halt); @@ -175,5 +195,6 @@ BEGIN Strings.Append(version.prefix, OBERON); Strings.Append("/lib/voc/sym:", OBERON); Args.GetEnv("OBERON_LIB", LIB); - TimeUnit := 1000; timeStart := 0; timeStart := Time() + TimeUnit := 1000; timeStart := 0; timeStart := Time(); + JmpBufCheck() END Kernel0. diff --git a/src/lib/system/linux/clang/Kernel.Mod b/src/lib/system/linux/clang/Kernel.Mod index e84e5eae..cd516916 100644 --- a/src/lib/system/linux/clang/Kernel.Mod +++ b/src/lib/system/linux/clang/Kernel.Mod @@ -156,6 +156,26 @@ MODULE Kernel; SYSTEM.GET(i, littleEndian); (* indirection via i avoids warning on SUN cc -O *) END EndianTest; + PROCEDURE -SizeofUnixJmpBuf(): INTEGER + "sizeof(Unix_JmpBuf)"; + + PROCEDURE -SizeofSigJmpBuf(): INTEGER + "sizeof(sigjmp_buf)"; + + PROCEDURE -Error(msg: ARRAY OF CHAR; len: INTEGER) + "write(1/*stdout*/, msg, len); char ch = 0xa; write(1, &ch, 1)"; + + PROCEDURE JmpBufCheck; (* check for inconsistent usage of sigjmp_buf *) + VAR x, y: LONGINT; + BEGIN + x := SizeofUnixJmpBuf(); + y := SizeofSigJmpBuf(); + IF x < y THEN + Error("Kernel.JmpBufCheck: inconsistent usage of sigjmp_buf", 52); + Exit(1); + END + END JmpBufCheck; + BEGIN EndianTest(); SetHalt(Halt); @@ -163,5 +183,6 @@ BEGIN getcwd(CWD); Args.GetEnv("OBERON", OBERON); Args.GetEnv("OBERON_LIB", LIB); - TimeUnit := 1000; timeStart := 0; timeStart := Time() + TimeUnit := 1000; timeStart := 0; timeStart := Time(); + JmpBufCheck() END Kernel. diff --git a/src/lib/system/linux/clang/Kernel0.Mod b/src/lib/system/linux/clang/Kernel0.Mod index c128b73d..6a58650f 100644 --- a/src/lib/system/linux/clang/Kernel0.Mod +++ b/src/lib/system/linux/clang/Kernel0.Mod @@ -160,6 +160,26 @@ MODULE Kernel0; SYSTEM.GET(i, littleEndian); (* indirection via i avoids warning on SUN cc -O *) END EndianTest; + PROCEDURE -SizeofUnixJmpBuf(): INTEGER + "sizeof(Unix_JmpBuf)"; + + PROCEDURE -SizeofSigJmpBuf(): INTEGER + "sizeof(sigjmp_buf)"; + + PROCEDURE -Error(msg: ARRAY OF CHAR; len: INTEGER) + "write(1/*stdout*/, msg, len); char ch = 0xa; write(1, &ch, 1)"; + + PROCEDURE JmpBufCheck; (* check for inconsistent usage of sigjmp_buf *) + VAR x, y: LONGINT; + BEGIN + x := SizeofUnixJmpBuf(); + y := SizeofSigJmpBuf(); + IF x < y THEN + Error("Kernel.JmpBufCheck: inconsistent usage of sigjmp_buf", 52); + Exit(1); + END + END JmpBufCheck; + BEGIN EndianTest(); SetHalt(Halt); @@ -175,5 +195,6 @@ BEGIN Strings.Append(version.prefix, OBERON); Strings.Append("/lib/voc/sym:", OBERON); Args.GetEnv("OBERON_LIB", LIB); - TimeUnit := 1000; timeStart := 0; timeStart := Time() + TimeUnit := 1000; timeStart := 0; timeStart := Time(); + JmpBufCheck() END Kernel0. diff --git a/src/lib/system/linux/gcc/Kernel.Mod b/src/lib/system/linux/gcc/Kernel.Mod index e84e5eae..cd516916 100644 --- a/src/lib/system/linux/gcc/Kernel.Mod +++ b/src/lib/system/linux/gcc/Kernel.Mod @@ -156,6 +156,26 @@ MODULE Kernel; SYSTEM.GET(i, littleEndian); (* indirection via i avoids warning on SUN cc -O *) END EndianTest; + PROCEDURE -SizeofUnixJmpBuf(): INTEGER + "sizeof(Unix_JmpBuf)"; + + PROCEDURE -SizeofSigJmpBuf(): INTEGER + "sizeof(sigjmp_buf)"; + + PROCEDURE -Error(msg: ARRAY OF CHAR; len: INTEGER) + "write(1/*stdout*/, msg, len); char ch = 0xa; write(1, &ch, 1)"; + + PROCEDURE JmpBufCheck; (* check for inconsistent usage of sigjmp_buf *) + VAR x, y: LONGINT; + BEGIN + x := SizeofUnixJmpBuf(); + y := SizeofSigJmpBuf(); + IF x < y THEN + Error("Kernel.JmpBufCheck: inconsistent usage of sigjmp_buf", 52); + Exit(1); + END + END JmpBufCheck; + BEGIN EndianTest(); SetHalt(Halt); @@ -163,5 +183,6 @@ BEGIN getcwd(CWD); Args.GetEnv("OBERON", OBERON); Args.GetEnv("OBERON_LIB", LIB); - TimeUnit := 1000; timeStart := 0; timeStart := Time() + TimeUnit := 1000; timeStart := 0; timeStart := Time(); + JmpBufCheck() END Kernel. diff --git a/src/lib/system/linux/gcc/Kernel0.Mod b/src/lib/system/linux/gcc/Kernel0.Mod index c128b73d..6a58650f 100644 --- a/src/lib/system/linux/gcc/Kernel0.Mod +++ b/src/lib/system/linux/gcc/Kernel0.Mod @@ -160,6 +160,26 @@ MODULE Kernel0; SYSTEM.GET(i, littleEndian); (* indirection via i avoids warning on SUN cc -O *) END EndianTest; + PROCEDURE -SizeofUnixJmpBuf(): INTEGER + "sizeof(Unix_JmpBuf)"; + + PROCEDURE -SizeofSigJmpBuf(): INTEGER + "sizeof(sigjmp_buf)"; + + PROCEDURE -Error(msg: ARRAY OF CHAR; len: INTEGER) + "write(1/*stdout*/, msg, len); char ch = 0xa; write(1, &ch, 1)"; + + PROCEDURE JmpBufCheck; (* check for inconsistent usage of sigjmp_buf *) + VAR x, y: LONGINT; + BEGIN + x := SizeofUnixJmpBuf(); + y := SizeofSigJmpBuf(); + IF x < y THEN + Error("Kernel.JmpBufCheck: inconsistent usage of sigjmp_buf", 52); + Exit(1); + END + END JmpBufCheck; + BEGIN EndianTest(); SetHalt(Halt); @@ -175,5 +195,6 @@ BEGIN Strings.Append(version.prefix, OBERON); Strings.Append("/lib/voc/sym:", OBERON); Args.GetEnv("OBERON_LIB", LIB); - TimeUnit := 1000; timeStart := 0; timeStart := Time() + TimeUnit := 1000; timeStart := 0; timeStart := Time(); + JmpBufCheck() END Kernel0.