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,85 @@
1
+ ;Cannot be automatically tested because it differs every time,
2
+ ;I guess because of a date/time field.
3
+
4
+ ; test source file for assembling to COFF
5
+ ; build with (under DJGPP, for example):
6
+ ; nasm -f coff cofftest.asm
7
+ ; gcc -o cofftest cofftest.c cofftest.o
8
+
9
+ ; This file should test the following:
10
+ ; [1] Define and export a global text-section symbol
11
+ ; [2] Define and export a global data-section symbol
12
+ ; [3] Define and export a global BSS-section symbol
13
+ ; [4] Define a non-global text-section symbol
14
+ ; [5] Define a non-global data-section symbol
15
+ ; [6] Define a non-global BSS-section symbol
16
+ ; [7] Define a COMMON symbol
17
+ ; [8] Define a NASM local label
18
+ ; [9] Reference a NASM local label
19
+ ; [10] Import an external symbol
20
+ ; [11] Make a PC-relative call to an external symbol
21
+ ; [12] Reference a text-section symbol in the text section
22
+ ; [13] Reference a data-section symbol in the text section
23
+ ; [14] Reference a BSS-section symbol in the text section
24
+ ; [15] Reference a text-section symbol in the data section
25
+ ; [16] Reference a data-section symbol in the data section
26
+ ; [17] Reference a BSS-section symbol in the data section
27
+
28
+ BITS 32
29
+ GLOBAL _lrotate ; [1]
30
+ GLOBAL _greet ; [1]
31
+ GLOBAL _asmstr ; [2]
32
+ GLOBAL _textptr ; [2]
33
+ GLOBAL _selfptr ; [2]
34
+ GLOBAL _integer ; [3]
35
+ EXTERN _printf ; [10]
36
+ COMMON _commvar 4 ; [7]
37
+
38
+ SECTION .text
39
+
40
+ ; prototype: long lrotate(long x, int num);
41
+ _lrotate: ; [1]
42
+ push ebp
43
+ mov ebp,esp
44
+ mov eax,[ebp+8]
45
+ mov ecx,[ebp+12]
46
+ .label rol eax,1 ; [4] [8]
47
+ loop .label ; [9] [12]
48
+ mov esp,ebp
49
+ pop ebp
50
+ ret
51
+
52
+ ; prototype: void greet(void);
53
+ _greet mov eax,[_integer] ; [14]
54
+ inc eax
55
+ mov [localint],eax ; [14]
56
+ push dword [_commvar]
57
+ mov eax,[localptr] ; [13]
58
+ push dword [eax]
59
+ push dword [_integer] ; [1] [14]
60
+ push dword _printfstr ; [13]
61
+ call _printf ; [11]
62
+ add esp,16
63
+ ret
64
+
65
+ SECTION .data
66
+
67
+ ; a string
68
+ _asmstr db 'hello, world', 0 ; [2]
69
+
70
+ ; a string for Printf
71
+ _printfstr db "integer==%d, localint==%d, commvar=%d"
72
+ db 10, 0
73
+
74
+ ; some pointers
75
+ localptr dd localint ; [5] [17]
76
+ _textptr dd _greet ; [15]
77
+ _selfptr dd _selfptr ; [16]
78
+
79
+ SECTION .bss
80
+
81
+ ; an integer
82
+ _integer resd 1 ; [3]
83
+
84
+ ; a local integer
85
+ localint resd 1 ; [6]
@@ -0,0 +1,35 @@
1
+ /*
2
+ * test source file for assembling to COFF
3
+ * build with (under DJGPP, for example):
4
+ * nasm -f coff cofftest.asm
5
+ * gcc -o cofftest cofftest.c cofftest.o
6
+ */
7
+
8
+ #include <stdio.h>
9
+ #include <inttypes.h>
10
+
11
+ extern int lrotate(int32_t, int);
12
+ extern void greet(void);
13
+ extern int8_t asmstr[];
14
+ extern void *selfptr;
15
+ extern void *textptr;
16
+ extern int integer, commvar;
17
+
18
+ int main(void)
19
+ {
20
+
21
+ printf("Testing lrotate: should get 0x00400000, 0x00000001\n");
22
+ printf("lrotate(0x00040000, 4) = 0x%08lx\n", lrotate(0x40000, 4));
23
+ printf("lrotate(0x00040000, 14) = 0x%08lx\n", lrotate(0x40000, 14));
24
+
25
+ printf("This string should read `hello, world': `%s'\n", asmstr);
26
+
27
+ printf("The integers here should be 1234, 1235 and 4321:\n");
28
+ integer = 1234;
29
+ commvar = 4321;
30
+ greet();
31
+
32
+ printf("These pointers should be equal: %p and %p\n", &greet, textptr);
33
+
34
+ printf("So should these: %p and %p\n", selfptr, &selfptr);
35
+ }
@@ -0,0 +1,37 @@
1
+ ;Testname=test; Arguments=-fbin -ocrc32.bin; Files=stdout stderr crc32.bin
2
+
3
+ bits 16
4
+
5
+ crc32 eax,cl
6
+ crc32 eax,byte [di]
7
+ crc32 eax,cx
8
+ crc32 eax,word [di]
9
+ crc32 eax,ecx
10
+ crc32 eax,dword [di]
11
+
12
+ bits 32
13
+ align 16
14
+
15
+ crc32 eax,cl
16
+ crc32 eax,byte [edi]
17
+ crc32 eax,cx
18
+ crc32 eax,word [edi]
19
+ crc32 eax,ecx
20
+ crc32 eax,dword [edi]
21
+
22
+ bits 64
23
+ align 16
24
+
25
+ crc32 eax,cl
26
+ crc32 eax,byte [rdi]
27
+ crc32 eax,r9b
28
+ crc32 eax,cx
29
+ crc32 eax,word [rdi]
30
+ crc32 eax,ecx
31
+ crc32 eax,dword [rdi]
32
+ crc32 rax,cl
33
+ crc32 rax,byte [rdi]
34
+ crc32 rax,r9b
35
+ crc32 rax,rcx
36
+ crc32 rax,qword [rdi]
37
+ crc32 rax,r9
@@ -0,0 +1,14 @@
1
+ struc A_STRUC
2
+ ._a: resw 1
3
+ endstruc
4
+
5
+ a_struc:
6
+ istruc A_STRUC
7
+ at A_STRUC._a, dw 1
8
+ iend
9
+
10
+ section .data
11
+ foo:
12
+ dd 0x11111111
13
+ .bar:
14
+ dd 0x22222222
@@ -0,0 +1,72 @@
1
+ ;
2
+ ; This is a macro to generate packed BCD constants.
3
+ ; It is obsoleted by "dt" with a packed BCD value with a "p"
4
+ ; suffix, but it is included here as a rest of nested %rep.
5
+ ;
6
+ %macro dtbcd 1-*.nolist
7
+ %push dtbcd
8
+ %rep %0
9
+ %defstr %$abc %1
10
+ %substr %$sign %$abc 1
11
+ %if %$sign == '-'
12
+ %substr %$abc %$abc 2,-1
13
+ %xdefine %$sign 0x80
14
+ %elif %$sign == '+'
15
+ %substr %$abc %$abc 2,-1
16
+ %xdefine %$sign 0x00
17
+ %else
18
+ %xdefine %$sign 0x00
19
+ %endif
20
+ %strlen %$abclen %$abc
21
+ %defstr %$abclen_str %$abclen
22
+ %assign %$pos %$abclen
23
+ %assign %$bc 0
24
+ %assign %$ld -1
25
+ %rep %$abclen
26
+ %substr %$chr %$abc %$pos
27
+ %assign %$pos %$pos-1
28
+ %if %$chr >= '0' && %$chr <= '9'
29
+ %if %$ld < 0
30
+ %assign %$ld %$chr-'0'
31
+ %assign %$bc %$bc+1
32
+ %if %$bc > 9
33
+ %warning "too many digits in BCD constant"
34
+ %exitrep
35
+ %endif
36
+ %else
37
+ db %$ld+((%$chr-'0') << 4)
38
+ %assign %$ld -1
39
+ %endif
40
+ %elif %$chr == '_'
41
+ ; Do nothing...
42
+ %else
43
+ %error "invalid character in BCD constant"
44
+ %exitrep
45
+ %endif
46
+ %endrep
47
+ %if %$ld >= 0
48
+ db %$ld
49
+ %endif
50
+ %rep 9-%$bc
51
+ db 0
52
+ %endrep
53
+ db %$sign
54
+ %rotate 1
55
+ %endrep
56
+ %pop
57
+ %endmacro
58
+
59
+ dtbcd 123, -456, +789
60
+ dt 123p, -456p, +789p
61
+ dtbcd 765432109876543210
62
+ dt 765432109876543210p
63
+ dtbcd -765432109876543210
64
+ dt -765432109876543210p
65
+ dtbcd +765_432_109_876_543_210
66
+ dt +765_432_109_876_543_210p
67
+ dtbcd -765_432_109_876_543_210
68
+ dt -765_432_109_876_543_210p
69
+
70
+ ;; Both of these should warn...
71
+ dtbcd 8_765_432_109_876_543_210
72
+ dt 8_765_432_109_876_543_210p
@@ -0,0 +1,118 @@
1
+ ; test source file for assembling to ELF64 shared library
2
+ ; build with:
3
+ ; nasm -f elf64 elf64so.asm
4
+ ; ld -shared -o elf64so.so elf64so.o
5
+ ; test with:
6
+ ; gcc -o elf64so elftest64.c ./elf64so.so
7
+ ; ./elf64so
8
+
9
+ ; This file should test the following:
10
+ ; [1] Define and export a global text-section symbol
11
+ ; [2] Define and export a global data-section symbol
12
+ ; [3] Define and export a global BSS-section symbol
13
+ ; [4] Define a non-global text-section symbol
14
+ ; [5] Define a non-global data-section symbol
15
+ ; [6] Define a non-global BSS-section symbol
16
+ ; [7] Define a COMMON symbol
17
+ ; [8] Define a NASM local label
18
+ ; [9] Reference a NASM local label
19
+ ; [10] Import an external symbol
20
+ ; [11] Make a PC-relative call to an external symbol
21
+ ; [12] Reference a text-section symbol in the text section
22
+ ; [13] Reference a data-section symbol in the text section
23
+ ; [14] Reference a BSS-section symbol in the text section
24
+ ; [15] Reference a text-section symbol in the data section
25
+ ; [16] Reference a data-section symbol in the data section
26
+ ; [17] Reference a BSS-section symbol in the data section
27
+
28
+ BITS 64
29
+ GLOBAL lrotate:function ; [1]
30
+ GLOBAL greet_s:function ; [1]
31
+ GLOBAL greet_m:function ; [1]
32
+ GLOBAL asmstr:data asmstr.end-asmstr ; [2]
33
+ GLOBAL textptr:data 8 ; [2]
34
+ GLOBAL selfptr:data 8 ; [2]
35
+ GLOBAL useless:data 8 ; [3]
36
+ GLOBAL integer:data 8 ; [3]
37
+ EXTERN printf ; [10]
38
+ COMMON commvar 8:8 ; [7]
39
+ EXTERN _GLOBAL_OFFSET_TABLE_
40
+
41
+ SECTION .text
42
+
43
+ ; prototype: long lrotate(long x, int num);
44
+ lrotate: ; [1]
45
+ push rbp
46
+ mov rbp,rsp
47
+ mov rax,rdi
48
+ mov rcx,rsi
49
+ .label rol rax,1 ; [4] [8]
50
+ loop .label ; [9] [12]
51
+ mov rsp,rbp
52
+ pop rbp
53
+ ret
54
+
55
+ ;; prototype: void greet_*(void);
56
+ ;;
57
+ ;; Arguments are: rdi - rsi - rdx - rcx - r8 - r9
58
+ ;; Registers: rbx, rbp, r12-r15 are saved
59
+ ;; greet_s() is Small PIC model, greet_m() is Medium PIC model
60
+ ;; (Large model cannot be linked with other code)
61
+ ;;
62
+ greet_s:
63
+ ;; This instruction is useless, this is only a test...
64
+ cmp qword [rel integer wrt ..got],0
65
+ mov rax,[rel commvar wrt ..got] ; &commvar
66
+ mov rcx,[rax] ; commvar
67
+ mov rax,[rel integer wrt ..got] ; &integer
68
+ mov rsi,[rax]
69
+ lea rdx,[rsi+1]
70
+ mov [rel localint],rdx ; localint = integer+1
71
+ mov rax,[rel localptr] ; localptr
72
+ mov rdx,[rax] ; *localptr = localint
73
+ lea rdi,[rel printfstr]
74
+ xor eax,eax ; No fp arguments
75
+ jmp printf wrt ..plt ; [10]
76
+
77
+ greet_m:
78
+ push r15 ; Used by convention...
79
+ lea r15,[rel _GLOBAL_OFFSET_TABLE_]
80
+ mov rax,[rel commvar wrt ..got] ; &commvar
81
+ mov rcx,[rax] ; commvar
82
+ mov rax,[rel integer wrt ..got] ; &integer
83
+ mov rsi,[rax]
84
+ lea rdx,[rsi+1]
85
+ mov rax,localint wrt ..gotoff ; &localint - r15
86
+ mov [rax+r15],rdx ; localint = integer+1
87
+ mov rax,localptr wrt ..gotoff ; &localptr - r15
88
+ mov rax,[rax+r15] ; localptr
89
+ mov rdx,[rax] ; *localptr = localint
90
+ mov rdi,printfstr wrt ..gotoff ; &printfstr - r15
91
+ add rdi,r15 ; &printfstr
92
+ xor eax,eax ; No fp arguments
93
+ pop r15
94
+ jmp printf wrt ..plt ; [10]
95
+
96
+ SECTION .data
97
+
98
+ ; a string
99
+ asmstr db 'hello, world', 0 ; [2]
100
+ .end:
101
+
102
+ ; a string for Printf
103
+ printfstr db "integer=%ld, localint=%ld, commvar=%ld", 10, 0
104
+
105
+ ; some pointers
106
+ localptr dq localint ; [5] [17]
107
+ textptr dq greet_s wrt ..sym ; [15]
108
+ selfptr dq selfptr wrt ..sym ; [16]
109
+
110
+ SECTION .bss
111
+ ; a useless symbol
112
+ useless resq 1
113
+
114
+ ; an integer
115
+ integer resq 1 ; [3]
116
+
117
+ ; a local integer
118
+ localint resq 1 ; [6]
@@ -0,0 +1,100 @@
1
+ ;Testname=unoptimized; Arguments=-O0 -felf -oelfso.o; Files=stdout stderr elfso.o
2
+ ;Testname=optimized; Arguments=-Ox -felf -oelfso.o; Files=stdout stderr elfso.o
3
+
4
+ ; test source file for assembling to ELF shared library
5
+ ; build with:
6
+ ; nasm -f elf elfso.asm
7
+ ; ld -shared -o elfso.so elfso.o
8
+ ; test with:
9
+ ; gcc -o elfso elftest.c ./elfso.so
10
+ ; ./elfso
11
+ ; (assuming your gcc is ELF, and you're running bash)
12
+
13
+ ; This file should test the following:
14
+ ; [1] Define and export a global text-section symbol
15
+ ; [2] Define and export a global data-section symbol
16
+ ; [3] Define and export a global BSS-section symbol
17
+ ; [4] Define a non-global text-section symbol
18
+ ; [5] Define a non-global data-section symbol
19
+ ; [6] Define a non-global BSS-section symbol
20
+ ; [7] Define a COMMON symbol
21
+ ; [8] Define a NASM local label
22
+ ; [9] Reference a NASM local label
23
+ ; [10] Import an external symbol
24
+ ; [11] Make a PC-relative call to an external symbol
25
+ ; [12] Reference a text-section symbol in the text section
26
+ ; [13] Reference a data-section symbol in the text section
27
+ ; [14] Reference a BSS-section symbol in the text section
28
+ ; [15] Reference a text-section symbol in the data section
29
+ ; [16] Reference a data-section symbol in the data section
30
+ ; [17] Reference a BSS-section symbol in the data section
31
+
32
+ BITS 32
33
+ GLOBAL lrotate:function ; [1]
34
+ GLOBAL greet:function ; [1]
35
+ GLOBAL asmstr:data asmstr.end-asmstr ; [2]
36
+ GLOBAL textptr:data 4 ; [2]
37
+ GLOBAL selfptr:data 4 ; [2]
38
+ GLOBAL integer:data 4 ; [3]
39
+ EXTERN printf ; [10]
40
+ COMMON commvar 4:4 ; [7]
41
+ EXTERN _GLOBAL_OFFSET_TABLE_
42
+
43
+ SECTION .text
44
+
45
+ ; prototype: long lrotate(long x, int num);
46
+ lrotate: ; [1]
47
+ push ebp
48
+ mov ebp,esp
49
+ mov eax,[ebp+8]
50
+ mov ecx,[ebp+12]
51
+ .label rol eax,1 ; [4] [8]
52
+ loop .label ; [9] [12]
53
+ mov esp,ebp
54
+ pop ebp
55
+ ret
56
+
57
+ ; prototype: void greet(void);
58
+ greet push ebx ; we'll use EBX for GOT, so save it
59
+ call .getgot
60
+ .getgot: pop ebx
61
+ add ebx,_GLOBAL_OFFSET_TABLE_ + $$ - .getgot wrt ..gotpc
62
+ mov eax,[ebx+integer wrt ..got] ; [14]
63
+ mov eax,[eax]
64
+ inc eax
65
+ mov [ebx+localint wrt ..gotoff],eax ; [14]
66
+ mov eax,[ebx+commvar wrt ..got]
67
+ push dword [eax]
68
+ mov eax,[ebx+localptr wrt ..gotoff] ; [13]
69
+ push dword [eax]
70
+ mov eax,[ebx+integer wrt ..got] ; [1] [14]
71
+ push dword [eax]
72
+ lea eax,[ebx+printfstr wrt ..gotoff]
73
+ push eax ; [13]
74
+ call printf wrt ..plt ; [11]
75
+ add esp,16
76
+ pop ebx
77
+ ret
78
+
79
+ SECTION .data
80
+
81
+ ; a string
82
+ asmstr db 'hello, world', 0 ; [2]
83
+ .end
84
+
85
+ ; a string for Printf
86
+ printfstr db "integer==%d, localint==%d, commvar=%d"
87
+ db 10, 0
88
+
89
+ ; some pointers
90
+ localptr dd localint ; [5] [17]
91
+ textptr dd greet wrt ..sym ; [15]
92
+ selfptr dd selfptr wrt ..sym ; [16]
93
+
94
+ SECTION .bss
95
+
96
+ ; an integer
97
+ integer resd 1 ; [3]
98
+
99
+ ; a local integer
100
+ localint resd 1 ; [6]