laag-nasm 2.13.03.2

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 (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