From 7ac08f3b76b2058ded50a05d3ba385f38dafc74c Mon Sep 17 00:00:00 2001 From: "Jan (janneke) Nieuwenhuizen" Date: Sat, 9 Jan 2021 12:35:22 +0100 Subject: [PATCH] scaffold: Add local-static-array.c. GCC gives 12:35:54 janneke@dundal:~/src/mes/wip-m2 [env] $ gcc scaffold/local-static-array.c 12:36:01 janneke@dundal:~/src/mes/wip-m2 [env] $ ./a.out hello local static hello local static 12:36:04 janneke@dundal:~/src/mes/wip-m2 [env] M2-Planet gives 12:36:04 janneke@dundal:~/src/mes/wip-m2 [env] $ kaem --verbose --strict --file scaffold/local-static-array.kaem +> M2-Planet --debug --architecture x86 -f lib/mes/globals.c -f lib/linux/x86-mes-m2/mini.c -f lib/mes/mini-write.c -f lib/string/strlen.c -f lib/string/strcpy.c -f lib/mes/eputs.c -f scaffold/local-static-array.c -o scaffold/local-static-array.M1 scaffold/local-static-array.c:29:static is not a defined symbol Subprocess error 256 ABORTING HARD [1]12:36:07 janneke@dundal:~/src/mes/wip-m2 [env] * scaffold/local-static-array.c: New file. * scaffold/local-static-array.kaem: New file. --- scaffold/local-static-array.c | 42 +++++++++++++++++++++++ scaffold/local-static-array.kaem | 57 ++++++++++++++++++++++++++++++++ 2 files changed, 99 insertions(+) create mode 100644 scaffold/local-static-array.c create mode 100644 scaffold/local-static-array.kaem diff --git a/scaffold/local-static-array.c b/scaffold/local-static-array.c new file mode 100644 index 00000000..a3a78fcf --- /dev/null +++ b/scaffold/local-static-array.c @@ -0,0 +1,42 @@ +/* + * GNU Mes --- Maxwell Equations of Software + * Copyright © 2021 Jan (janneke) Nieuwenhuizen + * + * This file is part of GNU Mes. + * + * GNU Mes is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * GNU Mes is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with GNU Mes. If not, see . + */ + +#include +#include + +/* for GCC --with-system-libc */ +#define eputs(x) fputs (x, stderr) + +int +test (char *string) +{ + static char local_static[32]; + if (string != 0) + strcpy (local_static, string); + eputs (local_static); +} + +int +main () +{ + test ("hello local static\n"); + test (0); + return 0; +} diff --git a/scaffold/local-static-array.kaem b/scaffold/local-static-array.kaem new file mode 100644 index 00000000..5fd8bb43 --- /dev/null +++ b/scaffold/local-static-array.kaem @@ -0,0 +1,57 @@ +#! /bin/sh +# Copyright © 2019,2021 Jan (janneke) Nieuwenhuizen +# +# This file is part of GNU Mes. +# +# GNU Mes is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or (at +# your option) any later version. +# +# GNU Mes is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with GNU Mes. If not, see . + +# Usage: +# kaem --verbose --strict --file scaffold/local-static-array.kaem +# scaffold/local-static-array + +M2-Planet \ + --debug \ + --architecture x86 \ + -f lib/mes/globals.c \ + -f lib/linux/x86-mes-m2/mini.c \ + -f lib/mes/mini-write.c \ + -f lib/string/strlen.c \ + -f lib/string/strcpy.c \ + -f lib/mes/eputs.c \ + -f scaffold/local-static-array.c \ + -o scaffold/local-static-array.M1 + +blood-elf -f scaffold/local-static-array.M1 -o scaffold/local-static-array.blood-elf-M1 + +M1 \ + --LittleEndian \ + --architecture x86 \ + -f lib/m2/x86/x86_defs.M1 \ + -f lib/x86-mes/x86.M1 \ + -f lib/linux/x86-mes-m2/crt1.M1 \ + -f scaffold/local-static-array.M1 \ + -f scaffold/local-static-array.blood-elf-M1 \ + -o scaffold/local-static-array.hex2 + +hex2 \ + --LittleEndian \ + --architecture x86 \ + --BaseAddress 0x1000000 \ + --exec_enable \ + -f lib/m2/x86/ELF-i386-debug.hex2 \ + -f scaffold/local-static-array.hex2 \ + -o scaffold/local-static-array + +echo Now run: scaffold/scaffold/local-static-array +./scaffold/scaffold/local-static-array