scanner: remove linker dependency
authorBernhard Urban <lewurm@gmail.com>
Sat, 26 Jan 2013 21:19:52 +0000 (22:19 +0100)
committerBernhard Urban <lewurm@gmail.com>
Sat, 26 Jan 2013 21:19:52 +0000 (22:19 +0100)
tests: add callconf stuff (wip)

.gitignore
gesamt_arm64/Makefile
gesamt_arm64/callingconvention.c [new file with mode: 0644]
gesamt_arm64/callingconvention.o [new file with mode: 0644]
gesamt_arm64/scanner.lex
gesamt_arm64/testmain.c [new file with mode: 0644]

index 4194454957f85c7265e7ae7c8afcbdd88e7161b0..d76765b18470bd7cd51993bbca1d058bd1868143 100644 (file)
@@ -67,5 +67,13 @@ gesamt_arm/scanner.c
 gesamt_arm/code.c
 gesamt_arm/wtf.out
 
+#gesamt_arm64
+gesamt_arm64/gesamt_arm64
+gesamt_arm64/parser.c
+gesamt_arm64/parser.h
+gesamt_arm64/scanner.c
+gesamt_arm64/code.c
+gesamt_arm64/wtf.out
+
 #weitere eintragen...
 torero/torero.log
index db261f8b883f69f89d856e3a5cbed9f4191769f7..f63c6f50be4d4bcfc38d1038b6bd0388cbb57ffc 100644 (file)
@@ -1,6 +1,6 @@
 SHELL := bash
-CC := /usr/lib/ccache/gcc
-NAME := gesamt_arm
+CC := gcc
+NAME := gesamt_arm64
 CFLAGS := -ansi -pedantic -D_GNU_SOURCE -g
 OBJS := scanner.o parser.o symtable.o code.o chelper.o tree.o
 
@@ -8,7 +8,7 @@ all: $(NAME)
 
 $(NAME): $(OBJS)
        @echo "  LINK    $@"
-       @$(CC) -o $@ $(OBJS) -lfl
+       @$(CC) -o $@ $(OBJS)
 
 scanner.c: oxout.l
        @echo "  FLEX    $<"
diff --git a/gesamt_arm64/callingconvention.c b/gesamt_arm64/callingconvention.c
new file mode 100644 (file)
index 0000000..ae1280d
--- /dev/null
@@ -0,0 +1,11 @@
+/* gcc -c -fomit-frame-pointer -fno-defer-pop callingconvetion.c */
+
+extern int call(void);
+
+long callchecking()
+{
+       long ret;
+       /* TODO: check calling conv */
+       ret = call();
+       return ret;
+}
diff --git a/gesamt_arm64/callingconvention.o b/gesamt_arm64/callingconvention.o
new file mode 100644 (file)
index 0000000..8818d8a
Binary files /dev/null and b/gesamt_arm64/callingconvention.o differ
index 92f6df7a82a53fcd24edd60ae6b80e54f8073f58..7d60d353caa01c7f6f80db84ed153de1a954e572 100644 (file)
@@ -13,17 +13,13 @@ COMMENT_END \*\/
 
 %x COMMENT
 %option yylineno
+%option noyywrap
 %%
 
 {COMMENT_START} BEGIN(COMMENT);
 
 <COMMENT>{COMMENT_END} BEGIN(INITIAL);
 
-<COMMENT><<EOF>> {
-       fprintf(stderr, "Kommentar nicht geschlossen\n");
-       exit(1);
-}
-
 <COMMENT>(.|\n) /* alles im kommentar wird ignoriert */
 
 struct return(STRUCT);
diff --git a/gesamt_arm64/testmain.c b/gesamt_arm64/testmain.c
new file mode 100644 (file)
index 0000000..6756a64
--- /dev/null
@@ -0,0 +1,30 @@
+#include <stdio.h>
+#include <stdlib.h>
+
+extern long callchecking();
+
+#define RET return
+
+int call(void)
+{
+#include CALL
+}
+
+long labs(long);
+
+#ifdef DEFINE_G
+long g(long x, long y)
+{
+  return h(x*2, y*3)+1;
+}
+#endif
+
+int main(int argc, char *argv[])
+{
+  long r;
+  r=callchecking();
+  if(r==0 || r==1)
+    return !r;
+  return r;
+}
+