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.
Files changed (283) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE +35 -0
  3. data/README.md +196 -0
  4. data/ext/tcc/extconf.rb +25 -0
  5. data/ext/tcc/tcc-0.9.26.patch +30 -0
  6. data/ext/tcc/tcc-0.9.26/COPYING +504 -0
  7. data/ext/tcc/tcc-0.9.26/Changelog +396 -0
  8. data/ext/tcc/tcc-0.9.26/Makefile +349 -0
  9. data/ext/tcc/tcc-0.9.26/README +101 -0
  10. data/ext/tcc/tcc-0.9.26/TODO +93 -0
  11. data/ext/tcc/tcc-0.9.26/VERSION +1 -0
  12. data/ext/tcc/tcc-0.9.26/arm-gen.c +2005 -0
  13. data/ext/tcc/tcc-0.9.26/c67-gen.c +2560 -0
  14. data/ext/tcc/tcc-0.9.26/coff.h +446 -0
  15. data/ext/tcc/tcc-0.9.26/config.h +8 -0
  16. data/ext/tcc/tcc-0.9.26/config.mak +28 -0
  17. data/ext/tcc/tcc-0.9.26/config.texi +1 -0
  18. data/ext/tcc/tcc-0.9.26/configure +540 -0
  19. data/ext/tcc/tcc-0.9.26/conftest.c +71 -0
  20. data/ext/tcc/tcc-0.9.26/elf.h +1731 -0
  21. data/ext/tcc/tcc-0.9.26/examples/ex1.c +8 -0
  22. data/ext/tcc/tcc-0.9.26/examples/ex2.c +98 -0
  23. data/ext/tcc/tcc-0.9.26/examples/ex3.c +24 -0
  24. data/ext/tcc/tcc-0.9.26/examples/ex4.c +26 -0
  25. data/ext/tcc/tcc-0.9.26/examples/ex5.c +8 -0
  26. data/ext/tcc/tcc-0.9.26/i386-asm.c +1498 -0
  27. data/ext/tcc/tcc-0.9.26/i386-asm.h +473 -0
  28. data/ext/tcc/tcc-0.9.26/i386-gen.c +1096 -0
  29. data/ext/tcc/tcc-0.9.26/i386-tok.h +243 -0
  30. data/ext/tcc/tcc-0.9.26/il-gen.c +667 -0
  31. data/ext/tcc/tcc-0.9.26/il-opcodes.h +251 -0
  32. data/ext/tcc/tcc-0.9.26/include/float.h +57 -0
  33. data/ext/tcc/tcc-0.9.26/include/stdarg.h +41 -0
  34. data/ext/tcc/tcc-0.9.26/include/stdbool.h +10 -0
  35. data/ext/tcc/tcc-0.9.26/include/stddef.h +28 -0
  36. data/ext/tcc/tcc-0.9.26/include/tcclib.h +78 -0
  37. data/ext/tcc/tcc-0.9.26/include/varargs.h +12 -0
  38. data/ext/tcc/tcc-0.9.26/lib/Makefile +102 -0
  39. data/ext/tcc/tcc-0.9.26/lib/alloca86-bt.S +47 -0
  40. data/ext/tcc/tcc-0.9.26/lib/alloca86.S +35 -0
  41. data/ext/tcc/tcc-0.9.26/lib/alloca86_64.S +42 -0
  42. data/ext/tcc/tcc-0.9.26/lib/bcheck.c +875 -0
  43. data/ext/tcc/tcc-0.9.26/lib/libtcc1.c +691 -0
  44. data/ext/tcc/tcc-0.9.26/libtcc.c +1941 -0
  45. data/ext/tcc/tcc-0.9.26/libtcc.h +103 -0
  46. data/ext/tcc/tcc-0.9.26/stab.def +234 -0
  47. data/ext/tcc/tcc-0.9.26/stab.h +17 -0
  48. data/ext/tcc/tcc-0.9.26/tcc-doc.html +2332 -0
  49. data/ext/tcc/tcc-0.9.26/tcc-doc.info +1151 -0
  50. data/ext/tcc/tcc-0.9.26/tcc-doc.texi +1268 -0
  51. data/ext/tcc/tcc-0.9.26/tcc.1 +415 -0
  52. data/ext/tcc/tcc-0.9.26/tcc.c +352 -0
  53. data/ext/tcc/tcc-0.9.26/tcc.h +1379 -0
  54. data/ext/tcc/tcc-0.9.26/tccasm.c +1118 -0
  55. data/ext/tcc/tcc-0.9.26/tcccoff.c +948 -0
  56. data/ext/tcc/tcc-0.9.26/tccelf.c +3129 -0
  57. data/ext/tcc/tcc-0.9.26/tccgen.c +5841 -0
  58. data/ext/tcc/tcc-0.9.26/tccpe.c +1887 -0
  59. data/ext/tcc/tcc-0.9.26/tccpp.c +3128 -0
  60. data/ext/tcc/tcc-0.9.26/tccrun.c +737 -0
  61. data/ext/tcc/tcc-0.9.26/tcctok.h +278 -0
  62. data/ext/tcc/tcc-0.9.26/tests/Makefile +199 -0
  63. data/ext/tcc/tcc-0.9.26/tests/asmtest.S +609 -0
  64. data/ext/tcc/tcc-0.9.26/tests/boundtest.c +233 -0
  65. data/ext/tcc/tcc-0.9.26/tests/gcctestsuite.sh +33 -0
  66. data/ext/tcc/tcc-0.9.26/tests/libtcc_test.c +76 -0
  67. data/ext/tcc/tcc-0.9.26/tests/tcctest.c +2713 -0
  68. data/ext/tcc/tcc-0.9.26/tests/tests2/00_assignment.c +18 -0
  69. data/ext/tcc/tcc-0.9.26/tests/tests2/00_assignment.expect +3 -0
  70. data/ext/tcc/tcc-0.9.26/tests/tests2/01_comment.c +14 -0
  71. data/ext/tcc/tcc-0.9.26/tests/tests2/01_comment.expect +5 -0
  72. data/ext/tcc/tcc-0.9.26/tests/tests2/02_printf.c +18 -0
  73. data/ext/tcc/tcc-0.9.26/tests/tests2/02_printf.expect +15 -0
  74. data/ext/tcc/tcc-0.9.26/tests/tests2/03_struct.c +31 -0
  75. data/ext/tcc/tcc-0.9.26/tests/tests2/03_struct.expect +6 -0
  76. data/ext/tcc/tcc-0.9.26/tests/tests2/04_for.c +15 -0
  77. data/ext/tcc/tcc-0.9.26/tests/tests2/04_for.expect +10 -0
  78. data/ext/tcc/tcc-0.9.26/tests/tests2/05_array.c +21 -0
  79. data/ext/tcc/tcc-0.9.26/tests/tests2/05_array.expect +10 -0
  80. data/ext/tcc/tcc-0.9.26/tests/tests2/06_case.c +29 -0
  81. data/ext/tcc/tcc-0.9.26/tests/tests2/06_case.expect +8 -0
  82. data/ext/tcc/tcc-0.9.26/tests/tests2/07_function.c +30 -0
  83. data/ext/tcc/tcc-0.9.26/tests/tests2/07_function.expect +4 -0
  84. data/ext/tcc/tcc-0.9.26/tests/tests2/08_while.c +24 -0
  85. data/ext/tcc/tcc-0.9.26/tests/tests2/08_while.expect +11 -0
  86. data/ext/tcc/tcc-0.9.26/tests/tests2/09_do_while.c +24 -0
  87. data/ext/tcc/tcc-0.9.26/tests/tests2/09_do_while.expect +11 -0
  88. data/ext/tcc/tcc-0.9.26/tests/tests2/10_pointer.c +40 -0
  89. data/ext/tcc/tcc-0.9.26/tests/tests2/10_pointer.expect +8 -0
  90. data/ext/tcc/tcc-0.9.26/tests/tests2/11_precedence.c +40 -0
  91. data/ext/tcc/tcc-0.9.26/tests/tests2/11_precedence.expect +15 -0
  92. data/ext/tcc/tcc-0.9.26/tests/tests2/12_hashdefine.c +14 -0
  93. data/ext/tcc/tcc-0.9.26/tests/tests2/12_hashdefine.expect +2 -0
  94. data/ext/tcc/tcc-0.9.26/tests/tests2/13_integer_literals.c +20 -0
  95. data/ext/tcc/tcc-0.9.26/tests/tests2/13_integer_literals.expect +5 -0
  96. data/ext/tcc/tcc-0.9.26/tests/tests2/14_if.c +21 -0
  97. data/ext/tcc/tcc-0.9.26/tests/tests2/14_if.expect +2 -0
  98. data/ext/tcc/tcc-0.9.26/tests/tests2/15_recursion.c +21 -0
  99. data/ext/tcc/tcc-0.9.26/tests/tests2/15_recursion.expect +10 -0
  100. data/ext/tcc/tcc-0.9.26/tests/tests2/16_nesting.c +21 -0
  101. data/ext/tcc/tcc-0.9.26/tests/tests2/16_nesting.expect +18 -0
  102. data/ext/tcc/tcc-0.9.26/tests/tests2/17_enum.c +29 -0
  103. data/ext/tcc/tcc-0.9.26/tests/tests2/17_enum.expect +3 -0
  104. data/ext/tcc/tcc-0.9.26/tests/tests2/18_include.c +12 -0
  105. data/ext/tcc/tcc-0.9.26/tests/tests2/18_include.expect +3 -0
  106. data/ext/tcc/tcc-0.9.26/tests/tests2/18_include.h +1 -0
  107. data/ext/tcc/tcc-0.9.26/tests/tests2/19_pointer_arithmetic.c +28 -0
  108. data/ext/tcc/tcc-0.9.26/tests/tests2/19_pointer_arithmetic.expect +3 -0
  109. data/ext/tcc/tcc-0.9.26/tests/tests2/20_pointer_comparison.c +24 -0
  110. data/ext/tcc/tcc-0.9.26/tests/tests2/20_pointer_comparison.expect +6 -0
  111. data/ext/tcc/tcc-0.9.26/tests/tests2/21_char_array.c +33 -0
  112. data/ext/tcc/tcc-0.9.26/tests/tests2/21_char_array.expect +7 -0
  113. data/ext/tcc/tcc-0.9.26/tests/tests2/22_floating_point.c +50 -0
  114. data/ext/tcc/tcc-0.9.26/tests/tests2/22_floating_point.expect +16 -0
  115. data/ext/tcc/tcc-0.9.26/tests/tests2/23_type_coercion.c +54 -0
  116. data/ext/tcc/tcc-0.9.26/tests/tests2/23_type_coercion.expect +12 -0
  117. data/ext/tcc/tcc-0.9.26/tests/tests2/24_math_library.c +28 -0
  118. data/ext/tcc/tcc-0.9.26/tests/tests2/24_math_library.expect +18 -0
  119. data/ext/tcc/tcc-0.9.26/tests/tests2/25_quicksort.c +83 -0
  120. data/ext/tcc/tcc-0.9.26/tests/tests2/25_quicksort.expect +2 -0
  121. data/ext/tcc/tcc-0.9.26/tests/tests2/26_character_constants.c +17 -0
  122. data/ext/tcc/tcc-0.9.26/tests/tests2/26_character_constants.expect +8 -0
  123. data/ext/tcc/tcc-0.9.26/tests/tests2/27_sizeof.c +16 -0
  124. data/ext/tcc/tcc-0.9.26/tests/tests2/27_sizeof.expect +3 -0
  125. data/ext/tcc/tcc-0.9.26/tests/tests2/28_strings.c +46 -0
  126. data/ext/tcc/tcc-0.9.26/tests/tests2/28_strings.expect +19 -0
  127. data/ext/tcc/tcc-0.9.26/tests/tests2/29_array_address.c +13 -0
  128. data/ext/tcc/tcc-0.9.26/tests/tests2/29_array_address.expect +1 -0
  129. data/ext/tcc/tcc-0.9.26/tests/tests2/30_hanoi.c +122 -0
  130. data/ext/tcc/tcc-0.9.26/tests/tests2/30_hanoi.expect +71 -0
  131. data/ext/tcc/tcc-0.9.26/tests/tests2/31_args.c +14 -0
  132. data/ext/tcc/tcc-0.9.26/tests/tests2/31_args.expect +7 -0
  133. data/ext/tcc/tcc-0.9.26/tests/tests2/32_led.c +266 -0
  134. data/ext/tcc/tcc-0.9.26/tests/tests2/32_led.expect +4 -0
  135. data/ext/tcc/tcc-0.9.26/tests/tests2/33_ternary_op.c +15 -0
  136. data/ext/tcc/tcc-0.9.26/tests/tests2/33_ternary_op.expect +10 -0
  137. data/ext/tcc/tcc-0.9.26/tests/tests2/34_array_assignment.c +23 -0
  138. data/ext/tcc/tcc-0.9.26/tests/tests2/34_array_assignment.expect +2 -0
  139. data/ext/tcc/tcc-0.9.26/tests/tests2/35_sizeof.c +14 -0
  140. data/ext/tcc/tcc-0.9.26/tests/tests2/35_sizeof.expect +2 -0
  141. data/ext/tcc/tcc-0.9.26/tests/tests2/36_array_initialisers.c +21 -0
  142. data/ext/tcc/tcc-0.9.26/tests/tests2/36_array_initialisers.expect +20 -0
  143. data/ext/tcc/tcc-0.9.26/tests/tests2/37_sprintf.c +17 -0
  144. data/ext/tcc/tcc-0.9.26/tests/tests2/37_sprintf.expect +20 -0
  145. data/ext/tcc/tcc-0.9.26/tests/tests2/38_multiple_array_index.c +32 -0
  146. data/ext/tcc/tcc-0.9.26/tests/tests2/38_multiple_array_index.expect +4 -0
  147. data/ext/tcc/tcc-0.9.26/tests/tests2/39_typedef.c +31 -0
  148. data/ext/tcc/tcc-0.9.26/tests/tests2/39_typedef.expect +3 -0
  149. data/ext/tcc/tcc-0.9.26/tests/tests2/40_stdio.c +52 -0
  150. data/ext/tcc/tcc-0.9.26/tests/tests2/40_stdio.expect +27 -0
  151. data/ext/tcc/tcc-0.9.26/tests/tests2/41_hashif.c +85 -0
  152. data/ext/tcc/tcc-0.9.26/tests/tests2/41_hashif.expect +6 -0
  153. data/ext/tcc/tcc-0.9.26/tests/tests2/42_function_pointer.c +18 -0
  154. data/ext/tcc/tcc-0.9.26/tests/tests2/42_function_pointer.expect +2 -0
  155. data/ext/tcc/tcc-0.9.26/tests/tests2/43_void_param.c +15 -0
  156. data/ext/tcc/tcc-0.9.26/tests/tests2/43_void_param.expect +1 -0
  157. data/ext/tcc/tcc-0.9.26/tests/tests2/44_scoped_declarations.c +17 -0
  158. data/ext/tcc/tcc-0.9.26/tests/tests2/44_scoped_declarations.expect +1 -0
  159. data/ext/tcc/tcc-0.9.26/tests/tests2/45_empty_for.c +18 -0
  160. data/ext/tcc/tcc-0.9.26/tests/tests2/45_empty_for.expect +10 -0
  161. data/ext/tcc/tcc-0.9.26/tests/tests2/46_grep.c +564 -0
  162. data/ext/tcc/tcc-0.9.26/tests/tests2/47_switch_return.c +24 -0
  163. data/ext/tcc/tcc-0.9.26/tests/tests2/47_switch_return.expect +4 -0
  164. data/ext/tcc/tcc-0.9.26/tests/tests2/48_nested_break.c +26 -0
  165. data/ext/tcc/tcc-0.9.26/tests/tests2/48_nested_break.expect +1 -0
  166. data/ext/tcc/tcc-0.9.26/tests/tests2/49_bracket_evaluation.c +23 -0
  167. data/ext/tcc/tcc-0.9.26/tests/tests2/49_bracket_evaluation.expect +1 -0
  168. data/ext/tcc/tcc-0.9.26/tests/tests2/50_logical_second_arg.c +29 -0
  169. data/ext/tcc/tcc-0.9.26/tests/tests2/50_logical_second_arg.expect +20 -0
  170. data/ext/tcc/tcc-0.9.26/tests/tests2/51_static.c +30 -0
  171. data/ext/tcc/tcc-0.9.26/tests/tests2/51_static.expect +8 -0
  172. data/ext/tcc/tcc-0.9.26/tests/tests2/52_unnamed_enum.c +27 -0
  173. data/ext/tcc/tcc-0.9.26/tests/tests2/52_unnamed_enum.expect +9 -0
  174. data/ext/tcc/tcc-0.9.26/tests/tests2/54_goto.c +56 -0
  175. data/ext/tcc/tcc-0.9.26/tests/tests2/54_goto.expect +8 -0
  176. data/ext/tcc/tcc-0.9.26/tests/tests2/55_lshift_type.c +52 -0
  177. data/ext/tcc/tcc-0.9.26/tests/tests2/55_lshift_type.expect +1 -0
  178. data/ext/tcc/tcc-0.9.26/tests/tests2/LICENSE +37 -0
  179. data/ext/tcc/tcc-0.9.26/tests/tests2/Makefile +98 -0
  180. data/ext/tcc/tcc-0.9.26/texi2pod.pl +427 -0
  181. data/ext/tcc/tcc-0.9.26/win32/build-tcc.bat +60 -0
  182. data/ext/tcc/tcc-0.9.26/win32/examples/dll.c +12 -0
  183. data/ext/tcc/tcc-0.9.26/win32/examples/fib.c +23 -0
  184. data/ext/tcc/tcc-0.9.26/win32/examples/hello_dll.c +19 -0
  185. data/ext/tcc/tcc-0.9.26/win32/examples/hello_win.c +163 -0
  186. data/ext/tcc/tcc-0.9.26/win32/include/_mingw.h +139 -0
  187. data/ext/tcc/tcc-0.9.26/win32/include/assert.h +54 -0
  188. data/ext/tcc/tcc-0.9.26/win32/include/conio.h +409 -0
  189. data/ext/tcc/tcc-0.9.26/win32/include/ctype.h +281 -0
  190. data/ext/tcc/tcc-0.9.26/win32/include/dir.h +31 -0
  191. data/ext/tcc/tcc-0.9.26/win32/include/direct.h +68 -0
  192. data/ext/tcc/tcc-0.9.26/win32/include/dirent.h +135 -0
  193. data/ext/tcc/tcc-0.9.26/win32/include/dos.h +55 -0
  194. data/ext/tcc/tcc-0.9.26/win32/include/errno.h +75 -0
  195. data/ext/tcc/tcc-0.9.26/win32/include/excpt.h +123 -0
  196. data/ext/tcc/tcc-0.9.26/win32/include/fcntl.h +52 -0
  197. data/ext/tcc/tcc-0.9.26/win32/include/fenv.h +108 -0
  198. data/ext/tcc/tcc-0.9.26/win32/include/inttypes.h +297 -0
  199. data/ext/tcc/tcc-0.9.26/win32/include/io.h +418 -0
  200. data/ext/tcc/tcc-0.9.26/win32/include/limits.h +111 -0
  201. data/ext/tcc/tcc-0.9.26/win32/include/locale.h +91 -0
  202. data/ext/tcc/tcc-0.9.26/win32/include/malloc.h +175 -0
  203. data/ext/tcc/tcc-0.9.26/win32/include/math.h +777 -0
  204. data/ext/tcc/tcc-0.9.26/win32/include/mem.h +13 -0
  205. data/ext/tcc/tcc-0.9.26/win32/include/memory.h +40 -0
  206. data/ext/tcc/tcc-0.9.26/win32/include/process.h +176 -0
  207. data/ext/tcc/tcc-0.9.26/win32/include/sec_api/conio_s.h +42 -0
  208. data/ext/tcc/tcc-0.9.26/win32/include/sec_api/crtdbg_s.h +19 -0
  209. data/ext/tcc/tcc-0.9.26/win32/include/sec_api/io_s.h +33 -0
  210. data/ext/tcc/tcc-0.9.26/win32/include/sec_api/mbstring_s.h +52 -0
  211. data/ext/tcc/tcc-0.9.26/win32/include/sec_api/search_s.h +25 -0
  212. data/ext/tcc/tcc-0.9.26/win32/include/sec_api/stdio_s.h +145 -0
  213. data/ext/tcc/tcc-0.9.26/win32/include/sec_api/stdlib_s.h +67 -0
  214. data/ext/tcc/tcc-0.9.26/win32/include/sec_api/stralign_s.h +30 -0
  215. data/ext/tcc/tcc-0.9.26/win32/include/sec_api/string_s.h +41 -0
  216. data/ext/tcc/tcc-0.9.26/win32/include/sec_api/sys/timeb_s.h +34 -0
  217. data/ext/tcc/tcc-0.9.26/win32/include/sec_api/tchar_s.h +266 -0
  218. data/ext/tcc/tcc-0.9.26/win32/include/sec_api/time_s.h +61 -0
  219. data/ext/tcc/tcc-0.9.26/win32/include/sec_api/wchar_s.h +128 -0
  220. data/ext/tcc/tcc-0.9.26/win32/include/setjmp.h +160 -0
  221. data/ext/tcc/tcc-0.9.26/win32/include/share.h +28 -0
  222. data/ext/tcc/tcc-0.9.26/win32/include/signal.h +63 -0
  223. data/ext/tcc/tcc-0.9.26/win32/include/stdint.h +209 -0
  224. data/ext/tcc/tcc-0.9.26/win32/include/stdio.h +429 -0
  225. data/ext/tcc/tcc-0.9.26/win32/include/stdlib.h +580 -0
  226. data/ext/tcc/tcc-0.9.26/win32/include/string.h +164 -0
  227. data/ext/tcc/tcc-0.9.26/win32/include/sys/fcntl.h +13 -0
  228. data/ext/tcc/tcc-0.9.26/win32/include/sys/file.h +14 -0
  229. data/ext/tcc/tcc-0.9.26/win32/include/sys/locking.h +30 -0
  230. data/ext/tcc/tcc-0.9.26/win32/include/sys/stat.h +290 -0
  231. data/ext/tcc/tcc-0.9.26/win32/include/sys/time.h +69 -0
  232. data/ext/tcc/tcc-0.9.26/win32/include/sys/timeb.h +133 -0
  233. data/ext/tcc/tcc-0.9.26/win32/include/sys/types.h +118 -0
  234. data/ext/tcc/tcc-0.9.26/win32/include/sys/unistd.h +14 -0
  235. data/ext/tcc/tcc-0.9.26/win32/include/sys/utime.h +146 -0
  236. data/ext/tcc/tcc-0.9.26/win32/include/tchar.h +1102 -0
  237. data/ext/tcc/tcc-0.9.26/win32/include/time.h +287 -0
  238. data/ext/tcc/tcc-0.9.26/win32/include/vadefs.h +11 -0
  239. data/ext/tcc/tcc-0.9.26/win32/include/values.h +4 -0
  240. data/ext/tcc/tcc-0.9.26/win32/include/wchar.h +871 -0
  241. data/ext/tcc/tcc-0.9.26/win32/include/wctype.h +172 -0
  242. data/ext/tcc/tcc-0.9.26/win32/include/winapi/basetsd.h +149 -0
  243. data/ext/tcc/tcc-0.9.26/win32/include/winapi/basetyps.h +85 -0
  244. data/ext/tcc/tcc-0.9.26/win32/include/winapi/guiddef.h +151 -0
  245. data/ext/tcc/tcc-0.9.26/win32/include/winapi/intrin.h +11 -0
  246. data/ext/tcc/tcc-0.9.26/win32/include/winapi/poppack.h +8 -0
  247. data/ext/tcc/tcc-0.9.26/win32/include/winapi/pshpack1.h +8 -0
  248. data/ext/tcc/tcc-0.9.26/win32/include/winapi/pshpack2.h +8 -0
  249. data/ext/tcc/tcc-0.9.26/win32/include/winapi/pshpack4.h +8 -0
  250. data/ext/tcc/tcc-0.9.26/win32/include/winapi/pshpack8.h +8 -0
  251. data/ext/tcc/tcc-0.9.26/win32/include/winapi/reason.h +80 -0
  252. data/ext/tcc/tcc-0.9.26/win32/include/winapi/specstrings.h +7 -0
  253. data/ext/tcc/tcc-0.9.26/win32/include/winapi/stralign.h +154 -0
  254. data/ext/tcc/tcc-0.9.26/win32/include/winapi/tvout.h +79 -0
  255. data/ext/tcc/tcc-0.9.26/win32/include/winapi/winbase.h +2951 -0
  256. data/ext/tcc/tcc-0.9.26/win32/include/winapi/wincon.h +301 -0
  257. data/ext/tcc/tcc-0.9.26/win32/include/winapi/windef.h +293 -0
  258. data/ext/tcc/tcc-0.9.26/win32/include/winapi/windows.h +123 -0
  259. data/ext/tcc/tcc-0.9.26/win32/include/winapi/winerror.h +3166 -0
  260. data/ext/tcc/tcc-0.9.26/win32/include/winapi/wingdi.h +4080 -0
  261. data/ext/tcc/tcc-0.9.26/win32/include/winapi/winnetwk.h +476 -0
  262. data/ext/tcc/tcc-0.9.26/win32/include/winapi/winnls.h +765 -0
  263. data/ext/tcc/tcc-0.9.26/win32/include/winapi/winnt.h +5770 -0
  264. data/ext/tcc/tcc-0.9.26/win32/include/winapi/winreg.h +272 -0
  265. data/ext/tcc/tcc-0.9.26/win32/include/winapi/winuser.h +5651 -0
  266. data/ext/tcc/tcc-0.9.26/win32/include/winapi/winver.h +160 -0
  267. data/ext/tcc/tcc-0.9.26/win32/lib/chkstk.S +191 -0
  268. data/ext/tcc/tcc-0.9.26/win32/lib/crt1.c +34 -0
  269. data/ext/tcc/tcc-0.9.26/win32/lib/dllcrt1.c +13 -0
  270. data/ext/tcc/tcc-0.9.26/win32/lib/dllmain.c +9 -0
  271. data/ext/tcc/tcc-0.9.26/win32/lib/gdi32.def +337 -0
  272. data/ext/tcc/tcc-0.9.26/win32/lib/kernel32.def +765 -0
  273. data/ext/tcc/tcc-0.9.26/win32/lib/msvcrt.def +1399 -0
  274. data/ext/tcc/tcc-0.9.26/win32/lib/user32.def +654 -0
  275. data/ext/tcc/tcc-0.9.26/win32/lib/wincrt1.c +64 -0
  276. data/ext/tcc/tcc-0.9.26/win32/tcc-win32.txt +156 -0
  277. data/ext/tcc/tcc-0.9.26/win32/tools/tiny_impdef.c +243 -0
  278. data/ext/tcc/tcc-0.9.26/win32/tools/tiny_libmaker.c +258 -0
  279. data/ext/tcc/tcc-0.9.26/x86_64-asm.h +448 -0
  280. data/ext/tcc/tcc-0.9.26/x86_64-gen.c +1701 -0
  281. data/lib/tcc.rb +291 -0
  282. data/tcc.gemspec +15 -0
  283. 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
+