laag-nasm 2.13.03.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (455) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +57 -0
  3. data/LICENSE.txt +29 -0
  4. data/README.org +34 -0
  5. data/ext/laag/nasm/extconf.rb +16 -0
  6. data/laag-nasm.gemspec +20 -0
  7. data/lib/laag/nasm.rb +29 -0
  8. data/patches/Makefile.in.patch +13 -0
  9. data/vendor/repo.or.cz/nasm/.gitignore +102 -0
  10. data/vendor/repo.or.cz/nasm/AUTHORS +137 -0
  11. data/vendor/repo.or.cz/nasm/CHANGES +2 -0
  12. data/vendor/repo.or.cz/nasm/ChangeLog +2905 -0
  13. data/vendor/repo.or.cz/nasm/INSTALL +102 -0
  14. data/vendor/repo.or.cz/nasm/LICENSE +29 -0
  15. data/vendor/repo.or.cz/nasm/Makefile.in +855 -0
  16. data/vendor/repo.or.cz/nasm/Mkfiles/README +46 -0
  17. data/vendor/repo.or.cz/nasm/Mkfiles/msvc.mak +732 -0
  18. data/vendor/repo.or.cz/nasm/Mkfiles/openwcom.mak +706 -0
  19. data/vendor/repo.or.cz/nasm/README +23 -0
  20. data/vendor/repo.or.cz/nasm/SubmittingPatches +116 -0
  21. data/vendor/repo.or.cz/nasm/TODO +376 -0
  22. data/vendor/repo.or.cz/nasm/aclocal.m4 +139 -0
  23. data/vendor/repo.or.cz/nasm/asm/assemble.c +2957 -0
  24. data/vendor/repo.or.cz/nasm/asm/assemble.h +54 -0
  25. data/vendor/repo.or.cz/nasm/asm/directiv.c +566 -0
  26. data/vendor/repo.or.cz/nasm/asm/directiv.dat +92 -0
  27. data/vendor/repo.or.cz/nasm/asm/error.c +202 -0
  28. data/vendor/repo.or.cz/nasm/asm/eval.c +1014 -0
  29. data/vendor/repo.or.cz/nasm/asm/eval.h +49 -0
  30. data/vendor/repo.or.cz/nasm/asm/exprdump.c +79 -0
  31. data/vendor/repo.or.cz/nasm/asm/exprlib.c +200 -0
  32. data/vendor/repo.or.cz/nasm/asm/float.c +952 -0
  33. data/vendor/repo.or.cz/nasm/asm/float.h +54 -0
  34. data/vendor/repo.or.cz/nasm/asm/labels.c +540 -0
  35. data/vendor/repo.or.cz/nasm/asm/listing.c +346 -0
  36. data/vendor/repo.or.cz/nasm/asm/listing.h +113 -0
  37. data/vendor/repo.or.cz/nasm/asm/nasm.c +1855 -0
  38. data/vendor/repo.or.cz/nasm/asm/parser.c +1167 -0
  39. data/vendor/repo.or.cz/nasm/asm/parser.h +45 -0
  40. data/vendor/repo.or.cz/nasm/asm/phash.pl +109 -0
  41. data/vendor/repo.or.cz/nasm/asm/pptok.dat +96 -0
  42. data/vendor/repo.or.cz/nasm/asm/pptok.pl +271 -0
  43. data/vendor/repo.or.cz/nasm/asm/pragma.c +218 -0
  44. data/vendor/repo.or.cz/nasm/asm/preproc-nop.c +188 -0
  45. data/vendor/repo.or.cz/nasm/asm/preproc.c +5459 -0
  46. data/vendor/repo.or.cz/nasm/asm/preproc.h +55 -0
  47. data/vendor/repo.or.cz/nasm/asm/quote.c +479 -0
  48. data/vendor/repo.or.cz/nasm/asm/quote.h +44 -0
  49. data/vendor/repo.or.cz/nasm/asm/rdstrnum.c +68 -0
  50. data/vendor/repo.or.cz/nasm/asm/segalloc.c +51 -0
  51. data/vendor/repo.or.cz/nasm/asm/stdscan.c +345 -0
  52. data/vendor/repo.or.cz/nasm/asm/stdscan.h +49 -0
  53. data/vendor/repo.or.cz/nasm/asm/strfunc.c +359 -0
  54. data/vendor/repo.or.cz/nasm/asm/tokens.dat +135 -0
  55. data/vendor/repo.or.cz/nasm/asm/tokhash.pl +284 -0
  56. data/vendor/repo.or.cz/nasm/autogen.sh +9 -0
  57. data/vendor/repo.or.cz/nasm/common/common.c +122 -0
  58. data/vendor/repo.or.cz/nasm/config/msvc.h +192 -0
  59. data/vendor/repo.or.cz/nasm/config/unknown.h +51 -0
  60. data/vendor/repo.or.cz/nasm/config/watcom.h +74 -0
  61. data/vendor/repo.or.cz/nasm/configure.ac +253 -0
  62. data/vendor/repo.or.cz/nasm/contrib/MSVC6.txt +25 -0
  63. data/vendor/repo.or.cz/nasm/contrib/VSrules/nasm.README +16 -0
  64. data/vendor/repo.or.cz/nasm/contrib/VSrules/nasm.rules +79 -0
  65. data/vendor/repo.or.cz/nasm/disasm/disasm.c +1735 -0
  66. data/vendor/repo.or.cz/nasm/disasm/disasm.h +49 -0
  67. data/vendor/repo.or.cz/nasm/disasm/ndisasm.c +397 -0
  68. data/vendor/repo.or.cz/nasm/disasm/sync.c +132 -0
  69. data/vendor/repo.or.cz/nasm/disasm/sync.h +45 -0
  70. data/vendor/repo.or.cz/nasm/doc/Makefile.in +86 -0
  71. data/vendor/repo.or.cz/nasm/doc/README +20 -0
  72. data/vendor/repo.or.cz/nasm/doc/afmmetrics.ph +102 -0
  73. data/vendor/repo.or.cz/nasm/doc/changes.src +2588 -0
  74. data/vendor/repo.or.cz/nasm/doc/findfont.ph +180 -0
  75. data/vendor/repo.or.cz/nasm/doc/genps.pl +1294 -0
  76. data/vendor/repo.or.cz/nasm/doc/inslist.pl +108 -0
  77. data/vendor/repo.or.cz/nasm/doc/internal.doc +290 -0
  78. data/vendor/repo.or.cz/nasm/doc/local.css +1 -0
  79. data/vendor/repo.or.cz/nasm/doc/nasmdoc.css +150 -0
  80. data/vendor/repo.or.cz/nasm/doc/nasmdoc.src +8309 -0
  81. data/vendor/repo.or.cz/nasm/doc/nasmlogo.eps +212 -0
  82. data/vendor/repo.or.cz/nasm/doc/nasmlogw.png +0 -0
  83. data/vendor/repo.or.cz/nasm/doc/psfonts.ph +53 -0
  84. data/vendor/repo.or.cz/nasm/doc/pspdf.pl +98 -0
  85. data/vendor/repo.or.cz/nasm/doc/pswidth.ph +25 -0
  86. data/vendor/repo.or.cz/nasm/doc/rdsrc.pl +1111 -0
  87. data/vendor/repo.or.cz/nasm/doc/ttfmetrics.ph +63 -0
  88. data/vendor/repo.or.cz/nasm/headers/c +33 -0
  89. data/vendor/repo.or.cz/nasm/headers/doc +33 -0
  90. data/vendor/repo.or.cz/nasm/headers/mac +33 -0
  91. data/vendor/repo.or.cz/nasm/headers/perl +33 -0
  92. data/vendor/repo.or.cz/nasm/include/compiler.h +277 -0
  93. data/vendor/repo.or.cz/nasm/include/disp8.h +45 -0
  94. data/vendor/repo.or.cz/nasm/include/error.h +135 -0
  95. data/vendor/repo.or.cz/nasm/include/hashtbl.h +85 -0
  96. data/vendor/repo.or.cz/nasm/include/iflag.h +173 -0
  97. data/vendor/repo.or.cz/nasm/include/insns.h +76 -0
  98. data/vendor/repo.or.cz/nasm/include/labels.h +60 -0
  99. data/vendor/repo.or.cz/nasm/include/md5.h +21 -0
  100. data/vendor/repo.or.cz/nasm/include/nasm.h +1246 -0
  101. data/vendor/repo.or.cz/nasm/include/nasmint.h +219 -0
  102. data/vendor/repo.or.cz/nasm/include/nasmlib.h +524 -0
  103. data/vendor/repo.or.cz/nasm/include/opflags.h +271 -0
  104. data/vendor/repo.or.cz/nasm/include/perfhash.h +52 -0
  105. data/vendor/repo.or.cz/nasm/include/raa.h +46 -0
  106. data/vendor/repo.or.cz/nasm/include/rbtree.h +51 -0
  107. data/vendor/repo.or.cz/nasm/include/rdoff.h +169 -0
  108. data/vendor/repo.or.cz/nasm/include/saa.h +94 -0
  109. data/vendor/repo.or.cz/nasm/include/strlist.h +55 -0
  110. data/vendor/repo.or.cz/nasm/include/tables.h +70 -0
  111. data/vendor/repo.or.cz/nasm/include/ver.h +47 -0
  112. data/vendor/repo.or.cz/nasm/install-sh +250 -0
  113. data/vendor/repo.or.cz/nasm/macros/altreg.mac +107 -0
  114. data/vendor/repo.or.cz/nasm/macros/fp.mac +54 -0
  115. data/vendor/repo.or.cz/nasm/macros/ifunc.mac +48 -0
  116. data/vendor/repo.or.cz/nasm/macros/macros.pl +294 -0
  117. data/vendor/repo.or.cz/nasm/macros/smartalign.mac +189 -0
  118. data/vendor/repo.or.cz/nasm/macros/standard.mac +226 -0
  119. data/vendor/repo.or.cz/nasm/misc/Doxyfile +752 -0
  120. data/vendor/repo.or.cz/nasm/misc/Nindent +18 -0
  121. data/vendor/repo.or.cz/nasm/misc/README +2 -0
  122. data/vendor/repo.or.cz/nasm/misc/c16.mac +82 -0
  123. data/vendor/repo.or.cz/nasm/misc/c32.mac +52 -0
  124. data/vendor/repo.or.cz/nasm/misc/crcgen.c +44 -0
  125. data/vendor/repo.or.cz/nasm/misc/exebin.mac +57 -0
  126. data/vendor/repo.or.cz/nasm/misc/exebin2.mac +114 -0
  127. data/vendor/repo.or.cz/nasm/misc/fmtinsns.pl +40 -0
  128. data/vendor/repo.or.cz/nasm/misc/genfma.pl +63 -0
  129. data/vendor/repo.or.cz/nasm/misc/hints.txt +26 -0
  130. data/vendor/repo.or.cz/nasm/misc/magic +6 -0
  131. data/vendor/repo.or.cz/nasm/misc/myC32.mac +121 -0
  132. data/vendor/repo.or.cz/nasm/misc/nasm.sl +320 -0
  133. data/vendor/repo.or.cz/nasm/misc/nasmstab +296 -0
  134. data/vendor/repo.or.cz/nasm/misc/omfdump.c +517 -0
  135. data/vendor/repo.or.cz/nasm/misc/pmw.bat +9 -0
  136. data/vendor/repo.or.cz/nasm/misc/proc32.ash +441 -0
  137. data/vendor/repo.or.cz/nasm/misc/scitech.mac +1223 -0
  138. data/vendor/repo.or.cz/nasm/misc/xcrcgen.c +80 -0
  139. data/vendor/repo.or.cz/nasm/nasm.spec.in +83 -0
  140. data/vendor/repo.or.cz/nasm/nasm.spec.sed +3 -0
  141. data/vendor/repo.or.cz/nasm/nasm.txt +306 -0
  142. data/vendor/repo.or.cz/nasm/nasmlib/badenum.c +43 -0
  143. data/vendor/repo.or.cz/nasm/nasmlib/bsi.c +77 -0
  144. data/vendor/repo.or.cz/nasm/nasmlib/crc64.c +189 -0
  145. data/vendor/repo.or.cz/nasm/nasmlib/file.c +259 -0
  146. data/vendor/repo.or.cz/nasm/nasmlib/file.h +128 -0
  147. data/vendor/repo.or.cz/nasm/nasmlib/filename.c +69 -0
  148. data/vendor/repo.or.cz/nasm/nasmlib/hashtbl.c +232 -0
  149. data/vendor/repo.or.cz/nasm/nasmlib/ilog2.c +168 -0
  150. data/vendor/repo.or.cz/nasm/nasmlib/malloc.c +108 -0
  151. data/vendor/repo.or.cz/nasm/nasmlib/md5c.c +247 -0
  152. data/vendor/repo.or.cz/nasm/nasmlib/mmap.c +139 -0
  153. data/vendor/repo.or.cz/nasm/nasmlib/path.c +186 -0
  154. data/vendor/repo.or.cz/nasm/nasmlib/perfhash.c +55 -0
  155. data/vendor/repo.or.cz/nasm/nasmlib/perfhash.pl +362 -0
  156. data/vendor/repo.or.cz/nasm/nasmlib/raa.c +173 -0
  157. data/vendor/repo.or.cz/nasm/nasmlib/rbtree.c +119 -0
  158. data/vendor/repo.or.cz/nasm/nasmlib/readnum.c +172 -0
  159. data/vendor/repo.or.cz/nasm/nasmlib/realpath.c +135 -0
  160. data/vendor/repo.or.cz/nasm/nasmlib/saa.c +431 -0
  161. data/vendor/repo.or.cz/nasm/nasmlib/srcfile.c +128 -0
  162. data/vendor/repo.or.cz/nasm/nasmlib/string.c +242 -0
  163. data/vendor/repo.or.cz/nasm/nasmlib/strlist.c +100 -0
  164. data/vendor/repo.or.cz/nasm/nasmlib/ver.c +51 -0
  165. data/vendor/repo.or.cz/nasm/nasmlib/zerobuf.c +42 -0
  166. data/vendor/repo.or.cz/nasm/ndisasm.txt +94 -0
  167. data/vendor/repo.or.cz/nasm/nsis/NASMMultiUser.nsh +478 -0
  168. data/vendor/repo.or.cz/nasm/nsis/getpearch.pl +76 -0
  169. data/vendor/repo.or.cz/nasm/nsis/nasm-un.ico +0 -0
  170. data/vendor/repo.or.cz/nasm/nsis/nasm.ico +0 -0
  171. data/vendor/repo.or.cz/nasm/nsis/nasm.nsi +241 -0
  172. data/vendor/repo.or.cz/nasm/output/codeview.c +814 -0
  173. data/vendor/repo.or.cz/nasm/output/dwarf.h +566 -0
  174. data/vendor/repo.or.cz/nasm/output/elf.h +537 -0
  175. data/vendor/repo.or.cz/nasm/output/legacy.c +112 -0
  176. data/vendor/repo.or.cz/nasm/output/nulldbg.c +93 -0
  177. data/vendor/repo.or.cz/nasm/output/nullout.c +51 -0
  178. data/vendor/repo.or.cz/nasm/output/outaout.c +954 -0
  179. data/vendor/repo.or.cz/nasm/output/outaout.mac +37 -0
  180. data/vendor/repo.or.cz/nasm/output/outas86.c +650 -0
  181. data/vendor/repo.or.cz/nasm/output/outas86.mac +37 -0
  182. data/vendor/repo.or.cz/nasm/output/outbin.c +1713 -0
  183. data/vendor/repo.or.cz/nasm/output/outbin.mac +40 -0
  184. data/vendor/repo.or.cz/nasm/output/outcoff.c +1242 -0
  185. data/vendor/repo.or.cz/nasm/output/outcoff.mac +43 -0
  186. data/vendor/repo.or.cz/nasm/output/outdbg.c +425 -0
  187. data/vendor/repo.or.cz/nasm/output/outelf.c +3370 -0
  188. data/vendor/repo.or.cz/nasm/output/outelf.h +156 -0
  189. data/vendor/repo.or.cz/nasm/output/outelf.mac +41 -0
  190. data/vendor/repo.or.cz/nasm/output/outform.c +120 -0
  191. data/vendor/repo.or.cz/nasm/output/outform.h +379 -0
  192. data/vendor/repo.or.cz/nasm/output/outieee.c +1528 -0
  193. data/vendor/repo.or.cz/nasm/output/outlib.c +58 -0
  194. data/vendor/repo.or.cz/nasm/output/outlib.h +63 -0
  195. data/vendor/repo.or.cz/nasm/output/outmacho.c +2387 -0
  196. data/vendor/repo.or.cz/nasm/output/outmacho.mac +49 -0
  197. data/vendor/repo.or.cz/nasm/output/outobj.c +2725 -0
  198. data/vendor/repo.or.cz/nasm/output/outobj.mac +49 -0
  199. data/vendor/repo.or.cz/nasm/output/outrdf.mac +40 -0
  200. data/vendor/repo.or.cz/nasm/output/outrdf2.c +791 -0
  201. data/vendor/repo.or.cz/nasm/output/outrdf2.mac +43 -0
  202. data/vendor/repo.or.cz/nasm/output/pecoff.h +532 -0
  203. data/vendor/repo.or.cz/nasm/output/stabs.h +144 -0
  204. data/vendor/repo.or.cz/nasm/perllib/crc64.ph +158 -0
  205. data/vendor/repo.or.cz/nasm/perllib/gensv.pl +34 -0
  206. data/vendor/repo.or.cz/nasm/perllib/phash.ph +200 -0
  207. data/vendor/repo.or.cz/nasm/perllib/random_sv_vectors.ph +67 -0
  208. data/vendor/repo.or.cz/nasm/rdoff/README +185 -0
  209. data/vendor/repo.or.cz/nasm/rdoff/collectn.c +44 -0
  210. data/vendor/repo.or.cz/nasm/rdoff/collectn.h +22 -0
  211. data/vendor/repo.or.cz/nasm/rdoff/doc/Makefile +37 -0
  212. data/vendor/repo.or.cz/nasm/rdoff/doc/rdoff.texi +137 -0
  213. data/vendor/repo.or.cz/nasm/rdoff/doc/v1-v2.txt +62 -0
  214. data/vendor/repo.or.cz/nasm/rdoff/hash.c +122 -0
  215. data/vendor/repo.or.cz/nasm/rdoff/hash.h +17 -0
  216. data/vendor/repo.or.cz/nasm/rdoff/ldrdf.1 +41 -0
  217. data/vendor/repo.or.cz/nasm/rdoff/ldrdf.c +1395 -0
  218. data/vendor/repo.or.cz/nasm/rdoff/ldsegs.h +59 -0
  219. data/vendor/repo.or.cz/nasm/rdoff/rdf2bin.1 +65 -0
  220. data/vendor/repo.or.cz/nasm/rdoff/rdf2bin.c +431 -0
  221. data/vendor/repo.or.cz/nasm/rdoff/rdf2com.1 +1 -0
  222. data/vendor/repo.or.cz/nasm/rdoff/rdf2ihx.1 +1 -0
  223. data/vendor/repo.or.cz/nasm/rdoff/rdf2ith.1 +1 -0
  224. data/vendor/repo.or.cz/nasm/rdoff/rdf2srec.1 +1 -0
  225. data/vendor/repo.or.cz/nasm/rdoff/rdfdump.1 +24 -0
  226. data/vendor/repo.or.cz/nasm/rdoff/rdfdump.c +347 -0
  227. data/vendor/repo.or.cz/nasm/rdoff/rdflib.1 +39 -0
  228. data/vendor/repo.or.cz/nasm/rdoff/rdflib.c +434 -0
  229. data/vendor/repo.or.cz/nasm/rdoff/rdfload.c +213 -0
  230. data/vendor/repo.or.cz/nasm/rdoff/rdfload.h +29 -0
  231. data/vendor/repo.or.cz/nasm/rdoff/rdfutils.h +165 -0
  232. data/vendor/repo.or.cz/nasm/rdoff/rdlar.c +492 -0
  233. data/vendor/repo.or.cz/nasm/rdoff/rdlar.h +34 -0
  234. data/vendor/repo.or.cz/nasm/rdoff/rdlib.c +290 -0
  235. data/vendor/repo.or.cz/nasm/rdoff/rdlib.h +62 -0
  236. data/vendor/repo.or.cz/nasm/rdoff/rdoff.c +621 -0
  237. data/vendor/repo.or.cz/nasm/rdoff/rdx.1 +21 -0
  238. data/vendor/repo.or.cz/nasm/rdoff/rdx.c +90 -0
  239. data/vendor/repo.or.cz/nasm/rdoff/segtab.c +172 -0
  240. data/vendor/repo.or.cz/nasm/rdoff/segtab.h +45 -0
  241. data/vendor/repo.or.cz/nasm/rdoff/symtab.c +159 -0
  242. data/vendor/repo.or.cz/nasm/rdoff/symtab.h +55 -0
  243. data/vendor/repo.or.cz/nasm/rdoff/test/Makefile +10 -0
  244. data/vendor/repo.or.cz/nasm/rdoff/test/makelib.sh +14 -0
  245. data/vendor/repo.or.cz/nasm/rdoff/test/rdfseg.asm +20 -0
  246. data/vendor/repo.or.cz/nasm/rdoff/test/rdfseg2.asm +12 -0
  247. data/vendor/repo.or.cz/nasm/rdoff/test/rdftest1.asm +54 -0
  248. data/vendor/repo.or.cz/nasm/rdoff/test/rdftest2.asm +33 -0
  249. data/vendor/repo.or.cz/nasm/rdoff/test/rdtlib.asm +48 -0
  250. data/vendor/repo.or.cz/nasm/rdoff/test/rdtmain.asm +47 -0
  251. data/vendor/repo.or.cz/nasm/rdoff/test/testlib.asm +18 -0
  252. data/vendor/repo.or.cz/nasm/stdlib/snprintf.c +29 -0
  253. data/vendor/repo.or.cz/nasm/stdlib/strlcpy.c +51 -0
  254. data/vendor/repo.or.cz/nasm/stdlib/strnlen.c +46 -0
  255. data/vendor/repo.or.cz/nasm/stdlib/vsnprintf.c +51 -0
  256. data/vendor/repo.or.cz/nasm/test/Makefile +106 -0
  257. data/vendor/repo.or.cz/nasm/test/_file_.asm +5 -0
  258. data/vendor/repo.or.cz/nasm/test/_version.asm +2 -0
  259. data/vendor/repo.or.cz/nasm/test/a32offs.asm +9 -0
  260. data/vendor/repo.or.cz/nasm/test/absolute.asm +40 -0
  261. data/vendor/repo.or.cz/nasm/test/addr64x.asm +18 -0
  262. data/vendor/repo.or.cz/nasm/test/align13.asm +19 -0
  263. data/vendor/repo.or.cz/nasm/test/align13s.asm +20 -0
  264. data/vendor/repo.or.cz/nasm/test/alonesym-obj.asm +166 -0
  265. data/vendor/repo.or.cz/nasm/test/andbyte.asm +15 -0
  266. data/vendor/repo.or.cz/nasm/test/aoutso.asm +99 -0
  267. data/vendor/repo.or.cz/nasm/test/aouttest.asm +86 -0
  268. data/vendor/repo.or.cz/nasm/test/aouttest.c +36 -0
  269. data/vendor/repo.or.cz/nasm/test/avx.asm +46 -0
  270. data/vendor/repo.or.cz/nasm/test/avx005.asm +529 -0
  271. data/vendor/repo.or.cz/nasm/test/avx2.asm +1608 -0
  272. data/vendor/repo.or.cz/nasm/test/avx512cd.asm +106 -0
  273. data/vendor/repo.or.cz/nasm/test/avx512er.asm +144 -0
  274. data/vendor/repo.or.cz/nasm/test/avx512f.asm +7000 -0
  275. data/vendor/repo.or.cz/nasm/test/avx512pf.asm +88 -0
  276. data/vendor/repo.or.cz/nasm/test/bcd.asm +23 -0
  277. data/vendor/repo.or.cz/nasm/test/binexe.asm +35 -0
  278. data/vendor/repo.or.cz/nasm/test/bintest.asm +59 -0
  279. data/vendor/repo.or.cz/nasm/test/bisect.sh +22 -0
  280. data/vendor/repo.or.cz/nasm/test/br1879590.asm +25 -0
  281. data/vendor/repo.or.cz/nasm/test/br2003451.asm +17 -0
  282. data/vendor/repo.or.cz/nasm/test/br2030823.asm +7 -0
  283. data/vendor/repo.or.cz/nasm/test/br2148476.asm +221 -0
  284. data/vendor/repo.or.cz/nasm/test/br2222615.asm +19 -0
  285. data/vendor/repo.or.cz/nasm/test/br2496848.asm +42 -0
  286. data/vendor/repo.or.cz/nasm/test/br3005117.asm +26 -0
  287. data/vendor/repo.or.cz/nasm/test/br3026808.asm +20 -0
  288. data/vendor/repo.or.cz/nasm/test/br3028880.asm +8 -0
  289. data/vendor/repo.or.cz/nasm/test/br3041451.asm +59 -0
  290. data/vendor/repo.or.cz/nasm/test/br3058845.asm +14 -0
  291. data/vendor/repo.or.cz/nasm/test/br3066383.asm +70 -0
  292. data/vendor/repo.or.cz/nasm/test/br3074517.asm +12 -0
  293. data/vendor/repo.or.cz/nasm/test/br3092924.asm +25 -0
  294. data/vendor/repo.or.cz/nasm/test/br3104312.asm +11 -0
  295. data/vendor/repo.or.cz/nasm/test/br3109604.asm +9 -0
  296. data/vendor/repo.or.cz/nasm/test/br3174983.asm +9 -0
  297. data/vendor/repo.or.cz/nasm/test/br3187743.asm +7 -0
  298. data/vendor/repo.or.cz/nasm/test/br3189064.asm +7 -0
  299. data/vendor/repo.or.cz/nasm/test/br3200749.asm +9 -0
  300. data/vendor/repo.or.cz/nasm/test/br3385573.asm +11 -0
  301. data/vendor/repo.or.cz/nasm/test/br3392252.asm +43 -0
  302. data/vendor/repo.or.cz/nasm/test/br3392259.asm +8 -0
  303. data/vendor/repo.or.cz/nasm/test/br3392363.asm +4 -0
  304. data/vendor/repo.or.cz/nasm/test/br3392392.asm +16 -0
  305. data/vendor/repo.or.cz/nasm/test/br3392396.asm +5 -0
  306. data/vendor/repo.or.cz/nasm/test/br3392411.asm +22 -0
  307. data/vendor/repo.or.cz/nasm/test/br3392418.asm +3 -0
  308. data/vendor/repo.or.cz/nasm/test/br3392439.asm +25 -0
  309. data/vendor/repo.or.cz/nasm/test/br3392442.asm +6 -0
  310. data/vendor/repo.or.cz/nasm/test/br560575.asm +17 -0
  311. data/vendor/repo.or.cz/nasm/test/br560873.asm +27 -0
  312. data/vendor/repo.or.cz/nasm/test/br890790.asm +7 -0
  313. data/vendor/repo.or.cz/nasm/test/br890790_i.asm +1 -0
  314. data/vendor/repo.or.cz/nasm/test/br978756.asm +7 -0
  315. data/vendor/repo.or.cz/nasm/test/changed.asm +383 -0
  316. data/vendor/repo.or.cz/nasm/test/cofftest.asm +85 -0
  317. data/vendor/repo.or.cz/nasm/test/cofftest.c +35 -0
  318. data/vendor/repo.or.cz/nasm/test/crc32.asm +37 -0
  319. data/vendor/repo.or.cz/nasm/test/cv8struc.asm +14 -0
  320. data/vendor/repo.or.cz/nasm/test/dtbcd.asm +72 -0
  321. data/vendor/repo.or.cz/nasm/test/elf64so.asm +118 -0
  322. data/vendor/repo.or.cz/nasm/test/elfso.asm +100 -0
  323. data/vendor/repo.or.cz/nasm/test/elftest.asm +87 -0
  324. data/vendor/repo.or.cz/nasm/test/elftest.c +38 -0
  325. data/vendor/repo.or.cz/nasm/test/elftest64.c +43 -0
  326. data/vendor/repo.or.cz/nasm/test/elif.asm +39 -0
  327. data/vendor/repo.or.cz/nasm/test/expimp.asm +90 -0
  328. data/vendor/repo.or.cz/nasm/test/far64.asm +10 -0
  329. data/vendor/repo.or.cz/nasm/test/float.asm +186 -0
  330. data/vendor/repo.or.cz/nasm/test/float8.asm +135 -0
  331. data/vendor/repo.or.cz/nasm/test/floatb.asm +35 -0
  332. data/vendor/repo.or.cz/nasm/test/floatexp.asm +382 -0
  333. data/vendor/repo.or.cz/nasm/test/floatize.asm +19 -0
  334. data/vendor/repo.or.cz/nasm/test/floattest.asm +28 -0
  335. data/vendor/repo.or.cz/nasm/test/floatx.asm +525 -0
  336. data/vendor/repo.or.cz/nasm/test/fpu.asm +127 -0
  337. data/vendor/repo.or.cz/nasm/test/fwdopt.asm +133 -0
  338. data/vendor/repo.or.cz/nasm/test/fwdoptpp.asm +150 -0
  339. data/vendor/repo.or.cz/nasm/test/gas2nasm.py +104 -0
  340. data/vendor/repo.or.cz/nasm/test/gather.asm +11 -0
  341. data/vendor/repo.or.cz/nasm/test/gotoff64.asm +25 -0
  342. data/vendor/repo.or.cz/nasm/test/hexfp.asm +25 -0
  343. data/vendor/repo.or.cz/nasm/test/hle.asm +19 -0
  344. data/vendor/repo.or.cz/nasm/test/ifelse.asm +46 -0
  345. data/vendor/repo.or.cz/nasm/test/ifenv.asm +31 -0
  346. data/vendor/repo.or.cz/nasm/test/ifmacro.asm +413 -0
  347. data/vendor/repo.or.cz/nasm/test/iftoken.asm +317 -0
  348. data/vendor/repo.or.cz/nasm/test/iftoken.pl +32 -0
  349. data/vendor/repo.or.cz/nasm/test/ilog2.asm +271 -0
  350. data/vendor/repo.or.cz/nasm/test/imacro.asm +8 -0
  351. data/vendor/repo.or.cz/nasm/test/imm.asm +23 -0
  352. data/vendor/repo.or.cz/nasm/test/imm64.asm +61 -0
  353. data/vendor/repo.or.cz/nasm/test/immwarn.asm +91 -0
  354. data/vendor/repo.or.cz/nasm/test/imul.asm +117 -0
  355. data/vendor/repo.or.cz/nasm/test/inc1.asm +6 -0
  356. data/vendor/repo.or.cz/nasm/test/inc2.asm +8 -0
  357. data/vendor/repo.or.cz/nasm/test/incbin.asm +7 -0
  358. data/vendor/repo.or.cz/nasm/test/incbin.data +2 -0
  359. data/vendor/repo.or.cz/nasm/test/inctest.asm +15 -0
  360. data/vendor/repo.or.cz/nasm/test/insnlbl.asm +12 -0
  361. data/vendor/repo.or.cz/nasm/test/invlpga.asm +11 -0
  362. data/vendor/repo.or.cz/nasm/test/jmp64.asm +19 -0
  363. data/vendor/repo.or.cz/nasm/test/lar_lsl.asm +124 -0
  364. data/vendor/repo.or.cz/nasm/test/larlsl.asm +23 -0
  365. data/vendor/repo.or.cz/nasm/test/lnxhello.asm +54 -0
  366. data/vendor/repo.or.cz/nasm/test/local.asm +19 -0
  367. data/vendor/repo.or.cz/nasm/test/loopoffs.asm +12 -0
  368. data/vendor/repo.or.cz/nasm/test/lwp.asm +213 -0
  369. data/vendor/repo.or.cz/nasm/test/macro-defaults.asm +64 -0
  370. data/vendor/repo.or.cz/nasm/test/macroerr.asm +12 -0
  371. data/vendor/repo.or.cz/nasm/test/macroerr.inc +3 -0
  372. data/vendor/repo.or.cz/nasm/test/mmxsize.asm +38 -0
  373. data/vendor/repo.or.cz/nasm/test/movd.asm +12 -0
  374. data/vendor/repo.or.cz/nasm/test/movd64.asm +15 -0
  375. data/vendor/repo.or.cz/nasm/test/movimm.asm +28 -0
  376. data/vendor/repo.or.cz/nasm/test/movnti.asm +10 -0
  377. data/vendor/repo.or.cz/nasm/test/mpx-64.asm +120 -0
  378. data/vendor/repo.or.cz/nasm/test/mpx.asm +89 -0
  379. data/vendor/repo.or.cz/nasm/test/multisection.asm +96 -0
  380. data/vendor/repo.or.cz/nasm/test/nasmformat.asm +17 -0
  381. data/vendor/repo.or.cz/nasm/test/new +9 -0
  382. data/vendor/repo.or.cz/nasm/test/newrdwr.asm +24 -0
  383. data/vendor/repo.or.cz/nasm/test/nop.asm +17 -0
  384. data/vendor/repo.or.cz/nasm/test/nullfile.asm +4 -0
  385. data/vendor/repo.or.cz/nasm/test/objexe.asm +30 -0
  386. data/vendor/repo.or.cz/nasm/test/objlink.c +33 -0
  387. data/vendor/repo.or.cz/nasm/test/objtest.asm +85 -0
  388. data/vendor/repo.or.cz/nasm/test/optimization.asm +104 -0
  389. data/vendor/repo.or.cz/nasm/test/org.asm +18 -0
  390. data/vendor/repo.or.cz/nasm/test/paste.asm +12 -0
  391. data/vendor/repo.or.cz/nasm/test/pcrel.asm +52 -0
  392. data/vendor/repo.or.cz/nasm/test/perf/label.pl +18 -0
  393. data/vendor/repo.or.cz/nasm/test/perf/macro.pl +18 -0
  394. data/vendor/repo.or.cz/nasm/test/perf/token.pl +23 -0
  395. data/vendor/repo.or.cz/nasm/test/performtest.pl +192 -0
  396. data/vendor/repo.or.cz/nasm/test/pextrw.asm +3 -0
  397. data/vendor/repo.or.cz/nasm/test/pinsr16.asm +53 -0
  398. data/vendor/repo.or.cz/nasm/test/pinsr32.asm +53 -0
  399. data/vendor/repo.or.cz/nasm/test/pinsr64.asm +68 -0
  400. data/vendor/repo.or.cz/nasm/test/popcnt.asm +32 -0
  401. data/vendor/repo.or.cz/nasm/test/ppindirect.asm +42 -0
  402. data/vendor/repo.or.cz/nasm/test/pragma.asm +12 -0
  403. data/vendor/repo.or.cz/nasm/test/prefix66.asm +28 -0
  404. data/vendor/repo.or.cz/nasm/test/ptr.asm +4 -0
  405. data/vendor/repo.or.cz/nasm/test/pushseg.asm +17 -0
  406. data/vendor/repo.or.cz/nasm/test/r13.asm +15 -0
  407. data/vendor/repo.or.cz/nasm/test/radix.asm +54 -0
  408. data/vendor/repo.or.cz/nasm/test/rdpid.asm +21 -0
  409. data/vendor/repo.or.cz/nasm/test/reldef.asm +57 -0
  410. data/vendor/repo.or.cz/nasm/test/relocs.asm +20 -0
  411. data/vendor/repo.or.cz/nasm/test/riprel.asm +5357 -0
  412. data/vendor/repo.or.cz/nasm/test/riprel.pl +29 -0
  413. data/vendor/repo.or.cz/nasm/test/riprel2.asm +11 -0
  414. data/vendor/repo.or.cz/nasm/test/sha-64.asm +30 -0
  415. data/vendor/repo.or.cz/nasm/test/sha.asm +31 -0
  416. data/vendor/repo.or.cz/nasm/test/smartalign16.asm +36 -0
  417. data/vendor/repo.or.cz/nasm/test/smartalign32.asm +36 -0
  418. data/vendor/repo.or.cz/nasm/test/smartalign64.asm +36 -0
  419. data/vendor/repo.or.cz/nasm/test/splitea.asm +11 -0
  420. data/vendor/repo.or.cz/nasm/test/sreg.asm +65 -0
  421. data/vendor/repo.or.cz/nasm/test/strlen.asm +5 -0
  422. data/vendor/repo.or.cz/nasm/test/struc.asm +33 -0
  423. data/vendor/repo.or.cz/nasm/test/test67.asm +38 -0
  424. data/vendor/repo.or.cz/nasm/test/testdos.asm +13 -0
  425. data/vendor/repo.or.cz/nasm/test/testnos3.asm +973 -0
  426. data/vendor/repo.or.cz/nasm/test/time.asm +11 -0
  427. data/vendor/repo.or.cz/nasm/test/times.asm +21 -0
  428. data/vendor/repo.or.cz/nasm/test/timesneg.asm +3 -0
  429. data/vendor/repo.or.cz/nasm/test/tmap.nas +1447 -0
  430. data/vendor/repo.or.cz/nasm/test/uscore.asm +15 -0
  431. data/vendor/repo.or.cz/nasm/test/utf.asm +82 -0
  432. data/vendor/repo.or.cz/nasm/test/vaesenc.asm +22 -0
  433. data/vendor/repo.or.cz/nasm/test/vex.asm +9 -0
  434. data/vendor/repo.or.cz/nasm/test/vgather.asm +76 -0
  435. data/vendor/repo.or.cz/nasm/test/vmread.asm +26 -0
  436. data/vendor/repo.or.cz/nasm/test/weirdpaste.asm +29 -0
  437. data/vendor/repo.or.cz/nasm/test/xchg.asm +96 -0
  438. data/vendor/repo.or.cz/nasm/test/xcrypt.asm +24 -0
  439. data/vendor/repo.or.cz/nasm/test/xmm0.asm +12 -0
  440. data/vendor/repo.or.cz/nasm/test/zerobyte.asm +22 -0
  441. data/vendor/repo.or.cz/nasm/tools/cleanfile +176 -0
  442. data/vendor/repo.or.cz/nasm/tools/cleanpatch +258 -0
  443. data/vendor/repo.or.cz/nasm/tools/mkdep.pl +261 -0
  444. data/vendor/repo.or.cz/nasm/tools/release +105 -0
  445. data/vendor/repo.or.cz/nasm/tools/syncfiles.pl +137 -0
  446. data/vendor/repo.or.cz/nasm/tools/tag-release +58 -0
  447. data/vendor/repo.or.cz/nasm/version +1 -0
  448. data/vendor/repo.or.cz/nasm/version.pl +189 -0
  449. data/vendor/repo.or.cz/nasm/x86/disp8.c +131 -0
  450. data/vendor/repo.or.cz/nasm/x86/insns-iflags.ph +280 -0
  451. data/vendor/repo.or.cz/nasm/x86/insns.dat +5371 -0
  452. data/vendor/repo.or.cz/nasm/x86/insns.pl +1043 -0
  453. data/vendor/repo.or.cz/nasm/x86/regs.dat +138 -0
  454. data/vendor/repo.or.cz/nasm/x86/regs.pl +204 -0
  455. metadata +520 -0
@@ -0,0 +1,108 @@
1
+ /* ----------------------------------------------------------------------- *
2
+ *
3
+ * Copyright 1996-2016 The NASM Authors - All Rights Reserved
4
+ * See the file AUTHORS included with the NASM distribution for
5
+ * the specific copyright holders.
6
+ *
7
+ * Redistribution and use in source and binary forms, with or without
8
+ * modification, are permitted provided that the following
9
+ * conditions are met:
10
+ *
11
+ * * Redistributions of source code must retain the above copyright
12
+ * notice, this list of conditions and the following disclaimer.
13
+ * * Redistributions in binary form must reproduce the above
14
+ * copyright notice, this list of conditions and the following
15
+ * disclaimer in the documentation and/or other materials provided
16
+ * with the distribution.
17
+ *
18
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
19
+ * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
20
+ * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
21
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
22
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
23
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
24
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
25
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
26
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
27
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
28
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
29
+ * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
30
+ * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31
+ *
32
+ * ----------------------------------------------------------------------- */
33
+
34
+ /*
35
+ * nasmlib.c library routines for the Netwide Assembler
36
+ */
37
+
38
+ #include "compiler.h"
39
+
40
+ #include <stdlib.h>
41
+
42
+ #include "nasmlib.h"
43
+ #include "error.h"
44
+
45
+ void *nasm_malloc(size_t size)
46
+ {
47
+ void *p = malloc(size);
48
+ if (!p)
49
+ nasm_fatal(ERR_NOFILE, "out of memory");
50
+ return p;
51
+ }
52
+
53
+ void *nasm_calloc(size_t size, size_t nelem)
54
+ {
55
+ void *p = calloc(size, nelem);
56
+ if (!p)
57
+ nasm_fatal(ERR_NOFILE, "out of memory");
58
+ return p;
59
+ }
60
+
61
+ void *nasm_zalloc(size_t size)
62
+ {
63
+ return nasm_calloc(size, 1);
64
+ }
65
+
66
+ void *nasm_realloc(void *q, size_t size)
67
+ {
68
+ void *p = q ? realloc(q, size) : malloc(size);
69
+ if (!p)
70
+ nasm_fatal(ERR_NOFILE, "out of memory");
71
+ return p;
72
+ }
73
+
74
+ void nasm_free(void *q)
75
+ {
76
+ if (q)
77
+ free(q);
78
+ }
79
+
80
+ char *nasm_strdup(const char *s)
81
+ {
82
+ char *p;
83
+ size_t size = strlen(s) + 1;
84
+
85
+ p = nasm_malloc(size);
86
+ return memcpy(p, s, size);
87
+ }
88
+
89
+ char *nasm_strndup(const char *s, size_t len)
90
+ {
91
+ char *p;
92
+
93
+ len = strnlen(s, len);
94
+ p = nasm_malloc(len+1);
95
+ p[len] = '\0';
96
+ return memcpy(p, s, len);
97
+ }
98
+
99
+ char *nasm_strcat(const char *one, const char *two)
100
+ {
101
+ char *rslt;
102
+ size_t l1 = strlen(one);
103
+ size_t l2 = strlen(two);
104
+ rslt = nasm_malloc(l1 + l2 + 1);
105
+ memcpy(rslt, one, l1);
106
+ memcpy(rslt + l1, two, l2+1);
107
+ return rslt;
108
+ }
@@ -0,0 +1,247 @@
1
+ /*
2
+ * This code implements the MD5 message-digest algorithm.
3
+ * The algorithm is due to Ron Rivest. This code was
4
+ * written by Colin Plumb in 1993, no copyright is claimed.
5
+ * This code is in the public domain; do with it what you wish.
6
+ *
7
+ * Equivalent code is available from RSA Data Security, Inc.
8
+ * This code has been tested against that, and is equivalent,
9
+ * except that you don't need to include two pages of legalese
10
+ * with every copy.
11
+ *
12
+ * To compute the message digest of a chunk of bytes, declare an
13
+ * MD5Context structure, pass it to MD5Init, call MD5Update as
14
+ * needed on buffers full of bytes, and then call MD5Final, which
15
+ * will fill a supplied 16-byte array with the digest.
16
+ */
17
+
18
+ #include "md5.h"
19
+ #include <string.h> /* for memcpy() */
20
+
21
+ #ifdef WORDS_LITTLEENDIAN
22
+ #define byteReverse(buf, len) /* Nothing */
23
+ #else
24
+ static void byteReverse(unsigned char *buf, unsigned longs);
25
+
26
+ /*
27
+ * Note: this code is harmless on little-endian machines.
28
+ */
29
+ static void byteReverse(unsigned char *buf, unsigned longs)
30
+ {
31
+ uint32_t t;
32
+ do {
33
+ t = (uint32_t) ((unsigned) buf[3] << 8 | buf[2]) << 16 |
34
+ ((unsigned) buf[1] << 8 | buf[0]);
35
+ *(uint32_t *) buf = t;
36
+ buf += 4;
37
+ } while (--longs);
38
+ }
39
+ #endif
40
+
41
+ /*
42
+ * Start MD5 accumulation. Set bit count to 0 and buffer to mysterious
43
+ * initialization constants.
44
+ */
45
+ void MD5Init(MD5_CTX *ctx)
46
+ {
47
+ ctx->buf[0] = 0x67452301;
48
+ ctx->buf[1] = 0xefcdab89;
49
+ ctx->buf[2] = 0x98badcfe;
50
+ ctx->buf[3] = 0x10325476;
51
+
52
+ ctx->bits[0] = 0;
53
+ ctx->bits[1] = 0;
54
+ }
55
+
56
+ /*
57
+ * Update context to reflect the concatenation of another buffer full
58
+ * of bytes.
59
+ */
60
+ void MD5Update(MD5_CTX *ctx, unsigned char const *buf, unsigned len)
61
+ {
62
+ uint32_t t;
63
+
64
+ /* Update bitcount */
65
+
66
+ t = ctx->bits[0];
67
+ if ((ctx->bits[0] = t + ((uint32_t) len << 3)) < t)
68
+ ctx->bits[1]++; /* Carry from low to high */
69
+ ctx->bits[1] += len >> 29;
70
+
71
+ t = (t >> 3) & 0x3f; /* Bytes already in shsInfo->data */
72
+
73
+ /* Handle any leading odd-sized chunks */
74
+
75
+ if (t) {
76
+ unsigned char *p = (unsigned char *) ctx->in + t;
77
+
78
+ t = 64 - t;
79
+ if (len < t) {
80
+ memcpy(p, buf, len);
81
+ return;
82
+ }
83
+ memcpy(p, buf, t);
84
+ byteReverse(ctx->in, 16);
85
+ MD5Transform(ctx->buf, (uint32_t *) ctx->in);
86
+ buf += t;
87
+ len -= t;
88
+ }
89
+ /* Process data in 64-byte chunks */
90
+
91
+ while (len >= 64) {
92
+ memcpy(ctx->in, buf, 64);
93
+ byteReverse(ctx->in, 16);
94
+ MD5Transform(ctx->buf, (uint32_t *) ctx->in);
95
+ buf += 64;
96
+ len -= 64;
97
+ }
98
+
99
+ /* Handle any remaining bytes of data. */
100
+
101
+ memcpy(ctx->in, buf, len);
102
+ }
103
+
104
+ /*
105
+ * Final wrapup - pad to 64-byte boundary with the bit pattern
106
+ * 1 0* (64-bit count of bits processed, MSB-first)
107
+ */
108
+ void MD5Final(unsigned char digest[16], MD5_CTX *ctx)
109
+ {
110
+ unsigned count;
111
+ unsigned char *p;
112
+
113
+ /* Compute number of bytes mod 64 */
114
+ count = (ctx->bits[0] >> 3) & 0x3F;
115
+
116
+ /* Set the first char of padding to 0x80. This is safe since there is
117
+ always at least one byte free */
118
+ p = ctx->in + count;
119
+ *p++ = 0x80;
120
+
121
+ /* Bytes of padding needed to make 64 bytes */
122
+ count = 64 - 1 - count;
123
+
124
+ /* Pad out to 56 mod 64 */
125
+ if (count < 8) {
126
+ /* Two lots of padding: Pad the first block to 64 bytes */
127
+ memset(p, 0, count);
128
+ byteReverse(ctx->in, 16);
129
+ MD5Transform(ctx->buf, (uint32_t *) ctx->in);
130
+
131
+ /* Now fill the next block with 56 bytes */
132
+ memset(ctx->in, 0, 56);
133
+ } else {
134
+ /* Pad block to 56 bytes */
135
+ memset(p, 0, count - 8);
136
+ }
137
+ byteReverse(ctx->in, 14);
138
+
139
+ /* Append length in bits and transform */
140
+ ((uint32_t *) ctx->in)[14] = ctx->bits[0];
141
+ ((uint32_t *) ctx->in)[15] = ctx->bits[1];
142
+
143
+ MD5Transform(ctx->buf, (uint32_t *) ctx->in);
144
+ byteReverse((unsigned char *) ctx->buf, 4);
145
+ memcpy(digest, ctx->buf, 16);
146
+ memset((char *) ctx, 0, sizeof(*ctx)); /* In case it's sensitive */
147
+ }
148
+
149
+ /* The four core functions - F1 is optimized somewhat */
150
+
151
+ /* #define F1(x, y, z) (x & y | ~x & z) */
152
+ #define F1(x, y, z) (z ^ (x & (y ^ z)))
153
+ #define F2(x, y, z) F1(z, x, y)
154
+ #define F3(x, y, z) (x ^ y ^ z)
155
+ #define F4(x, y, z) (y ^ (x | ~z))
156
+
157
+ /* This is the central step in the MD5 algorithm. */
158
+ #define MD5STEP(f, w, x, y, z, data, s) \
159
+ ( w += f(x, y, z) + data, w = w<<s | w>>(32-s), w += x )
160
+
161
+ /*
162
+ * The core of the MD5 algorithm, this alters an existing MD5 hash to
163
+ * reflect the addition of 16 longwords of new data. MD5Update blocks
164
+ * the data and converts bytes into longwords for this routine.
165
+ */
166
+ void MD5Transform(uint32_t buf[4], uint32_t const in[16])
167
+ {
168
+ register uint32_t a, b, c, d;
169
+
170
+ a = buf[0];
171
+ b = buf[1];
172
+ c = buf[2];
173
+ d = buf[3];
174
+
175
+ MD5STEP(F1, a, b, c, d, in[0] + 0xd76aa478, 7);
176
+ MD5STEP(F1, d, a, b, c, in[1] + 0xe8c7b756, 12);
177
+ MD5STEP(F1, c, d, a, b, in[2] + 0x242070db, 17);
178
+ MD5STEP(F1, b, c, d, a, in[3] + 0xc1bdceee, 22);
179
+ MD5STEP(F1, a, b, c, d, in[4] + 0xf57c0faf, 7);
180
+ MD5STEP(F1, d, a, b, c, in[5] + 0x4787c62a, 12);
181
+ MD5STEP(F1, c, d, a, b, in[6] + 0xa8304613, 17);
182
+ MD5STEP(F1, b, c, d, a, in[7] + 0xfd469501, 22);
183
+ MD5STEP(F1, a, b, c, d, in[8] + 0x698098d8, 7);
184
+ MD5STEP(F1, d, a, b, c, in[9] + 0x8b44f7af, 12);
185
+ MD5STEP(F1, c, d, a, b, in[10] + 0xffff5bb1, 17);
186
+ MD5STEP(F1, b, c, d, a, in[11] + 0x895cd7be, 22);
187
+ MD5STEP(F1, a, b, c, d, in[12] + 0x6b901122, 7);
188
+ MD5STEP(F1, d, a, b, c, in[13] + 0xfd987193, 12);
189
+ MD5STEP(F1, c, d, a, b, in[14] + 0xa679438e, 17);
190
+ MD5STEP(F1, b, c, d, a, in[15] + 0x49b40821, 22);
191
+
192
+ MD5STEP(F2, a, b, c, d, in[1] + 0xf61e2562, 5);
193
+ MD5STEP(F2, d, a, b, c, in[6] + 0xc040b340, 9);
194
+ MD5STEP(F2, c, d, a, b, in[11] + 0x265e5a51, 14);
195
+ MD5STEP(F2, b, c, d, a, in[0] + 0xe9b6c7aa, 20);
196
+ MD5STEP(F2, a, b, c, d, in[5] + 0xd62f105d, 5);
197
+ MD5STEP(F2, d, a, b, c, in[10] + 0x02441453, 9);
198
+ MD5STEP(F2, c, d, a, b, in[15] + 0xd8a1e681, 14);
199
+ MD5STEP(F2, b, c, d, a, in[4] + 0xe7d3fbc8, 20);
200
+ MD5STEP(F2, a, b, c, d, in[9] + 0x21e1cde6, 5);
201
+ MD5STEP(F2, d, a, b, c, in[14] + 0xc33707d6, 9);
202
+ MD5STEP(F2, c, d, a, b, in[3] + 0xf4d50d87, 14);
203
+ MD5STEP(F2, b, c, d, a, in[8] + 0x455a14ed, 20);
204
+ MD5STEP(F2, a, b, c, d, in[13] + 0xa9e3e905, 5);
205
+ MD5STEP(F2, d, a, b, c, in[2] + 0xfcefa3f8, 9);
206
+ MD5STEP(F2, c, d, a, b, in[7] + 0x676f02d9, 14);
207
+ MD5STEP(F2, b, c, d, a, in[12] + 0x8d2a4c8a, 20);
208
+
209
+ MD5STEP(F3, a, b, c, d, in[5] + 0xfffa3942, 4);
210
+ MD5STEP(F3, d, a, b, c, in[8] + 0x8771f681, 11);
211
+ MD5STEP(F3, c, d, a, b, in[11] + 0x6d9d6122, 16);
212
+ MD5STEP(F3, b, c, d, a, in[14] + 0xfde5380c, 23);
213
+ MD5STEP(F3, a, b, c, d, in[1] + 0xa4beea44, 4);
214
+ MD5STEP(F3, d, a, b, c, in[4] + 0x4bdecfa9, 11);
215
+ MD5STEP(F3, c, d, a, b, in[7] + 0xf6bb4b60, 16);
216
+ MD5STEP(F3, b, c, d, a, in[10] + 0xbebfbc70, 23);
217
+ MD5STEP(F3, a, b, c, d, in[13] + 0x289b7ec6, 4);
218
+ MD5STEP(F3, d, a, b, c, in[0] + 0xeaa127fa, 11);
219
+ MD5STEP(F3, c, d, a, b, in[3] + 0xd4ef3085, 16);
220
+ MD5STEP(F3, b, c, d, a, in[6] + 0x04881d05, 23);
221
+ MD5STEP(F3, a, b, c, d, in[9] + 0xd9d4d039, 4);
222
+ MD5STEP(F3, d, a, b, c, in[12] + 0xe6db99e5, 11);
223
+ MD5STEP(F3, c, d, a, b, in[15] + 0x1fa27cf8, 16);
224
+ MD5STEP(F3, b, c, d, a, in[2] + 0xc4ac5665, 23);
225
+
226
+ MD5STEP(F4, a, b, c, d, in[0] + 0xf4292244, 6);
227
+ MD5STEP(F4, d, a, b, c, in[7] + 0x432aff97, 10);
228
+ MD5STEP(F4, c, d, a, b, in[14] + 0xab9423a7, 15);
229
+ MD5STEP(F4, b, c, d, a, in[5] + 0xfc93a039, 21);
230
+ MD5STEP(F4, a, b, c, d, in[12] + 0x655b59c3, 6);
231
+ MD5STEP(F4, d, a, b, c, in[3] + 0x8f0ccc92, 10);
232
+ MD5STEP(F4, c, d, a, b, in[10] + 0xffeff47d, 15);
233
+ MD5STEP(F4, b, c, d, a, in[1] + 0x85845dd1, 21);
234
+ MD5STEP(F4, a, b, c, d, in[8] + 0x6fa87e4f, 6);
235
+ MD5STEP(F4, d, a, b, c, in[15] + 0xfe2ce6e0, 10);
236
+ MD5STEP(F4, c, d, a, b, in[6] + 0xa3014314, 15);
237
+ MD5STEP(F4, b, c, d, a, in[13] + 0x4e0811a1, 21);
238
+ MD5STEP(F4, a, b, c, d, in[4] + 0xf7537e82, 6);
239
+ MD5STEP(F4, d, a, b, c, in[11] + 0xbd3af235, 10);
240
+ MD5STEP(F4, c, d, a, b, in[2] + 0x2ad7d2bb, 15);
241
+ MD5STEP(F4, b, c, d, a, in[9] + 0xeb86d391, 21);
242
+
243
+ buf[0] += a;
244
+ buf[1] += b;
245
+ buf[2] += c;
246
+ buf[3] += d;
247
+ }
@@ -0,0 +1,139 @@
1
+ /* ----------------------------------------------------------------------- *
2
+ *
3
+ * Copyright 1996-2017 The NASM Authors - All Rights Reserved
4
+ * See the file AUTHORS included with the NASM distribution for
5
+ * the specific copyright holders.
6
+ *
7
+ * Redistribution and use in source and binary forms, with or without
8
+ * modification, are permitted provided that the following
9
+ * conditions are met:
10
+ *
11
+ * * Redistributions of source code must retain the above copyright
12
+ * notice, this list of conditions and the following disclaimer.
13
+ * * Redistributions in binary form must reproduce the above
14
+ * copyright notice, this list of conditions and the following
15
+ * disclaimer in the documentation and/or other materials provided
16
+ * with the distribution.
17
+ *
18
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
19
+ * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
20
+ * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
21
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
22
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
23
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
24
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
25
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
26
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
27
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
28
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
29
+ * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
30
+ * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31
+ *
32
+ * ----------------------------------------------------------------------- */
33
+
34
+ #include "file.h"
35
+
36
+ /* ----------------------------------------------------------------------- *
37
+ * Unix-style memory mapping, using mmap().
38
+ * ----------------------------------------------------------------------- */
39
+ #if defined(HAVE_FILENO) && defined(HAVE_MMAP)
40
+
41
+ /*
42
+ * System page size
43
+ */
44
+
45
+ /* File scope since not all compilers like static data in inline functions */
46
+ static size_t nasm_pagemask;
47
+
48
+ static size_t get_pagemask(void)
49
+ {
50
+ size_t ps = 0;
51
+
52
+ # if defined(HAVE_SYSCONF) && defined(_SC_PAGESIZE)
53
+ ps = sysconf(_SC_PAGESIZE);
54
+ # elif defined(HAVE_GETPAGESIZE)
55
+ ps = getpagesize();
56
+ # elif defined(PAGE_SIZE)
57
+ ps = PAGE_SIZE;
58
+ # endif
59
+
60
+ nasm_pagemask = ps = is_power2(ps) ? (ps - 1) : 0;
61
+ return ps;
62
+ }
63
+
64
+ static inline size_t pagemask(void)
65
+ {
66
+ size_t pm = nasm_pagemask;
67
+
68
+ if (unlikely(!pm))
69
+ return get_pagemask();
70
+
71
+ return pm;
72
+ }
73
+
74
+ /*
75
+ * Try to map an input file into memory
76
+ */
77
+ const void *nasm_map_file(FILE *fp, off_t start, off_t len)
78
+ {
79
+ const char *p;
80
+ off_t astart; /* Aligned start */
81
+ size_t salign; /* Amount of start adjustment */
82
+ size_t alen; /* Aligned length */
83
+ const size_t page_mask = pagemask();
84
+
85
+ if (unlikely(!page_mask))
86
+ return NULL; /* Page size undefined? */
87
+
88
+ if (unlikely(!len))
89
+ return NULL; /* Mapping nothing... */
90
+
91
+ if (unlikely(len != (off_t)(size_t)len))
92
+ return NULL; /* Address space insufficient */
93
+
94
+ astart = start & ~(off_t)page_mask;
95
+ salign = start - astart;
96
+ alen = (len + salign + page_mask) & ~page_mask;
97
+
98
+ p = mmap(NULL, alen, PROT_READ, MAP_SHARED, fileno(fp), astart);
99
+ return unlikely(p == MAP_FAILED) ? NULL : p + salign;
100
+ }
101
+
102
+ /*
103
+ * Unmap an input file
104
+ */
105
+ void nasm_unmap_file(const void *p, size_t len)
106
+ {
107
+ const size_t page_mask = pagemask();
108
+ uintptr_t astart;
109
+ size_t salign;
110
+ size_t alen;
111
+
112
+ if (unlikely(!page_mask))
113
+ return;
114
+
115
+ astart = (uintptr_t)p & ~(uintptr_t)page_mask;
116
+ salign = (uintptr_t)p - astart;
117
+ alen = (len + salign + page_mask) & ~page_mask;
118
+
119
+ munmap((void *)astart, alen);
120
+ }
121
+
122
+ /* ----------------------------------------------------------------------- *
123
+ * No memory map support at all
124
+ * XXX: Add a section with Windows support
125
+ * ----------------------------------------------------------------------- */
126
+ #else
127
+
128
+ const void *nasm_map_file(FILE *fp, off_t start, off_t len)
129
+ {
130
+ (void)fp; (void)start; (void)len;
131
+ return NULL;
132
+ }
133
+
134
+ void nasm_unmap_file(const void *p, size_t len)
135
+ {
136
+ (void)p; (void)len;
137
+ }
138
+
139
+ #endif