diff options
Diffstat (limited to 'tinyc/tests/libtcc_test.c')
-rwxr-xr-x | tinyc/tests/libtcc_test.c | 84 |
1 files changed, 0 insertions, 84 deletions
diff --git a/tinyc/tests/libtcc_test.c b/tinyc/tests/libtcc_test.c deleted file mode 100755 index a602fb0f4..000000000 --- a/tinyc/tests/libtcc_test.c +++ /dev/null @@ -1,84 +0,0 @@ -/* - * Simple Test program for libtcc - * - * libtcc can be useful to use tcc as a "backend" for a code generator. - */ -#include <stdlib.h> -#include <stdio.h> -#include <string.h> - -#include "libtcc.h" - -/* this function is called by the generated code */ -int add(int a, int b) -{ - return a + b; -} - -char my_program[] = -"int fib(int n)\n" -"{\n" -" if (n <= 2)\n" -" return 1;\n" -" else\n" -" return fib(n-1) + fib(n-2);\n" -"}\n" -"\n" -"int foo(int n)\n" -"{\n" -" printf(\"Hello World!\\n\");\n" -" printf(\"fib(%d) = %d\\n\", n, fib(n));\n" -" printf(\"add(%d, %d) = %d\\n\", n, 2 * n, add(n, 2 * n));\n" -" return 0;\n" -"}\n"; - -int main(int argc, char **argv) -{ - TCCState *s; - int (*func)(int); - void *mem; - int size; - - s = tcc_new(); - if (!s) { - fprintf(stderr, "Could not create tcc state\n"); - exit(1); - } - - /* if tcclib.h and libtcc1.a are not installed, where can we find them */ - if (argc == 2 && !memcmp(argv[1], "lib_path=",9)) - tcc_set_lib_path(s, argv[1]+9); - - /* MUST BE CALLED before any compilation */ - tcc_set_output_type(s, TCC_OUTPUT_MEMORY); - - if (tcc_compile_string(s, my_program) == -1) - return 1; - - /* as a test, we add a symbol that the compiled program can use. - You may also open a dll with tcc_add_dll() and use symbols from that */ - tcc_add_symbol(s, "add", add); - - /* get needed size of the code */ - size = tcc_relocate(s, NULL); - if (size == -1) - return 1; - - /* allocate memory and copy the code into it */ - mem = malloc(size); - tcc_relocate(s, mem); - - /* get entry symbol */ - func = tcc_get_symbol(s, "foo"); - if (!func) - return 1; - - /* delete the state */ - tcc_delete(s); - - /* run the code */ - func(32); - - free(mem); - return 0; -} |