tcc 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/LICENSE +35 -0
- data/README.md +196 -0
- data/ext/tcc/extconf.rb +25 -0
- data/ext/tcc/tcc-0.9.26.patch +30 -0
- data/ext/tcc/tcc-0.9.26/COPYING +504 -0
- data/ext/tcc/tcc-0.9.26/Changelog +396 -0
- data/ext/tcc/tcc-0.9.26/Makefile +349 -0
- data/ext/tcc/tcc-0.9.26/README +101 -0
- data/ext/tcc/tcc-0.9.26/TODO +93 -0
- data/ext/tcc/tcc-0.9.26/VERSION +1 -0
- data/ext/tcc/tcc-0.9.26/arm-gen.c +2005 -0
- data/ext/tcc/tcc-0.9.26/c67-gen.c +2560 -0
- data/ext/tcc/tcc-0.9.26/coff.h +446 -0
- data/ext/tcc/tcc-0.9.26/config.h +8 -0
- data/ext/tcc/tcc-0.9.26/config.mak +28 -0
- data/ext/tcc/tcc-0.9.26/config.texi +1 -0
- data/ext/tcc/tcc-0.9.26/configure +540 -0
- data/ext/tcc/tcc-0.9.26/conftest.c +71 -0
- data/ext/tcc/tcc-0.9.26/elf.h +1731 -0
- data/ext/tcc/tcc-0.9.26/examples/ex1.c +8 -0
- data/ext/tcc/tcc-0.9.26/examples/ex2.c +98 -0
- data/ext/tcc/tcc-0.9.26/examples/ex3.c +24 -0
- data/ext/tcc/tcc-0.9.26/examples/ex4.c +26 -0
- data/ext/tcc/tcc-0.9.26/examples/ex5.c +8 -0
- data/ext/tcc/tcc-0.9.26/i386-asm.c +1498 -0
- data/ext/tcc/tcc-0.9.26/i386-asm.h +473 -0
- data/ext/tcc/tcc-0.9.26/i386-gen.c +1096 -0
- data/ext/tcc/tcc-0.9.26/i386-tok.h +243 -0
- data/ext/tcc/tcc-0.9.26/il-gen.c +667 -0
- data/ext/tcc/tcc-0.9.26/il-opcodes.h +251 -0
- data/ext/tcc/tcc-0.9.26/include/float.h +57 -0
- data/ext/tcc/tcc-0.9.26/include/stdarg.h +41 -0
- data/ext/tcc/tcc-0.9.26/include/stdbool.h +10 -0
- data/ext/tcc/tcc-0.9.26/include/stddef.h +28 -0
- data/ext/tcc/tcc-0.9.26/include/tcclib.h +78 -0
- data/ext/tcc/tcc-0.9.26/include/varargs.h +12 -0
- data/ext/tcc/tcc-0.9.26/lib/Makefile +102 -0
- data/ext/tcc/tcc-0.9.26/lib/alloca86-bt.S +47 -0
- data/ext/tcc/tcc-0.9.26/lib/alloca86.S +35 -0
- data/ext/tcc/tcc-0.9.26/lib/alloca86_64.S +42 -0
- data/ext/tcc/tcc-0.9.26/lib/bcheck.c +875 -0
- data/ext/tcc/tcc-0.9.26/lib/libtcc1.c +691 -0
- data/ext/tcc/tcc-0.9.26/libtcc.c +1941 -0
- data/ext/tcc/tcc-0.9.26/libtcc.h +103 -0
- data/ext/tcc/tcc-0.9.26/stab.def +234 -0
- data/ext/tcc/tcc-0.9.26/stab.h +17 -0
- data/ext/tcc/tcc-0.9.26/tcc-doc.html +2332 -0
- data/ext/tcc/tcc-0.9.26/tcc-doc.info +1151 -0
- data/ext/tcc/tcc-0.9.26/tcc-doc.texi +1268 -0
- data/ext/tcc/tcc-0.9.26/tcc.1 +415 -0
- data/ext/tcc/tcc-0.9.26/tcc.c +352 -0
- data/ext/tcc/tcc-0.9.26/tcc.h +1379 -0
- data/ext/tcc/tcc-0.9.26/tccasm.c +1118 -0
- data/ext/tcc/tcc-0.9.26/tcccoff.c +948 -0
- data/ext/tcc/tcc-0.9.26/tccelf.c +3129 -0
- data/ext/tcc/tcc-0.9.26/tccgen.c +5841 -0
- data/ext/tcc/tcc-0.9.26/tccpe.c +1887 -0
- data/ext/tcc/tcc-0.9.26/tccpp.c +3128 -0
- data/ext/tcc/tcc-0.9.26/tccrun.c +737 -0
- data/ext/tcc/tcc-0.9.26/tcctok.h +278 -0
- data/ext/tcc/tcc-0.9.26/tests/Makefile +199 -0
- data/ext/tcc/tcc-0.9.26/tests/asmtest.S +609 -0
- data/ext/tcc/tcc-0.9.26/tests/boundtest.c +233 -0
- data/ext/tcc/tcc-0.9.26/tests/gcctestsuite.sh +33 -0
- data/ext/tcc/tcc-0.9.26/tests/libtcc_test.c +76 -0
- data/ext/tcc/tcc-0.9.26/tests/tcctest.c +2713 -0
- data/ext/tcc/tcc-0.9.26/tests/tests2/00_assignment.c +18 -0
- data/ext/tcc/tcc-0.9.26/tests/tests2/00_assignment.expect +3 -0
- data/ext/tcc/tcc-0.9.26/tests/tests2/01_comment.c +14 -0
- data/ext/tcc/tcc-0.9.26/tests/tests2/01_comment.expect +5 -0
- data/ext/tcc/tcc-0.9.26/tests/tests2/02_printf.c +18 -0
- data/ext/tcc/tcc-0.9.26/tests/tests2/02_printf.expect +15 -0
- data/ext/tcc/tcc-0.9.26/tests/tests2/03_struct.c +31 -0
- data/ext/tcc/tcc-0.9.26/tests/tests2/03_struct.expect +6 -0
- data/ext/tcc/tcc-0.9.26/tests/tests2/04_for.c +15 -0
- data/ext/tcc/tcc-0.9.26/tests/tests2/04_for.expect +10 -0
- data/ext/tcc/tcc-0.9.26/tests/tests2/05_array.c +21 -0
- data/ext/tcc/tcc-0.9.26/tests/tests2/05_array.expect +10 -0
- data/ext/tcc/tcc-0.9.26/tests/tests2/06_case.c +29 -0
- data/ext/tcc/tcc-0.9.26/tests/tests2/06_case.expect +8 -0
- data/ext/tcc/tcc-0.9.26/tests/tests2/07_function.c +30 -0
- data/ext/tcc/tcc-0.9.26/tests/tests2/07_function.expect +4 -0
- data/ext/tcc/tcc-0.9.26/tests/tests2/08_while.c +24 -0
- data/ext/tcc/tcc-0.9.26/tests/tests2/08_while.expect +11 -0
- data/ext/tcc/tcc-0.9.26/tests/tests2/09_do_while.c +24 -0
- data/ext/tcc/tcc-0.9.26/tests/tests2/09_do_while.expect +11 -0
- data/ext/tcc/tcc-0.9.26/tests/tests2/10_pointer.c +40 -0
- data/ext/tcc/tcc-0.9.26/tests/tests2/10_pointer.expect +8 -0
- data/ext/tcc/tcc-0.9.26/tests/tests2/11_precedence.c +40 -0
- data/ext/tcc/tcc-0.9.26/tests/tests2/11_precedence.expect +15 -0
- data/ext/tcc/tcc-0.9.26/tests/tests2/12_hashdefine.c +14 -0
- data/ext/tcc/tcc-0.9.26/tests/tests2/12_hashdefine.expect +2 -0
- data/ext/tcc/tcc-0.9.26/tests/tests2/13_integer_literals.c +20 -0
- data/ext/tcc/tcc-0.9.26/tests/tests2/13_integer_literals.expect +5 -0
- data/ext/tcc/tcc-0.9.26/tests/tests2/14_if.c +21 -0
- data/ext/tcc/tcc-0.9.26/tests/tests2/14_if.expect +2 -0
- data/ext/tcc/tcc-0.9.26/tests/tests2/15_recursion.c +21 -0
- data/ext/tcc/tcc-0.9.26/tests/tests2/15_recursion.expect +10 -0
- data/ext/tcc/tcc-0.9.26/tests/tests2/16_nesting.c +21 -0
- data/ext/tcc/tcc-0.9.26/tests/tests2/16_nesting.expect +18 -0
- data/ext/tcc/tcc-0.9.26/tests/tests2/17_enum.c +29 -0
- data/ext/tcc/tcc-0.9.26/tests/tests2/17_enum.expect +3 -0
- data/ext/tcc/tcc-0.9.26/tests/tests2/18_include.c +12 -0
- data/ext/tcc/tcc-0.9.26/tests/tests2/18_include.expect +3 -0
- data/ext/tcc/tcc-0.9.26/tests/tests2/18_include.h +1 -0
- data/ext/tcc/tcc-0.9.26/tests/tests2/19_pointer_arithmetic.c +28 -0
- data/ext/tcc/tcc-0.9.26/tests/tests2/19_pointer_arithmetic.expect +3 -0
- data/ext/tcc/tcc-0.9.26/tests/tests2/20_pointer_comparison.c +24 -0
- data/ext/tcc/tcc-0.9.26/tests/tests2/20_pointer_comparison.expect +6 -0
- data/ext/tcc/tcc-0.9.26/tests/tests2/21_char_array.c +33 -0
- data/ext/tcc/tcc-0.9.26/tests/tests2/21_char_array.expect +7 -0
- data/ext/tcc/tcc-0.9.26/tests/tests2/22_floating_point.c +50 -0
- data/ext/tcc/tcc-0.9.26/tests/tests2/22_floating_point.expect +16 -0
- data/ext/tcc/tcc-0.9.26/tests/tests2/23_type_coercion.c +54 -0
- data/ext/tcc/tcc-0.9.26/tests/tests2/23_type_coercion.expect +12 -0
- data/ext/tcc/tcc-0.9.26/tests/tests2/24_math_library.c +28 -0
- data/ext/tcc/tcc-0.9.26/tests/tests2/24_math_library.expect +18 -0
- data/ext/tcc/tcc-0.9.26/tests/tests2/25_quicksort.c +83 -0
- data/ext/tcc/tcc-0.9.26/tests/tests2/25_quicksort.expect +2 -0
- data/ext/tcc/tcc-0.9.26/tests/tests2/26_character_constants.c +17 -0
- data/ext/tcc/tcc-0.9.26/tests/tests2/26_character_constants.expect +8 -0
- data/ext/tcc/tcc-0.9.26/tests/tests2/27_sizeof.c +16 -0
- data/ext/tcc/tcc-0.9.26/tests/tests2/27_sizeof.expect +3 -0
- data/ext/tcc/tcc-0.9.26/tests/tests2/28_strings.c +46 -0
- data/ext/tcc/tcc-0.9.26/tests/tests2/28_strings.expect +19 -0
- data/ext/tcc/tcc-0.9.26/tests/tests2/29_array_address.c +13 -0
- data/ext/tcc/tcc-0.9.26/tests/tests2/29_array_address.expect +1 -0
- data/ext/tcc/tcc-0.9.26/tests/tests2/30_hanoi.c +122 -0
- data/ext/tcc/tcc-0.9.26/tests/tests2/30_hanoi.expect +71 -0
- data/ext/tcc/tcc-0.9.26/tests/tests2/31_args.c +14 -0
- data/ext/tcc/tcc-0.9.26/tests/tests2/31_args.expect +7 -0
- data/ext/tcc/tcc-0.9.26/tests/tests2/32_led.c +266 -0
- data/ext/tcc/tcc-0.9.26/tests/tests2/32_led.expect +4 -0
- data/ext/tcc/tcc-0.9.26/tests/tests2/33_ternary_op.c +15 -0
- data/ext/tcc/tcc-0.9.26/tests/tests2/33_ternary_op.expect +10 -0
- data/ext/tcc/tcc-0.9.26/tests/tests2/34_array_assignment.c +23 -0
- data/ext/tcc/tcc-0.9.26/tests/tests2/34_array_assignment.expect +2 -0
- data/ext/tcc/tcc-0.9.26/tests/tests2/35_sizeof.c +14 -0
- data/ext/tcc/tcc-0.9.26/tests/tests2/35_sizeof.expect +2 -0
- data/ext/tcc/tcc-0.9.26/tests/tests2/36_array_initialisers.c +21 -0
- data/ext/tcc/tcc-0.9.26/tests/tests2/36_array_initialisers.expect +20 -0
- data/ext/tcc/tcc-0.9.26/tests/tests2/37_sprintf.c +17 -0
- data/ext/tcc/tcc-0.9.26/tests/tests2/37_sprintf.expect +20 -0
- data/ext/tcc/tcc-0.9.26/tests/tests2/38_multiple_array_index.c +32 -0
- data/ext/tcc/tcc-0.9.26/tests/tests2/38_multiple_array_index.expect +4 -0
- data/ext/tcc/tcc-0.9.26/tests/tests2/39_typedef.c +31 -0
- data/ext/tcc/tcc-0.9.26/tests/tests2/39_typedef.expect +3 -0
- data/ext/tcc/tcc-0.9.26/tests/tests2/40_stdio.c +52 -0
- data/ext/tcc/tcc-0.9.26/tests/tests2/40_stdio.expect +27 -0
- data/ext/tcc/tcc-0.9.26/tests/tests2/41_hashif.c +85 -0
- data/ext/tcc/tcc-0.9.26/tests/tests2/41_hashif.expect +6 -0
- data/ext/tcc/tcc-0.9.26/tests/tests2/42_function_pointer.c +18 -0
- data/ext/tcc/tcc-0.9.26/tests/tests2/42_function_pointer.expect +2 -0
- data/ext/tcc/tcc-0.9.26/tests/tests2/43_void_param.c +15 -0
- data/ext/tcc/tcc-0.9.26/tests/tests2/43_void_param.expect +1 -0
- data/ext/tcc/tcc-0.9.26/tests/tests2/44_scoped_declarations.c +17 -0
- data/ext/tcc/tcc-0.9.26/tests/tests2/44_scoped_declarations.expect +1 -0
- data/ext/tcc/tcc-0.9.26/tests/tests2/45_empty_for.c +18 -0
- data/ext/tcc/tcc-0.9.26/tests/tests2/45_empty_for.expect +10 -0
- data/ext/tcc/tcc-0.9.26/tests/tests2/46_grep.c +564 -0
- data/ext/tcc/tcc-0.9.26/tests/tests2/47_switch_return.c +24 -0
- data/ext/tcc/tcc-0.9.26/tests/tests2/47_switch_return.expect +4 -0
- data/ext/tcc/tcc-0.9.26/tests/tests2/48_nested_break.c +26 -0
- data/ext/tcc/tcc-0.9.26/tests/tests2/48_nested_break.expect +1 -0
- data/ext/tcc/tcc-0.9.26/tests/tests2/49_bracket_evaluation.c +23 -0
- data/ext/tcc/tcc-0.9.26/tests/tests2/49_bracket_evaluation.expect +1 -0
- data/ext/tcc/tcc-0.9.26/tests/tests2/50_logical_second_arg.c +29 -0
- data/ext/tcc/tcc-0.9.26/tests/tests2/50_logical_second_arg.expect +20 -0
- data/ext/tcc/tcc-0.9.26/tests/tests2/51_static.c +30 -0
- data/ext/tcc/tcc-0.9.26/tests/tests2/51_static.expect +8 -0
- data/ext/tcc/tcc-0.9.26/tests/tests2/52_unnamed_enum.c +27 -0
- data/ext/tcc/tcc-0.9.26/tests/tests2/52_unnamed_enum.expect +9 -0
- data/ext/tcc/tcc-0.9.26/tests/tests2/54_goto.c +56 -0
- data/ext/tcc/tcc-0.9.26/tests/tests2/54_goto.expect +8 -0
- data/ext/tcc/tcc-0.9.26/tests/tests2/55_lshift_type.c +52 -0
- data/ext/tcc/tcc-0.9.26/tests/tests2/55_lshift_type.expect +1 -0
- data/ext/tcc/tcc-0.9.26/tests/tests2/LICENSE +37 -0
- data/ext/tcc/tcc-0.9.26/tests/tests2/Makefile +98 -0
- data/ext/tcc/tcc-0.9.26/texi2pod.pl +427 -0
- data/ext/tcc/tcc-0.9.26/win32/build-tcc.bat +60 -0
- data/ext/tcc/tcc-0.9.26/win32/examples/dll.c +12 -0
- data/ext/tcc/tcc-0.9.26/win32/examples/fib.c +23 -0
- data/ext/tcc/tcc-0.9.26/win32/examples/hello_dll.c +19 -0
- data/ext/tcc/tcc-0.9.26/win32/examples/hello_win.c +163 -0
- data/ext/tcc/tcc-0.9.26/win32/include/_mingw.h +139 -0
- data/ext/tcc/tcc-0.9.26/win32/include/assert.h +54 -0
- data/ext/tcc/tcc-0.9.26/win32/include/conio.h +409 -0
- data/ext/tcc/tcc-0.9.26/win32/include/ctype.h +281 -0
- data/ext/tcc/tcc-0.9.26/win32/include/dir.h +31 -0
- data/ext/tcc/tcc-0.9.26/win32/include/direct.h +68 -0
- data/ext/tcc/tcc-0.9.26/win32/include/dirent.h +135 -0
- data/ext/tcc/tcc-0.9.26/win32/include/dos.h +55 -0
- data/ext/tcc/tcc-0.9.26/win32/include/errno.h +75 -0
- data/ext/tcc/tcc-0.9.26/win32/include/excpt.h +123 -0
- data/ext/tcc/tcc-0.9.26/win32/include/fcntl.h +52 -0
- data/ext/tcc/tcc-0.9.26/win32/include/fenv.h +108 -0
- data/ext/tcc/tcc-0.9.26/win32/include/inttypes.h +297 -0
- data/ext/tcc/tcc-0.9.26/win32/include/io.h +418 -0
- data/ext/tcc/tcc-0.9.26/win32/include/limits.h +111 -0
- data/ext/tcc/tcc-0.9.26/win32/include/locale.h +91 -0
- data/ext/tcc/tcc-0.9.26/win32/include/malloc.h +175 -0
- data/ext/tcc/tcc-0.9.26/win32/include/math.h +777 -0
- data/ext/tcc/tcc-0.9.26/win32/include/mem.h +13 -0
- data/ext/tcc/tcc-0.9.26/win32/include/memory.h +40 -0
- data/ext/tcc/tcc-0.9.26/win32/include/process.h +176 -0
- data/ext/tcc/tcc-0.9.26/win32/include/sec_api/conio_s.h +42 -0
- data/ext/tcc/tcc-0.9.26/win32/include/sec_api/crtdbg_s.h +19 -0
- data/ext/tcc/tcc-0.9.26/win32/include/sec_api/io_s.h +33 -0
- data/ext/tcc/tcc-0.9.26/win32/include/sec_api/mbstring_s.h +52 -0
- data/ext/tcc/tcc-0.9.26/win32/include/sec_api/search_s.h +25 -0
- data/ext/tcc/tcc-0.9.26/win32/include/sec_api/stdio_s.h +145 -0
- data/ext/tcc/tcc-0.9.26/win32/include/sec_api/stdlib_s.h +67 -0
- data/ext/tcc/tcc-0.9.26/win32/include/sec_api/stralign_s.h +30 -0
- data/ext/tcc/tcc-0.9.26/win32/include/sec_api/string_s.h +41 -0
- data/ext/tcc/tcc-0.9.26/win32/include/sec_api/sys/timeb_s.h +34 -0
- data/ext/tcc/tcc-0.9.26/win32/include/sec_api/tchar_s.h +266 -0
- data/ext/tcc/tcc-0.9.26/win32/include/sec_api/time_s.h +61 -0
- data/ext/tcc/tcc-0.9.26/win32/include/sec_api/wchar_s.h +128 -0
- data/ext/tcc/tcc-0.9.26/win32/include/setjmp.h +160 -0
- data/ext/tcc/tcc-0.9.26/win32/include/share.h +28 -0
- data/ext/tcc/tcc-0.9.26/win32/include/signal.h +63 -0
- data/ext/tcc/tcc-0.9.26/win32/include/stdint.h +209 -0
- data/ext/tcc/tcc-0.9.26/win32/include/stdio.h +429 -0
- data/ext/tcc/tcc-0.9.26/win32/include/stdlib.h +580 -0
- data/ext/tcc/tcc-0.9.26/win32/include/string.h +164 -0
- data/ext/tcc/tcc-0.9.26/win32/include/sys/fcntl.h +13 -0
- data/ext/tcc/tcc-0.9.26/win32/include/sys/file.h +14 -0
- data/ext/tcc/tcc-0.9.26/win32/include/sys/locking.h +30 -0
- data/ext/tcc/tcc-0.9.26/win32/include/sys/stat.h +290 -0
- data/ext/tcc/tcc-0.9.26/win32/include/sys/time.h +69 -0
- data/ext/tcc/tcc-0.9.26/win32/include/sys/timeb.h +133 -0
- data/ext/tcc/tcc-0.9.26/win32/include/sys/types.h +118 -0
- data/ext/tcc/tcc-0.9.26/win32/include/sys/unistd.h +14 -0
- data/ext/tcc/tcc-0.9.26/win32/include/sys/utime.h +146 -0
- data/ext/tcc/tcc-0.9.26/win32/include/tchar.h +1102 -0
- data/ext/tcc/tcc-0.9.26/win32/include/time.h +287 -0
- data/ext/tcc/tcc-0.9.26/win32/include/vadefs.h +11 -0
- data/ext/tcc/tcc-0.9.26/win32/include/values.h +4 -0
- data/ext/tcc/tcc-0.9.26/win32/include/wchar.h +871 -0
- data/ext/tcc/tcc-0.9.26/win32/include/wctype.h +172 -0
- data/ext/tcc/tcc-0.9.26/win32/include/winapi/basetsd.h +149 -0
- data/ext/tcc/tcc-0.9.26/win32/include/winapi/basetyps.h +85 -0
- data/ext/tcc/tcc-0.9.26/win32/include/winapi/guiddef.h +151 -0
- data/ext/tcc/tcc-0.9.26/win32/include/winapi/intrin.h +11 -0
- data/ext/tcc/tcc-0.9.26/win32/include/winapi/poppack.h +8 -0
- data/ext/tcc/tcc-0.9.26/win32/include/winapi/pshpack1.h +8 -0
- data/ext/tcc/tcc-0.9.26/win32/include/winapi/pshpack2.h +8 -0
- data/ext/tcc/tcc-0.9.26/win32/include/winapi/pshpack4.h +8 -0
- data/ext/tcc/tcc-0.9.26/win32/include/winapi/pshpack8.h +8 -0
- data/ext/tcc/tcc-0.9.26/win32/include/winapi/reason.h +80 -0
- data/ext/tcc/tcc-0.9.26/win32/include/winapi/specstrings.h +7 -0
- data/ext/tcc/tcc-0.9.26/win32/include/winapi/stralign.h +154 -0
- data/ext/tcc/tcc-0.9.26/win32/include/winapi/tvout.h +79 -0
- data/ext/tcc/tcc-0.9.26/win32/include/winapi/winbase.h +2951 -0
- data/ext/tcc/tcc-0.9.26/win32/include/winapi/wincon.h +301 -0
- data/ext/tcc/tcc-0.9.26/win32/include/winapi/windef.h +293 -0
- data/ext/tcc/tcc-0.9.26/win32/include/winapi/windows.h +123 -0
- data/ext/tcc/tcc-0.9.26/win32/include/winapi/winerror.h +3166 -0
- data/ext/tcc/tcc-0.9.26/win32/include/winapi/wingdi.h +4080 -0
- data/ext/tcc/tcc-0.9.26/win32/include/winapi/winnetwk.h +476 -0
- data/ext/tcc/tcc-0.9.26/win32/include/winapi/winnls.h +765 -0
- data/ext/tcc/tcc-0.9.26/win32/include/winapi/winnt.h +5770 -0
- data/ext/tcc/tcc-0.9.26/win32/include/winapi/winreg.h +272 -0
- data/ext/tcc/tcc-0.9.26/win32/include/winapi/winuser.h +5651 -0
- data/ext/tcc/tcc-0.9.26/win32/include/winapi/winver.h +160 -0
- data/ext/tcc/tcc-0.9.26/win32/lib/chkstk.S +191 -0
- data/ext/tcc/tcc-0.9.26/win32/lib/crt1.c +34 -0
- data/ext/tcc/tcc-0.9.26/win32/lib/dllcrt1.c +13 -0
- data/ext/tcc/tcc-0.9.26/win32/lib/dllmain.c +9 -0
- data/ext/tcc/tcc-0.9.26/win32/lib/gdi32.def +337 -0
- data/ext/tcc/tcc-0.9.26/win32/lib/kernel32.def +765 -0
- data/ext/tcc/tcc-0.9.26/win32/lib/msvcrt.def +1399 -0
- data/ext/tcc/tcc-0.9.26/win32/lib/user32.def +654 -0
- data/ext/tcc/tcc-0.9.26/win32/lib/wincrt1.c +64 -0
- data/ext/tcc/tcc-0.9.26/win32/tcc-win32.txt +156 -0
- data/ext/tcc/tcc-0.9.26/win32/tools/tiny_impdef.c +243 -0
- data/ext/tcc/tcc-0.9.26/win32/tools/tiny_libmaker.c +258 -0
- data/ext/tcc/tcc-0.9.26/x86_64-asm.h +448 -0
- data/ext/tcc/tcc-0.9.26/x86_64-gen.c +1701 -0
- data/lib/tcc.rb +291 -0
- data/tcc.gemspec +15 -0
- metadata +343 -0
@@ -0,0 +1,278 @@
|
|
1
|
+
/* keywords */
|
2
|
+
DEF(TOK_INT, "int")
|
3
|
+
DEF(TOK_VOID, "void")
|
4
|
+
DEF(TOK_CHAR, "char")
|
5
|
+
DEF(TOK_IF, "if")
|
6
|
+
DEF(TOK_ELSE, "else")
|
7
|
+
DEF(TOK_WHILE, "while")
|
8
|
+
DEF(TOK_BREAK, "break")
|
9
|
+
DEF(TOK_RETURN, "return")
|
10
|
+
DEF(TOK_FOR, "for")
|
11
|
+
DEF(TOK_EXTERN, "extern")
|
12
|
+
DEF(TOK_STATIC, "static")
|
13
|
+
DEF(TOK_UNSIGNED, "unsigned")
|
14
|
+
DEF(TOK_GOTO, "goto")
|
15
|
+
DEF(TOK_DO, "do")
|
16
|
+
DEF(TOK_CONTINUE, "continue")
|
17
|
+
DEF(TOK_SWITCH, "switch")
|
18
|
+
DEF(TOK_CASE, "case")
|
19
|
+
|
20
|
+
DEF(TOK_CONST1, "const")
|
21
|
+
DEF(TOK_CONST2, "__const") /* gcc keyword */
|
22
|
+
DEF(TOK_CONST3, "__const__") /* gcc keyword */
|
23
|
+
DEF(TOK_VOLATILE1, "volatile")
|
24
|
+
DEF(TOK_VOLATILE2, "__volatile") /* gcc keyword */
|
25
|
+
DEF(TOK_VOLATILE3, "__volatile__") /* gcc keyword */
|
26
|
+
DEF(TOK_LONG, "long")
|
27
|
+
DEF(TOK_REGISTER, "register")
|
28
|
+
DEF(TOK_SIGNED1, "signed")
|
29
|
+
DEF(TOK_SIGNED2, "__signed") /* gcc keyword */
|
30
|
+
DEF(TOK_SIGNED3, "__signed__") /* gcc keyword */
|
31
|
+
DEF(TOK_AUTO, "auto")
|
32
|
+
DEF(TOK_INLINE1, "inline")
|
33
|
+
DEF(TOK_INLINE2, "__inline") /* gcc keyword */
|
34
|
+
DEF(TOK_INLINE3, "__inline__") /* gcc keyword */
|
35
|
+
DEF(TOK_RESTRICT1, "restrict")
|
36
|
+
DEF(TOK_RESTRICT2, "__restrict")
|
37
|
+
DEF(TOK_RESTRICT3, "__restrict__")
|
38
|
+
DEF(TOK_EXTENSION, "__extension__") /* gcc keyword */
|
39
|
+
|
40
|
+
DEF(TOK_FLOAT, "float")
|
41
|
+
DEF(TOK_DOUBLE, "double")
|
42
|
+
DEF(TOK_BOOL, "_Bool")
|
43
|
+
DEF(TOK_SHORT, "short")
|
44
|
+
DEF(TOK_STRUCT, "struct")
|
45
|
+
DEF(TOK_UNION, "union")
|
46
|
+
DEF(TOK_TYPEDEF, "typedef")
|
47
|
+
DEF(TOK_DEFAULT, "default")
|
48
|
+
DEF(TOK_ENUM, "enum")
|
49
|
+
DEF(TOK_SIZEOF, "sizeof")
|
50
|
+
DEF(TOK_ATTRIBUTE1, "__attribute")
|
51
|
+
DEF(TOK_ATTRIBUTE2, "__attribute__")
|
52
|
+
DEF(TOK_ALIGNOF1, "__alignof")
|
53
|
+
DEF(TOK_ALIGNOF2, "__alignof__")
|
54
|
+
DEF(TOK_TYPEOF1, "typeof")
|
55
|
+
DEF(TOK_TYPEOF2, "__typeof")
|
56
|
+
DEF(TOK_TYPEOF3, "__typeof__")
|
57
|
+
DEF(TOK_LABEL, "__label__")
|
58
|
+
DEF(TOK_ASM1, "asm")
|
59
|
+
DEF(TOK_ASM2, "__asm")
|
60
|
+
DEF(TOK_ASM3, "__asm__")
|
61
|
+
|
62
|
+
/*********************************************************************/
|
63
|
+
/* the following are not keywords. They are included to ease parsing */
|
64
|
+
/* preprocessor only */
|
65
|
+
DEF(TOK_DEFINE, "define")
|
66
|
+
DEF(TOK_INCLUDE, "include")
|
67
|
+
DEF(TOK_INCLUDE_NEXT, "include_next")
|
68
|
+
DEF(TOK_IFDEF, "ifdef")
|
69
|
+
DEF(TOK_IFNDEF, "ifndef")
|
70
|
+
DEF(TOK_ELIF, "elif")
|
71
|
+
DEF(TOK_ENDIF, "endif")
|
72
|
+
DEF(TOK_DEFINED, "defined")
|
73
|
+
DEF(TOK_UNDEF, "undef")
|
74
|
+
DEF(TOK_ERROR, "error")
|
75
|
+
DEF(TOK_WARNING, "warning")
|
76
|
+
DEF(TOK_LINE, "line")
|
77
|
+
DEF(TOK_PRAGMA, "pragma")
|
78
|
+
DEF(TOK___LINE__, "__LINE__")
|
79
|
+
DEF(TOK___FILE__, "__FILE__")
|
80
|
+
DEF(TOK___DATE__, "__DATE__")
|
81
|
+
DEF(TOK___TIME__, "__TIME__")
|
82
|
+
DEF(TOK___FUNCTION__, "__FUNCTION__")
|
83
|
+
DEF(TOK___VA_ARGS__, "__VA_ARGS__")
|
84
|
+
|
85
|
+
/* special identifiers */
|
86
|
+
DEF(TOK___FUNC__, "__func__")
|
87
|
+
|
88
|
+
/* special floating point values */
|
89
|
+
DEF(TOK___NAN__, "__nan__")
|
90
|
+
DEF(TOK___SNAN__, "__snan__")
|
91
|
+
DEF(TOK___INF__, "__inf__")
|
92
|
+
|
93
|
+
/* attribute identifiers */
|
94
|
+
/* XXX: handle all tokens generically since speed is not critical */
|
95
|
+
DEF(TOK_SECTION1, "section")
|
96
|
+
DEF(TOK_SECTION2, "__section__")
|
97
|
+
DEF(TOK_ALIGNED1, "aligned")
|
98
|
+
DEF(TOK_ALIGNED2, "__aligned__")
|
99
|
+
DEF(TOK_PACKED1, "packed")
|
100
|
+
DEF(TOK_PACKED2, "__packed__")
|
101
|
+
DEF(TOK_WEAK1, "weak")
|
102
|
+
DEF(TOK_WEAK2, "__weak__")
|
103
|
+
DEF(TOK_ALIAS1, "alias")
|
104
|
+
DEF(TOK_ALIAS2, "__alias__")
|
105
|
+
DEF(TOK_UNUSED1, "unused")
|
106
|
+
DEF(TOK_UNUSED2, "__unused__")
|
107
|
+
DEF(TOK_CDECL1, "cdecl")
|
108
|
+
DEF(TOK_CDECL2, "__cdecl")
|
109
|
+
DEF(TOK_CDECL3, "__cdecl__")
|
110
|
+
DEF(TOK_STDCALL1, "stdcall")
|
111
|
+
DEF(TOK_STDCALL2, "__stdcall")
|
112
|
+
DEF(TOK_STDCALL3, "__stdcall__")
|
113
|
+
DEF(TOK_FASTCALL1, "fastcall")
|
114
|
+
DEF(TOK_FASTCALL2, "__fastcall")
|
115
|
+
DEF(TOK_FASTCALL3, "__fastcall__")
|
116
|
+
DEF(TOK_MODE, "__mode__")
|
117
|
+
DEF(TOK_MODE_DI, "__DI__")
|
118
|
+
DEF(TOK_MODE_HI, "__HI__")
|
119
|
+
DEF(TOK_MODE_SI, "__SI__")
|
120
|
+
DEF(TOK_DLLEXPORT, "dllexport")
|
121
|
+
DEF(TOK_DLLIMPORT, "dllimport")
|
122
|
+
DEF(TOK_NORETURN1, "noreturn")
|
123
|
+
DEF(TOK_NORETURN2, "__noreturn__")
|
124
|
+
DEF(TOK_builtin_types_compatible_p, "__builtin_types_compatible_p")
|
125
|
+
DEF(TOK_builtin_constant_p, "__builtin_constant_p")
|
126
|
+
DEF(TOK_builtin_frame_address, "__builtin_frame_address")
|
127
|
+
#ifdef TCC_TARGET_X86_64
|
128
|
+
DEF(TOK_builtin_va_arg_types, "__builtin_va_arg_types")
|
129
|
+
#endif
|
130
|
+
DEF(TOK_REGPARM1, "regparm")
|
131
|
+
DEF(TOK_REGPARM2, "__regparm__")
|
132
|
+
|
133
|
+
/* pragma */
|
134
|
+
DEF(TOK_pack, "pack")
|
135
|
+
#if !defined(TCC_TARGET_I386) && !defined(TCC_TARGET_X86_64)
|
136
|
+
/* already defined for assembler */
|
137
|
+
DEF(TOK_ASM_push, "push")
|
138
|
+
DEF(TOK_ASM_pop, "pop")
|
139
|
+
#endif
|
140
|
+
|
141
|
+
/* builtin functions or variables */
|
142
|
+
#ifdef TCC_ARM_EABI
|
143
|
+
DEF(TOK_memcpy, "__aeabi_memcpy")
|
144
|
+
DEF(TOK_memcpy4, "__aeabi_memcpy4")
|
145
|
+
DEF(TOK_memcpy8, "__aeabi_memcpy8")
|
146
|
+
DEF(TOK_memset, "__aeabi_memset")
|
147
|
+
DEF(TOK___aeabi_ldivmod, "__aeabi_ldivmod")
|
148
|
+
DEF(TOK___aeabi_uldivmod, "__aeabi_uldivmod")
|
149
|
+
#else
|
150
|
+
DEF(TOK_memcpy, "memcpy")
|
151
|
+
DEF(TOK_memset, "memset")
|
152
|
+
DEF(TOK___divdi3, "__divdi3")
|
153
|
+
DEF(TOK___moddi3, "__moddi3")
|
154
|
+
DEF(TOK___udivdi3, "__udivdi3")
|
155
|
+
DEF(TOK___umoddi3, "__umoddi3")
|
156
|
+
#endif
|
157
|
+
#if defined(TCC_TARGET_ARM)
|
158
|
+
#ifdef TCC_ARM_EABI
|
159
|
+
DEF(TOK___aeabi_idivmod, "__aeabi_idivmod")
|
160
|
+
DEF(TOK___aeabi_uidivmod, "__aeabi_uidivmod")
|
161
|
+
DEF(TOK___divsi3, "__aeabi_idiv")
|
162
|
+
DEF(TOK___udivsi3, "__aeabi_uidiv")
|
163
|
+
DEF(TOK___floatdisf, "__aeabi_l2f")
|
164
|
+
DEF(TOK___floatdidf, "__aeabi_l2d")
|
165
|
+
DEF(TOK___fixsfdi, "__aeabi_f2lz")
|
166
|
+
DEF(TOK___fixdfdi, "__aeabi_d2lz")
|
167
|
+
#else
|
168
|
+
DEF(TOK___modsi3, "__modsi3")
|
169
|
+
DEF(TOK___umodsi3, "__umodsi3")
|
170
|
+
DEF(TOK___divsi3, "__divsi3")
|
171
|
+
DEF(TOK___udivsi3, "__udivsi3")
|
172
|
+
DEF(TOK___floatdisf, "__floatdisf")
|
173
|
+
DEF(TOK___floatdidf, "__floatdidf")
|
174
|
+
#ifndef TCC_ARM_VFP
|
175
|
+
DEF(TOK___floatdixf, "__floatdixf")
|
176
|
+
DEF(TOK___fixunssfsi, "__fixunssfsi")
|
177
|
+
DEF(TOK___fixunsdfsi, "__fixunsdfsi")
|
178
|
+
DEF(TOK___fixunsxfsi, "__fixunsxfsi")
|
179
|
+
DEF(TOK___fixxfdi, "__fixxfdi")
|
180
|
+
#endif
|
181
|
+
DEF(TOK___fixsfdi, "__fixsfdi")
|
182
|
+
DEF(TOK___fixdfdi, "__fixdfdi")
|
183
|
+
#endif
|
184
|
+
#elif defined(TCC_TARGET_C67)
|
185
|
+
DEF(TOK__divi, "_divi")
|
186
|
+
DEF(TOK__divu, "_divu")
|
187
|
+
DEF(TOK__divf, "_divf")
|
188
|
+
DEF(TOK__divd, "_divd")
|
189
|
+
DEF(TOK__remi, "_remi")
|
190
|
+
DEF(TOK__remu, "_remu")
|
191
|
+
#endif
|
192
|
+
#ifdef TCC_TARGET_I386
|
193
|
+
DEF(TOK___tcc_int_fpu_control, "__tcc_int_fpu_control")
|
194
|
+
DEF(TOK___tcc_fpu_control, "__tcc_fpu_control")
|
195
|
+
#endif
|
196
|
+
#ifdef TCC_ARM_EABI
|
197
|
+
DEF(TOK___ashrdi3, "__aeabi_lasr")
|
198
|
+
DEF(TOK___lshrdi3, "__aeabi_llsr")
|
199
|
+
DEF(TOK___ashldi3, "__aeabi_llsl")
|
200
|
+
DEF(TOK___floatundisf, "__aeabi_ul2f")
|
201
|
+
DEF(TOK___floatundidf, "__aeabi_ul2d")
|
202
|
+
DEF(TOK___fixunssfdi, "__aeabi_f2ulz")
|
203
|
+
DEF(TOK___fixunsdfdi, "__aeabi_d2ulz")
|
204
|
+
#else
|
205
|
+
DEF(TOK___ashrdi3, "__ashrdi3")
|
206
|
+
DEF(TOK___lshrdi3, "__lshrdi3")
|
207
|
+
DEF(TOK___ashldi3, "__ashldi3")
|
208
|
+
DEF(TOK___floatundisf, "__floatundisf")
|
209
|
+
DEF(TOK___floatundidf, "__floatundidf")
|
210
|
+
#ifndef TCC_ARM_VFP
|
211
|
+
DEF(TOK___floatundixf, "__floatundixf")
|
212
|
+
DEF(TOK___fixunsxfdi, "__fixunsxfdi")
|
213
|
+
#endif
|
214
|
+
DEF(TOK___fixunssfdi, "__fixunssfdi")
|
215
|
+
DEF(TOK___fixunsdfdi, "__fixunsdfdi")
|
216
|
+
#endif
|
217
|
+
#ifdef TCC_TARGET_PE
|
218
|
+
DEF(TOK___chkstk, "__chkstk")
|
219
|
+
#endif
|
220
|
+
|
221
|
+
/* bound checking symbols */
|
222
|
+
#ifdef CONFIG_TCC_BCHECK
|
223
|
+
DEF(TOK___bound_ptr_add, "__bound_ptr_add")
|
224
|
+
DEF(TOK___bound_ptr_indir1, "__bound_ptr_indir1")
|
225
|
+
DEF(TOK___bound_ptr_indir2, "__bound_ptr_indir2")
|
226
|
+
DEF(TOK___bound_ptr_indir4, "__bound_ptr_indir4")
|
227
|
+
DEF(TOK___bound_ptr_indir8, "__bound_ptr_indir8")
|
228
|
+
DEF(TOK___bound_ptr_indir12, "__bound_ptr_indir12")
|
229
|
+
DEF(TOK___bound_ptr_indir16, "__bound_ptr_indir16")
|
230
|
+
DEF(TOK___bound_local_new, "__bound_local_new")
|
231
|
+
DEF(TOK___bound_local_delete, "__bound_local_delete")
|
232
|
+
#ifdef TCC_TARGET_PE
|
233
|
+
DEF(TOK_malloc, "malloc")
|
234
|
+
DEF(TOK_free, "free")
|
235
|
+
DEF(TOK_realloc, "realloc")
|
236
|
+
DEF(TOK_memalign, "memalign")
|
237
|
+
DEF(TOK_calloc, "calloc")
|
238
|
+
#endif
|
239
|
+
DEF(TOK_memmove, "memmove")
|
240
|
+
DEF(TOK_strlen, "strlen")
|
241
|
+
DEF(TOK_strcpy, "strcpy")
|
242
|
+
#endif
|
243
|
+
#if defined TCC_TARGET_I386 || defined TCC_TARGET_X86_64
|
244
|
+
DEF(TOK_alloca, "alloca")
|
245
|
+
#endif
|
246
|
+
|
247
|
+
/* Tiny Assembler */
|
248
|
+
DEF_ASM(byte)
|
249
|
+
DEF_ASM(word)
|
250
|
+
DEF_ASM(align)
|
251
|
+
DEF_ASM(skip)
|
252
|
+
DEF_ASM(space)
|
253
|
+
DEF_ASM(string)
|
254
|
+
DEF_ASM(asciz)
|
255
|
+
DEF_ASM(ascii)
|
256
|
+
DEF_ASM(file)
|
257
|
+
DEF_ASM(globl)
|
258
|
+
DEF_ASM(global)
|
259
|
+
DEF_ASM(ident)
|
260
|
+
DEF_ASM(size)
|
261
|
+
DEF_ASM(type)
|
262
|
+
DEF_ASM(text)
|
263
|
+
DEF_ASM(data)
|
264
|
+
DEF_ASM(bss)
|
265
|
+
DEF_ASM(previous)
|
266
|
+
DEF_ASM(fill)
|
267
|
+
DEF_ASM(org)
|
268
|
+
DEF_ASM(quad)
|
269
|
+
#if defined(TCC_TARGET_I386)
|
270
|
+
DEF_ASM(code16)
|
271
|
+
DEF_ASM(code32)
|
272
|
+
#elif defined(TCC_TARGET_X86_64)
|
273
|
+
DEF_ASM(code64)
|
274
|
+
#endif
|
275
|
+
|
276
|
+
#if defined TCC_TARGET_I386 || defined TCC_TARGET_X86_64
|
277
|
+
#include "i386-tok.h"
|
278
|
+
#endif
|
@@ -0,0 +1,199 @@
|
|
1
|
+
#
|
2
|
+
# Tiny C Compiler Makefile - tests
|
3
|
+
#
|
4
|
+
|
5
|
+
TOP = ..
|
6
|
+
include $(TOP)/Makefile
|
7
|
+
VPATH = $(top_srcdir)/tests
|
8
|
+
|
9
|
+
# what tests to run
|
10
|
+
TESTS = \
|
11
|
+
hello-exe \
|
12
|
+
hello-run \
|
13
|
+
libtest \
|
14
|
+
test3 \
|
15
|
+
moretests
|
16
|
+
|
17
|
+
# test4 -- problem with -static
|
18
|
+
# asmtest -- minor differences with gcc
|
19
|
+
# btest -- works on i386 (including win32)
|
20
|
+
# test3 -- win32 does not know how to printf long doubles
|
21
|
+
|
22
|
+
# bounds-checking is supported only on i386
|
23
|
+
ifneq ($(ARCH),i386)
|
24
|
+
TESTS := $(filter-out btest,$(TESTS))
|
25
|
+
endif
|
26
|
+
ifdef CONFIG_WIN32
|
27
|
+
TESTS := $(filter-out test3,$(TESTS))
|
28
|
+
endif
|
29
|
+
ifeq ($(TARGETOS),Darwin)
|
30
|
+
TESTS := $(filter-out hello-exe test3 btest,$(TESTS))
|
31
|
+
endif
|
32
|
+
|
33
|
+
ifdef DISABLE_STATIC
|
34
|
+
export LD_LIBRARY_PATH:=$(CURDIR)/..
|
35
|
+
endif
|
36
|
+
|
37
|
+
ifeq ($(TARGETOS),Darwin)
|
38
|
+
CFLAGS+=-Wl,-flat_namespace,-undefined,warning
|
39
|
+
export MACOSX_DEPLOYMENT_TARGET:=10.2
|
40
|
+
NATIVE_DEFINES+=-D_ANSI_SOURCE
|
41
|
+
endif
|
42
|
+
|
43
|
+
# run local version of tcc with local libraries and includes
|
44
|
+
TCCFLAGS = -B$(TOP)
|
45
|
+
ifdef CONFIG_WIN32
|
46
|
+
TCCFLAGS = -B$(top_srcdir)/win32 -I$(top_srcdir)/include -L$(TOP)
|
47
|
+
endif
|
48
|
+
|
49
|
+
TCC = $(TOP)/tcc $(TCCFLAGS)
|
50
|
+
RUN_TCC = $(NATIVE_DEFINES) -DONE_SOURCE -run $(TOP)/tcc.c $(TCCFLAGS)
|
51
|
+
|
52
|
+
DISAS = objdump -d
|
53
|
+
|
54
|
+
# libtcc test
|
55
|
+
ifdef LIBTCC1
|
56
|
+
LIBTCC1:=$(TOP)/$(LIBTCC1)
|
57
|
+
endif
|
58
|
+
|
59
|
+
all test : $(TESTS)
|
60
|
+
|
61
|
+
hello-exe: ../examples/ex1.c
|
62
|
+
@echo ------------ $@ ------------
|
63
|
+
$(TCC) $< -o hello$(EXESUF) || ($(TOP)/tcc -vv; exit 1) && ./hello$(EXESUF)
|
64
|
+
|
65
|
+
hello-run: ../examples/ex1.c
|
66
|
+
@echo ------------ $@ ------------
|
67
|
+
$(TCC) -run $<
|
68
|
+
|
69
|
+
libtest: libtcc_test$(EXESUF) $(LIBTCC1)
|
70
|
+
@echo ------------ $@ ------------
|
71
|
+
./libtcc_test$(EXESUF) lib_path=..
|
72
|
+
|
73
|
+
libtcc_test$(EXESUF): libtcc_test.c $(top_builddir)/$(LIBTCC)
|
74
|
+
$(CC) -o $@ $^ $(CPPFLAGS) $(CFLAGS) $(NATIVE_DEFINES) $(LIBS) $(LINK_LIBTCC) $(LDFLAGS)
|
75
|
+
|
76
|
+
moretests:
|
77
|
+
@echo ------------ $@ ------------
|
78
|
+
$(MAKE) -C tests2
|
79
|
+
|
80
|
+
# test.ref - generate using gcc
|
81
|
+
# copy only tcclib.h so GCC's stddef and stdarg will be used
|
82
|
+
test.ref: tcctest.c
|
83
|
+
cp ../include/tcclib.h .
|
84
|
+
gcc -o tcctest.gcc $< -I. $(CPPFLAGS) -w $(CFLAGS) $(NATIVE_DEFINES) -std=gnu99 -O0 -fno-omit-frame-pointer $(LDFLAGS)
|
85
|
+
./tcctest.gcc > $@
|
86
|
+
|
87
|
+
# auto test
|
88
|
+
test1: test.ref
|
89
|
+
@echo ------------ $@ ------------
|
90
|
+
$(TCC) -run tcctest.c > test.out1
|
91
|
+
@if diff -u test.ref test.out1 ; then echo "Auto Test OK"; fi
|
92
|
+
|
93
|
+
# iterated test2 (compile tcc then compile tcctest.c !)
|
94
|
+
test2: test.ref
|
95
|
+
@echo ------------ $@ ------------
|
96
|
+
$(TCC) $(RUN_TCC) $(RUN_TCC) -run tcctest.c > test.out2
|
97
|
+
@if diff -u test.ref test.out2 ; then echo "Auto Test2 OK"; fi
|
98
|
+
|
99
|
+
# iterated test3 (compile tcc then compile tcc then compile tcctest.c !)
|
100
|
+
test3: test.ref
|
101
|
+
@echo ------------ $@ ------------
|
102
|
+
$(TCC) $(RUN_TCC) $(RUN_TCC) $(RUN_TCC) -run tcctest.c > test.out3
|
103
|
+
@if diff -u test.ref test.out3 ; then echo "Auto Test3 OK"; fi
|
104
|
+
|
105
|
+
# binary output test
|
106
|
+
test4: test.ref
|
107
|
+
@echo ------------ $@ ------------
|
108
|
+
# object + link output
|
109
|
+
$(TCC) -c -o tcctest3.o tcctest.c
|
110
|
+
$(TCC) -o tcctest3 tcctest3.o
|
111
|
+
./tcctest3 > test3.out
|
112
|
+
@if diff -u test.ref test3.out ; then echo "Object Auto Test OK"; fi
|
113
|
+
# dynamic output
|
114
|
+
$(TCC) -o tcctest1 tcctest.c
|
115
|
+
./tcctest1 > test1.out
|
116
|
+
@if diff -u test.ref test1.out ; then echo "Dynamic Auto Test OK"; fi
|
117
|
+
# dynamic output + bound check
|
118
|
+
$(TCC) -b -o tcctest4 tcctest.c
|
119
|
+
./tcctest4 > test4.out
|
120
|
+
@if diff -u test.ref test4.out ; then echo "BCheck Auto Test OK"; fi
|
121
|
+
# static output
|
122
|
+
$(TCC) -static -o tcctest2 tcctest.c
|
123
|
+
./tcctest2 > test2.out
|
124
|
+
@if diff -u test.ref test2.out ; then echo "Static Auto Test OK"; fi
|
125
|
+
|
126
|
+
# memory and bound check auto test
|
127
|
+
BOUNDS_OK = 1 4 8 10 14
|
128
|
+
BOUNDS_FAIL= 2 5 7 9 11 12 13 15
|
129
|
+
|
130
|
+
btest: boundtest.c
|
131
|
+
@echo ------------ $@ ------------
|
132
|
+
@for i in $(BOUNDS_OK); do \
|
133
|
+
echo ; echo --- boundtest $$i ---; \
|
134
|
+
if $(TCC) -b -run boundtest.c $$i ; then \
|
135
|
+
echo succeded as expected; \
|
136
|
+
else\
|
137
|
+
echo Failed positive test $$i ; exit 1 ; \
|
138
|
+
fi ;\
|
139
|
+
done ;\
|
140
|
+
for i in $(BOUNDS_FAIL); do \
|
141
|
+
echo ; echo --- boundtest $$i ---; \
|
142
|
+
if $(TCC) -b -run boundtest.c $$i ; then \
|
143
|
+
echo Failed negative test $$i ; exit 1 ;\
|
144
|
+
else\
|
145
|
+
echo failed as expected; \
|
146
|
+
fi ;\
|
147
|
+
done ;\
|
148
|
+
echo; echo Bound test OK
|
149
|
+
|
150
|
+
# speed test
|
151
|
+
speedtest: ex2 ex3
|
152
|
+
@echo ------------ $@ ------------
|
153
|
+
time ./ex2 1238 2 3 4 10 13 4
|
154
|
+
time $(TCC) -run $(top_srcdir)/examples/ex2.c 1238 2 3 4 10 13 4
|
155
|
+
time ./ex3 35
|
156
|
+
time $(TCC) -run $(top_srcdir)/examples/ex3.c 35
|
157
|
+
|
158
|
+
weaktest: test.ref
|
159
|
+
$(TCC) -c tcctest.c -o weaktest.tcc.o $(CPPFLAGS) $(CFLAGS)
|
160
|
+
$(CC) -c tcctest.c -o weaktest.gcc.o -I. $(CPPFLAGS) -w $(CFLAGS)
|
161
|
+
objdump -t weaktest.tcc.o | grep ' w ' | sed -e 's/.* \([a-zA-Z0-9_]*\)$$/\1/' | LC_ALL=C sort > weaktest.tcc.o.txt
|
162
|
+
objdump -t weaktest.gcc.o | grep ' w ' | sed -e 's/.* \([a-zA-Z0-9_]*\)$$/\1/' | LC_ALL=C sort > weaktest.gcc.o.txt
|
163
|
+
diff weaktest.gcc.o.txt weaktest.tcc.o.txt && echo "Weak Auto Test OK"
|
164
|
+
|
165
|
+
ex%: $(top_srcdir)/examples/ex%.c
|
166
|
+
$(CC) -o $@ $< $(CPPFLAGS) $(CFLAGS) $(LDFLAGS)
|
167
|
+
|
168
|
+
# tiny assembler testing
|
169
|
+
asmtest.ref: asmtest.S
|
170
|
+
$(CC) -Wa,-W -o asmtest.ref.o -c asmtest.S
|
171
|
+
objdump -D asmtest.ref.o > asmtest.ref
|
172
|
+
|
173
|
+
asmtest: asmtest.ref
|
174
|
+
@echo ------------ $@ ------------
|
175
|
+
$(TCC) -c asmtest.S
|
176
|
+
objdump -D asmtest.o > asmtest.out
|
177
|
+
@if diff -u --ignore-matching-lines="file format" asmtest.ref asmtest.out ; then echo "ASM Auto Test OK"; fi
|
178
|
+
|
179
|
+
# targets for development
|
180
|
+
%.bin: %.c tcc
|
181
|
+
$(TCC) -g -o $@ $<
|
182
|
+
$(DISAS) $@
|
183
|
+
|
184
|
+
instr: instr.o
|
185
|
+
objdump -d instr.o
|
186
|
+
|
187
|
+
instr.o: instr.S
|
188
|
+
$(CC) -o $@ -c $< -O2 -Wall -g
|
189
|
+
|
190
|
+
cache: tcc_g
|
191
|
+
cachegrind ./tcc_g -o /tmp/linpack -lm bench/linpack.c
|
192
|
+
vg_annotate tcc.c > /tmp/linpack.cache.log
|
193
|
+
|
194
|
+
# clean
|
195
|
+
clean:
|
196
|
+
$(MAKE) -C tests2 $@
|
197
|
+
rm -vf *~ *.o *.a *.bin *.i *.ref *.out *.out? *.out?b *.gcc *.exe \
|
198
|
+
hello libtcc_test tcctest[1234] ex? tcc_g tcclib.h
|
199
|
+
|