summaryrefslogtreecommitdiff
path: root/410user/progs/loader_test2.c
diff options
context:
space:
mode:
Diffstat (limited to '410user/progs/loader_test2.c')
-rw-r--r--410user/progs/loader_test2.c273
1 files changed, 273 insertions, 0 deletions
diff --git a/410user/progs/loader_test2.c b/410user/progs/loader_test2.c
new file mode 100644
index 0000000..8183ae0
--- /dev/null
+++ b/410user/progs/loader_test2.c
@@ -0,0 +1,273 @@
+/** @file 410user/progs/loader_test2.c
+ * @author ?
+ * @brief Tests loading large code sections.
+ * @public yes
+ * @for p3
+ * @covers exec
+ * @status done
+ */
+
+#include <stdlib.h>
+#include <syscall.h>
+#include "410_tests.h"
+#include <report.h>
+
+DEF_TEST_NAME("loader_test2:");
+
+void foo(void);
+void bar(void);
+void no44(void);
+
+extern int zipper;
+
+int main(int argc, char** argv) {
+ report_start(START_CMPLT);
+
+ foo();
+ bar();
+
+ if (zipper != 45) {
+ report_misc("FAILED: code overwriting data?");
+ no44();
+ report_end(END_FAIL);
+ exit(-1);
+ } else {
+ report_end(END_SUCCESS);
+ exit(42);
+ }
+
+}
+
+void foo(void) {
+ /* print something encouraging */
+ report_misc("first called worked");
+}
+
+void no0(void) {
+ /* fatal */
+ report_end(END_FAIL);
+}
+
+void no1(void) {
+ /* fatal */
+ no0();
+}
+
+void no2(void) {
+ /* fatal */
+ no1();
+}
+
+void no3(void) {
+ /* fatal */
+ no2();
+}
+
+void no4(void) {
+ /* fatal */
+ no3();
+}
+
+void no5(void) {
+ /* fatal */
+ no4();
+}
+
+void no6(void) {
+ /* fatal */
+ no5();
+}
+
+void no7(void) {
+ /* fatal */
+ no6();
+}
+
+void no8(void) {
+ /* fatal */
+ no7();
+}
+
+void no9(void) {
+ /* fatal */
+ no8();
+}
+
+void no10(void) {
+ /* fatal */
+ no9();
+}
+
+void no11(void) {
+ /* fatal */
+ no10();
+}
+
+void no12(void) {
+ /* fatal */
+ no11();
+}
+
+void no13(void) {
+ /* fatal */
+ no12();
+}
+
+void no14(void) {
+ /* fatal */
+ no13();
+}
+
+void no15(void) {
+ /* fatal */
+ no14();
+}
+
+void no16(void) {
+ /* fatal */
+ no15();
+}
+
+void no17(void) {
+ /* fatal */
+ no16();
+}
+
+void no18(void) {
+ /* fatal */
+ no17();
+}
+
+void no19(void) {
+ /* fatal */
+ no18();
+}
+
+void no20(void) {
+ /* fatal */
+ no19();
+}
+void no21(void) {
+ /* fatal */
+ no20();
+}
+
+void no22(void) {
+ /* fatal */
+ no21();
+}
+
+void no23(void) {
+ /* fatal */
+ no22();
+}
+
+void no24(void) {
+ /* fatal */
+ no23();
+}
+
+void no25(void) {
+ /* fatal */
+ no24();
+}
+
+void no26(void) {
+ /* fatal */
+ no25();
+}
+
+void no27(void) {
+ /* fatal */
+ no26();
+}
+
+void no28(void) {
+ /* fatal */
+ no27();
+}
+void no29(void) {
+ /* fatal */
+ no28();
+}
+
+void no30(void) {
+ /* fatal */
+ no29();
+}
+
+void no31(void) {
+ /* fatal */
+ no30();
+}
+
+void no32(void) {
+ /* fatal */
+ no31();
+}
+
+void no33(void) {
+ /* fatal */
+ no32();
+}
+
+void no34(void) {
+ /* fatal */
+ no33();
+}
+
+void no35(void) {
+ /* fatal */
+ no34();
+}
+
+void no36(void) {
+ /* fatal */
+ no35();
+}
+
+void no37(void) {
+ /* fatal */
+ no36();
+}
+
+void no38(void) {
+ /* fatal */
+ no37();
+}
+
+void no39(void) {
+ /* fatal */
+ no38();
+}
+
+void no40(void) {
+ /* fatal */
+ no39();
+}
+
+void no41(void) {
+ /* fatal */
+ no40();
+}
+
+void no42(void) {
+ /* fatal */
+ no41();
+}
+
+void no43(void) {
+ /* fatal */
+ no42();
+}
+
+void no44(void) {
+ /* fatal */
+ no43();
+}
+
+void bar(void) {
+ report_misc("second call worked");
+}
+
+int zipper=45;