From 6ea22d950fd7246c9159a3601819ae23d03e8dcd Mon Sep 17 00:00:00 2001 From: Nicholas Noll Date: Wed, 20 May 2020 12:22:30 -0700 Subject: fix: truncate infinite recursion caused by self referential macros --- compile_commands.json | 568 -------------------------------------------------- sys/cmd/cc/cc.c | 7 +- sys/cmd/cc/cc.h | 2 +- sys/cmd/cc/lex.c | 4 +- 4 files changed, 7 insertions(+), 574 deletions(-) diff --git a/compile_commands.json b/compile_commands.json index 92a45a0..fe1bfb2 100644 --- a/compile_commands.json +++ b/compile_commands.json @@ -1,512 +1,4 @@ [ - { - "arguments": [ - "gcc", - "-c", - "-g", - "-march=native", - "-fno-strict-aliasing", - "-fwrapv", - "-fms-extensions", - "-isystem", - "include/vendor/libc", - "-I", - "include", - "-o", - "build/libbio/phylo.o", - "sys/libbio/phylo.c" - ], - "directory": "/home/nolln/root", - "file": "sys/libbio/phylo.c" - }, - { - "arguments": [ - "gcc", - "-c", - "-g", - "-march=native", - "-fno-strict-aliasing", - "-fwrapv", - "-fms-extensions", - "-ffreestanding", - "-fno-builtin", - "-nostdlib", - "-isystem", - "include/vendor/libc", - "-I", - "include", - "-o", - "build/libc/stdio.o", - "sys/libc/stdio.c" - ], - "directory": "/home/nolln/root", - "file": "sys/libc/stdio.c" - }, - { - "arguments": [ - "gcc", - "-c", - "-g", - "-march=native", - "-fno-strict-aliasing", - "-fwrapv", - "-fms-extensions", - "-isystem", - "include/vendor/libc", - "-I", - "include", - "-o", - "build/libmath/blas2.o", - "sys/libmath/blas2.c" - ], - "directory": "/home/nolln/root", - "file": "sys/libmath/blas2.c" - }, - { - "arguments": [ - "gcc", - "-c", - "-g", - "-march=native", - "-fno-strict-aliasing", - "-fwrapv", - "-fms-extensions", - "-D_GNU_SOURCE", - "-isystem", - "include/vendor/libc", - "-I", - "include", - "-o", - "build/libmath/test.o", - "sys/libmath/test.c" - ], - "directory": "/home/nolln/root", - "file": "sys/libmath/test.c" - }, - { - "arguments": [ - "gcc", - "-c", - "-g", - "-march=native", - "-fno-strict-aliasing", - "-fwrapv", - "-fms-extensions", - "-D_GNU_SOURCE", - "-isystem", - "include/vendor/libc", - "-I", - "include", - "-o", - "build/libmath/blas.o", - "sys/libmath/blas.c" - ], - "directory": "/home/nolln/root", - "file": "sys/libmath/blas.c" - }, - { - "arguments": [ - "gcc", - "-c", - "-g", - "-march=native", - "-fno-strict-aliasing", - "-fwrapv", - "-fms-extensions", - "-isystem", - "include/vendor/libc", - "-I", - "include", - "-o", - "build/libn/flate.o", - "sys/libn/flate.c" - ], - "directory": "/home/nolln/root", - "file": "sys/libn/flate.c" - }, - { - "arguments": [ - "gcc", - "-c", - "-g", - "-march=native", - "-fno-strict-aliasing", - "-fwrapv", - "-fms-extensions", - "-isystem", - "include/vendor/libc", - "-I", - "include", - "-o", - "build/libn/bufio.o", - "sys/libn/bufio.c" - ], - "directory": "/home/nolln/root", - "file": "sys/libn/bufio.c" - }, - { - "arguments": [ - "gcc", - "-c", - "-g", - "-march=native", - "-fno-strict-aliasing", - "-fwrapv", - "-fms-extensions", - "-isystem", - "include/vendor/libc", - "-I", - "include", - "-o", - "build/cmd/cat/cat.o", - "sys/cmd/cat/cat.c" - ], - "directory": "/home/nolln/root", - "file": "sys/cmd/cat/cat.c" - }, - { - "arguments": [ - "gcc", - "-c", - "-g", - "-march=native", - "-fno-strict-aliasing", - "-fwrapv", - "-fms-extensions", - "-isystem", - "include/vendor/libc", - "-I", - "include", - "-o", - "build/libbio/test.o", - "sys/libbio/test.c" - ], - "directory": "/home/nolln/root", - "file": "sys/libbio/test.c" - }, - { - "arguments": [ - "gcc", - "-c", - "-g", - "-march=native", - "-fno-strict-aliasing", - "-fwrapv", - "-fms-extensions", - "-isystem", - "include/vendor/libc", - "-I", - "include", - "-o", - "build/libn/random.o", - "sys/libn/random.c" - ], - "directory": "/home/nolln/root", - "file": "sys/libn/random.c" - }, - { - "arguments": [ - "gcc", - "-c", - "-g", - "-march=native", - "-fno-strict-aliasing", - "-fwrapv", - "-fms-extensions", - "-isystem", - "include/vendor/libc", - "-I", - "include", - "-o", - "build/libmath/basic.o", - "sys/libmath/basic.c" - ], - "directory": "/home/nolln/root", - "file": "sys/libmath/basic.c" - }, - { - "arguments": [ - "gcc", - "-c", - "-g", - "-march=native", - "-fno-strict-aliasing", - "-fwrapv", - "-fms-extensions", - "-isystem", - "include/vendor/libc", - "-I", - "include", - "-o", - "build/libbio/simulate.o", - "sys/libbio/simulate.c" - ], - "directory": "/home/nolln/root", - "file": "sys/libbio/simulate.c" - }, - { - "arguments": [ - "gcc", - "-c", - "-g", - "-march=native", - "-fno-strict-aliasing", - "-fwrapv", - "-fms-extensions", - "-isystem", - "include/vendor/libc", - "-I", - "include", - "-o", - "build/libbio/io/newick.o", - "sys/libbio/io/newick.c" - ], - "directory": "/home/nolln/root", - "file": "sys/libbio/io/newick.c" - }, - { - "arguments": [ - "gcc", - "-c", - "-g", - "-march=native", - "-fno-strict-aliasing", - "-fwrapv", - "-fms-extensions", - "-isystem", - "include/vendor/libc", - "-I", - "include", - "-o", - "build/libn/sort.o", - "sys/libn/sort.c" - ], - "directory": "/home/nolln/root", - "file": "sys/libn/sort.c" - }, - { - "arguments": [ - "gcc", - "-c", - "-g", - "-march=native", - "-fno-strict-aliasing", - "-fwrapv", - "-fms-extensions", - "-isystem", - "include/vendor/libc", - "-I", - "include", - "-o", - "build/libbio/io/fasta.o", - "sys/libbio/io/fasta.c" - ], - "directory": "/home/nolln/root", - "file": "sys/libbio/io/fasta.c" - }, - { - "arguments": [ - "gcc", - "-c", - "-g", - "-march=native", - "-fno-strict-aliasing", - "-fwrapv", - "-fms-extensions", - "-isystem", - "include/vendor/libc", - "-I", - "include", - "-o", - "build/libmath/blas1.o", - "sys/libmath/blas1.c" - ], - "directory": "/home/nolln/root", - "file": "sys/libmath/blas1.c" - }, - { - "arguments": [ - "gcc", - "-c", - "-g", - "-march=native", - "-fno-strict-aliasing", - "-fwrapv", - "-fms-extensions", - "-isystem", - "include/vendor/libc", - "-I", - "include", - "-o", - "build/libn/io.o", - "sys/libn/io.c" - ], - "directory": "/home/nolln/root", - "file": "sys/libn/io.c" - }, - { - "arguments": [ - "gcc", - "-c", - "-g", - "-march=native", - "-fno-strict-aliasing", - "-fwrapv", - "-fms-extensions", - "-isystem", - "include/vendor/libc", - "-I", - "include", - "-o", - "build/libn/string.o", - "sys/libn/string.c" - ], - "directory": "/home/nolln/root", - "file": "sys/libn/string.c" - }, - { - "arguments": [ - "gcc", - "-c", - "-g", - "-march=native", - "-fno-strict-aliasing", - "-fwrapv", - "-fms-extensions", - "-isystem", - "include/vendor/libc", - "-I", - "include", - "-o", - "build/libn/mmap.o", - "sys/libn/mmap.c" - ], - "directory": "/home/nolln/root", - "file": "sys/libn/mmap.c" - }, - { - "arguments": [ - "gcc", - "-c", - "-g", - "-march=native", - "-fno-strict-aliasing", - "-fwrapv", - "-fms-extensions", - "-isystem", - "include/vendor/libc", - "-I", - "include", - "-o", - "build/libn/gz.o", - "sys/libn/gz.c" - ], - "directory": "/home/nolln/root", - "file": "sys/libn/gz.c" - }, - { - "arguments": [ - "gcc", - "-c", - "-g", - "-march=native", - "-fno-strict-aliasing", - "-fwrapv", - "-fms-extensions", - "-isystem", - "include/vendor/libc", - "-I", - "include", - "-o", - "build/libn/test.o", - "sys/libn/test.c" - ], - "directory": "/home/nolln/root", - "file": "sys/libn/test.c" - }, - { - "arguments": [ - "gcc", - "-c", - "-g", - "-march=native", - "-fno-strict-aliasing", - "-fwrapv", - "-fms-extensions", - "-ffreestanding", - "-fno-builtin", - "-nostdlib", - "-isystem", - "include/vendor/libc", - "-I", - "include", - "-o", - "build/libc/string.o", - "sys/libc/string.c" - ], - "directory": "/home/nolln/root", - "file": "sys/libc/string.c" - }, - { - "arguments": [ - "gcc", - "-c", - "-g", - "-march=native", - "-fno-strict-aliasing", - "-fwrapv", - "-fms-extensions", - "-isystem", - "include/vendor/libc", - "-I", - "include", - "-o", - "build/libn/coro.o", - "sys/libn/coro.c" - ], - "directory": "/home/nolln/root", - "file": "sys/libn/coro.c" - }, - { - "arguments": [ - "gcc", - "-c", - "-g", - "-march=native", - "-fno-strict-aliasing", - "-fwrapv", - "-fms-extensions", - "-isystem", - "include/vendor/libc", - "-I", - "include", - "-o", - "build/libmath/linalg.o", - "sys/libmath/linalg.c" - ], - "directory": "/home/nolln/root", - "file": "sys/libmath/linalg.c" - }, - { - "arguments": [ - "gcc", - "-c", - "-g", - "-march=native", - "-fno-strict-aliasing", - "-fwrapv", - "-fms-extensions", - "-isystem", - "include/vendor/libc", - "-I", - "include", - "-o", - "build/libn/memory.o", - "sys/libn/memory.c" - ], - "directory": "/home/nolln/root", - "file": "sys/libn/memory.c" - }, { "arguments": [ "gcc", @@ -527,66 +19,6 @@ "directory": "/home/nolln/root", "file": "sys/cmd/cc/lex.c" }, - { - "arguments": [ - "gcc", - "-c", - "-g", - "-march=native", - "-fno-strict-aliasing", - "-fwrapv", - "-fms-extensions", - "-isystem", - "include/vendor/libc", - "-I", - "include", - "-o", - "build/libbio/align.o", - "sys/libbio/align.c" - ], - "directory": "/home/nolln/root", - "file": "sys/libbio/align.c" - }, - { - "arguments": [ - "gcc", - "-c", - "-g", - "-march=native", - "-fno-strict-aliasing", - "-fwrapv", - "-fms-extensions", - "-isystem", - "include/vendor/libc", - "-I", - "include", - "-o", - "build/cmd/cc/cc.o", - "sys/cmd/cc/cc.c" - ], - "directory": "/home/nolln/root", - "file": "sys/cmd/cc/cc.c" - }, - { - "arguments": [ - "gcc", - "-c", - "-g", - "-march=native", - "-fno-strict-aliasing", - "-fwrapv", - "-fms-extensions", - "-isystem", - "include/vendor/libc", - "-I", - "include", - "-o", - "build/libn/error.o", - "sys/libn/error.c" - ], - "directory": "/home/nolln/root", - "file": "sys/libn/error.c" - }, { "arguments": [ "gcc", diff --git a/sys/cmd/cc/cc.c b/sys/cmd/cc/cc.c index 6338050..00cd4a5 100644 --- a/sys/cmd/cc/cc.c +++ b/sys/cmd/cc/cc.c @@ -130,13 +130,13 @@ openio(byte *path) } Io* -makeio() +makeio(byte *name) { if ((C.io - C.iostk) >= arrlen(C.iostk)-1) panicf("out of I/O space!"); - C.io->path = ""; - C.io->buf = (io·Buffer) { + C.io->path = name; + C.io->buf = (io·Buffer) { .state = bufio·rdr | bufio·end, .runesize = 0, .h = nil, @@ -163,6 +163,7 @@ freeio(Io *io) io->link = nil; io->path = nil; io->store = (Pos){ 0 }; + io->path = ""; } void diff --git a/sys/cmd/cc/cc.h b/sys/cmd/cc/cc.h index 6ed2caa..685dce2 100644 --- a/sys/cmd/cc/cc.h +++ b/sys/cmd/cc/cc.h @@ -388,7 +388,7 @@ struct Io /* cc.c io functions */ Io* openio(byte *path); -Io* makeio(); +Io* makeio(byte *name); void freeio(Io *io); struct StrTab diff --git a/sys/cmd/cc/lex.c b/sys/cmd/cc/lex.c index 8ce4e79..4cc1259 100644 --- a/sys/cmd/cc/lex.c +++ b/sys/cmd/cc/lex.c @@ -635,8 +635,8 @@ Dispatch: } sym = lookup(&lx->sym, tok.val.s); - if (sym) { - io = makeio(); + if (sym && ((uintptr)sym->name != (uintptr)lx->io->path)) { + io = makeio(sym->name); printf("EXPANDING MACRO %s\n", sym->name); io->buf.end += expandmacro(lx, sym, io->b); *io->buf.end++ = EOF; -- cgit v1.2.1