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.
- checksums.yaml +7 -0
- data/.gitignore +57 -0
- data/LICENSE.txt +29 -0
- data/README.org +34 -0
- data/ext/laag/nasm/extconf.rb +16 -0
- data/laag-nasm.gemspec +20 -0
- data/lib/laag/nasm.rb +29 -0
- data/patches/Makefile.in.patch +13 -0
- data/vendor/repo.or.cz/nasm/.gitignore +102 -0
- data/vendor/repo.or.cz/nasm/AUTHORS +137 -0
- data/vendor/repo.or.cz/nasm/CHANGES +2 -0
- data/vendor/repo.or.cz/nasm/ChangeLog +2905 -0
- data/vendor/repo.or.cz/nasm/INSTALL +102 -0
- data/vendor/repo.or.cz/nasm/LICENSE +29 -0
- data/vendor/repo.or.cz/nasm/Makefile.in +855 -0
- data/vendor/repo.or.cz/nasm/Mkfiles/README +46 -0
- data/vendor/repo.or.cz/nasm/Mkfiles/msvc.mak +732 -0
- data/vendor/repo.or.cz/nasm/Mkfiles/openwcom.mak +706 -0
- data/vendor/repo.or.cz/nasm/README +23 -0
- data/vendor/repo.or.cz/nasm/SubmittingPatches +116 -0
- data/vendor/repo.or.cz/nasm/TODO +376 -0
- data/vendor/repo.or.cz/nasm/aclocal.m4 +139 -0
- data/vendor/repo.or.cz/nasm/asm/assemble.c +2957 -0
- data/vendor/repo.or.cz/nasm/asm/assemble.h +54 -0
- data/vendor/repo.or.cz/nasm/asm/directiv.c +566 -0
- data/vendor/repo.or.cz/nasm/asm/directiv.dat +92 -0
- data/vendor/repo.or.cz/nasm/asm/error.c +202 -0
- data/vendor/repo.or.cz/nasm/asm/eval.c +1014 -0
- data/vendor/repo.or.cz/nasm/asm/eval.h +49 -0
- data/vendor/repo.or.cz/nasm/asm/exprdump.c +79 -0
- data/vendor/repo.or.cz/nasm/asm/exprlib.c +200 -0
- data/vendor/repo.or.cz/nasm/asm/float.c +952 -0
- data/vendor/repo.or.cz/nasm/asm/float.h +54 -0
- data/vendor/repo.or.cz/nasm/asm/labels.c +540 -0
- data/vendor/repo.or.cz/nasm/asm/listing.c +346 -0
- data/vendor/repo.or.cz/nasm/asm/listing.h +113 -0
- data/vendor/repo.or.cz/nasm/asm/nasm.c +1855 -0
- data/vendor/repo.or.cz/nasm/asm/parser.c +1167 -0
- data/vendor/repo.or.cz/nasm/asm/parser.h +45 -0
- data/vendor/repo.or.cz/nasm/asm/phash.pl +109 -0
- data/vendor/repo.or.cz/nasm/asm/pptok.dat +96 -0
- data/vendor/repo.or.cz/nasm/asm/pptok.pl +271 -0
- data/vendor/repo.or.cz/nasm/asm/pragma.c +218 -0
- data/vendor/repo.or.cz/nasm/asm/preproc-nop.c +188 -0
- data/vendor/repo.or.cz/nasm/asm/preproc.c +5459 -0
- data/vendor/repo.or.cz/nasm/asm/preproc.h +55 -0
- data/vendor/repo.or.cz/nasm/asm/quote.c +479 -0
- data/vendor/repo.or.cz/nasm/asm/quote.h +44 -0
- data/vendor/repo.or.cz/nasm/asm/rdstrnum.c +68 -0
- data/vendor/repo.or.cz/nasm/asm/segalloc.c +51 -0
- data/vendor/repo.or.cz/nasm/asm/stdscan.c +345 -0
- data/vendor/repo.or.cz/nasm/asm/stdscan.h +49 -0
- data/vendor/repo.or.cz/nasm/asm/strfunc.c +359 -0
- data/vendor/repo.or.cz/nasm/asm/tokens.dat +135 -0
- data/vendor/repo.or.cz/nasm/asm/tokhash.pl +284 -0
- data/vendor/repo.or.cz/nasm/autogen.sh +9 -0
- data/vendor/repo.or.cz/nasm/common/common.c +122 -0
- data/vendor/repo.or.cz/nasm/config/msvc.h +192 -0
- data/vendor/repo.or.cz/nasm/config/unknown.h +51 -0
- data/vendor/repo.or.cz/nasm/config/watcom.h +74 -0
- data/vendor/repo.or.cz/nasm/configure.ac +253 -0
- data/vendor/repo.or.cz/nasm/contrib/MSVC6.txt +25 -0
- data/vendor/repo.or.cz/nasm/contrib/VSrules/nasm.README +16 -0
- data/vendor/repo.or.cz/nasm/contrib/VSrules/nasm.rules +79 -0
- data/vendor/repo.or.cz/nasm/disasm/disasm.c +1735 -0
- data/vendor/repo.or.cz/nasm/disasm/disasm.h +49 -0
- data/vendor/repo.or.cz/nasm/disasm/ndisasm.c +397 -0
- data/vendor/repo.or.cz/nasm/disasm/sync.c +132 -0
- data/vendor/repo.or.cz/nasm/disasm/sync.h +45 -0
- data/vendor/repo.or.cz/nasm/doc/Makefile.in +86 -0
- data/vendor/repo.or.cz/nasm/doc/README +20 -0
- data/vendor/repo.or.cz/nasm/doc/afmmetrics.ph +102 -0
- data/vendor/repo.or.cz/nasm/doc/changes.src +2588 -0
- data/vendor/repo.or.cz/nasm/doc/findfont.ph +180 -0
- data/vendor/repo.or.cz/nasm/doc/genps.pl +1294 -0
- data/vendor/repo.or.cz/nasm/doc/inslist.pl +108 -0
- data/vendor/repo.or.cz/nasm/doc/internal.doc +290 -0
- data/vendor/repo.or.cz/nasm/doc/local.css +1 -0
- data/vendor/repo.or.cz/nasm/doc/nasmdoc.css +150 -0
- data/vendor/repo.or.cz/nasm/doc/nasmdoc.src +8309 -0
- data/vendor/repo.or.cz/nasm/doc/nasmlogo.eps +212 -0
- data/vendor/repo.or.cz/nasm/doc/nasmlogw.png +0 -0
- data/vendor/repo.or.cz/nasm/doc/psfonts.ph +53 -0
- data/vendor/repo.or.cz/nasm/doc/pspdf.pl +98 -0
- data/vendor/repo.or.cz/nasm/doc/pswidth.ph +25 -0
- data/vendor/repo.or.cz/nasm/doc/rdsrc.pl +1111 -0
- data/vendor/repo.or.cz/nasm/doc/ttfmetrics.ph +63 -0
- data/vendor/repo.or.cz/nasm/headers/c +33 -0
- data/vendor/repo.or.cz/nasm/headers/doc +33 -0
- data/vendor/repo.or.cz/nasm/headers/mac +33 -0
- data/vendor/repo.or.cz/nasm/headers/perl +33 -0
- data/vendor/repo.or.cz/nasm/include/compiler.h +277 -0
- data/vendor/repo.or.cz/nasm/include/disp8.h +45 -0
- data/vendor/repo.or.cz/nasm/include/error.h +135 -0
- data/vendor/repo.or.cz/nasm/include/hashtbl.h +85 -0
- data/vendor/repo.or.cz/nasm/include/iflag.h +173 -0
- data/vendor/repo.or.cz/nasm/include/insns.h +76 -0
- data/vendor/repo.or.cz/nasm/include/labels.h +60 -0
- data/vendor/repo.or.cz/nasm/include/md5.h +21 -0
- data/vendor/repo.or.cz/nasm/include/nasm.h +1246 -0
- data/vendor/repo.or.cz/nasm/include/nasmint.h +219 -0
- data/vendor/repo.or.cz/nasm/include/nasmlib.h +524 -0
- data/vendor/repo.or.cz/nasm/include/opflags.h +271 -0
- data/vendor/repo.or.cz/nasm/include/perfhash.h +52 -0
- data/vendor/repo.or.cz/nasm/include/raa.h +46 -0
- data/vendor/repo.or.cz/nasm/include/rbtree.h +51 -0
- data/vendor/repo.or.cz/nasm/include/rdoff.h +169 -0
- data/vendor/repo.or.cz/nasm/include/saa.h +94 -0
- data/vendor/repo.or.cz/nasm/include/strlist.h +55 -0
- data/vendor/repo.or.cz/nasm/include/tables.h +70 -0
- data/vendor/repo.or.cz/nasm/include/ver.h +47 -0
- data/vendor/repo.or.cz/nasm/install-sh +250 -0
- data/vendor/repo.or.cz/nasm/macros/altreg.mac +107 -0
- data/vendor/repo.or.cz/nasm/macros/fp.mac +54 -0
- data/vendor/repo.or.cz/nasm/macros/ifunc.mac +48 -0
- data/vendor/repo.or.cz/nasm/macros/macros.pl +294 -0
- data/vendor/repo.or.cz/nasm/macros/smartalign.mac +189 -0
- data/vendor/repo.or.cz/nasm/macros/standard.mac +226 -0
- data/vendor/repo.or.cz/nasm/misc/Doxyfile +752 -0
- data/vendor/repo.or.cz/nasm/misc/Nindent +18 -0
- data/vendor/repo.or.cz/nasm/misc/README +2 -0
- data/vendor/repo.or.cz/nasm/misc/c16.mac +82 -0
- data/vendor/repo.or.cz/nasm/misc/c32.mac +52 -0
- data/vendor/repo.or.cz/nasm/misc/crcgen.c +44 -0
- data/vendor/repo.or.cz/nasm/misc/exebin.mac +57 -0
- data/vendor/repo.or.cz/nasm/misc/exebin2.mac +114 -0
- data/vendor/repo.or.cz/nasm/misc/fmtinsns.pl +40 -0
- data/vendor/repo.or.cz/nasm/misc/genfma.pl +63 -0
- data/vendor/repo.or.cz/nasm/misc/hints.txt +26 -0
- data/vendor/repo.or.cz/nasm/misc/magic +6 -0
- data/vendor/repo.or.cz/nasm/misc/myC32.mac +121 -0
- data/vendor/repo.or.cz/nasm/misc/nasm.sl +320 -0
- data/vendor/repo.or.cz/nasm/misc/nasmstab +296 -0
- data/vendor/repo.or.cz/nasm/misc/omfdump.c +517 -0
- data/vendor/repo.or.cz/nasm/misc/pmw.bat +9 -0
- data/vendor/repo.or.cz/nasm/misc/proc32.ash +441 -0
- data/vendor/repo.or.cz/nasm/misc/scitech.mac +1223 -0
- data/vendor/repo.or.cz/nasm/misc/xcrcgen.c +80 -0
- data/vendor/repo.or.cz/nasm/nasm.spec.in +83 -0
- data/vendor/repo.or.cz/nasm/nasm.spec.sed +3 -0
- data/vendor/repo.or.cz/nasm/nasm.txt +306 -0
- data/vendor/repo.or.cz/nasm/nasmlib/badenum.c +43 -0
- data/vendor/repo.or.cz/nasm/nasmlib/bsi.c +77 -0
- data/vendor/repo.or.cz/nasm/nasmlib/crc64.c +189 -0
- data/vendor/repo.or.cz/nasm/nasmlib/file.c +259 -0
- data/vendor/repo.or.cz/nasm/nasmlib/file.h +128 -0
- data/vendor/repo.or.cz/nasm/nasmlib/filename.c +69 -0
- data/vendor/repo.or.cz/nasm/nasmlib/hashtbl.c +232 -0
- data/vendor/repo.or.cz/nasm/nasmlib/ilog2.c +168 -0
- data/vendor/repo.or.cz/nasm/nasmlib/malloc.c +108 -0
- data/vendor/repo.or.cz/nasm/nasmlib/md5c.c +247 -0
- data/vendor/repo.or.cz/nasm/nasmlib/mmap.c +139 -0
- data/vendor/repo.or.cz/nasm/nasmlib/path.c +186 -0
- data/vendor/repo.or.cz/nasm/nasmlib/perfhash.c +55 -0
- data/vendor/repo.or.cz/nasm/nasmlib/perfhash.pl +362 -0
- data/vendor/repo.or.cz/nasm/nasmlib/raa.c +173 -0
- data/vendor/repo.or.cz/nasm/nasmlib/rbtree.c +119 -0
- data/vendor/repo.or.cz/nasm/nasmlib/readnum.c +172 -0
- data/vendor/repo.or.cz/nasm/nasmlib/realpath.c +135 -0
- data/vendor/repo.or.cz/nasm/nasmlib/saa.c +431 -0
- data/vendor/repo.or.cz/nasm/nasmlib/srcfile.c +128 -0
- data/vendor/repo.or.cz/nasm/nasmlib/string.c +242 -0
- data/vendor/repo.or.cz/nasm/nasmlib/strlist.c +100 -0
- data/vendor/repo.or.cz/nasm/nasmlib/ver.c +51 -0
- data/vendor/repo.or.cz/nasm/nasmlib/zerobuf.c +42 -0
- data/vendor/repo.or.cz/nasm/ndisasm.txt +94 -0
- data/vendor/repo.or.cz/nasm/nsis/NASMMultiUser.nsh +478 -0
- data/vendor/repo.or.cz/nasm/nsis/getpearch.pl +76 -0
- data/vendor/repo.or.cz/nasm/nsis/nasm-un.ico +0 -0
- data/vendor/repo.or.cz/nasm/nsis/nasm.ico +0 -0
- data/vendor/repo.or.cz/nasm/nsis/nasm.nsi +241 -0
- data/vendor/repo.or.cz/nasm/output/codeview.c +814 -0
- data/vendor/repo.or.cz/nasm/output/dwarf.h +566 -0
- data/vendor/repo.or.cz/nasm/output/elf.h +537 -0
- data/vendor/repo.or.cz/nasm/output/legacy.c +112 -0
- data/vendor/repo.or.cz/nasm/output/nulldbg.c +93 -0
- data/vendor/repo.or.cz/nasm/output/nullout.c +51 -0
- data/vendor/repo.or.cz/nasm/output/outaout.c +954 -0
- data/vendor/repo.or.cz/nasm/output/outaout.mac +37 -0
- data/vendor/repo.or.cz/nasm/output/outas86.c +650 -0
- data/vendor/repo.or.cz/nasm/output/outas86.mac +37 -0
- data/vendor/repo.or.cz/nasm/output/outbin.c +1713 -0
- data/vendor/repo.or.cz/nasm/output/outbin.mac +40 -0
- data/vendor/repo.or.cz/nasm/output/outcoff.c +1242 -0
- data/vendor/repo.or.cz/nasm/output/outcoff.mac +43 -0
- data/vendor/repo.or.cz/nasm/output/outdbg.c +425 -0
- data/vendor/repo.or.cz/nasm/output/outelf.c +3370 -0
- data/vendor/repo.or.cz/nasm/output/outelf.h +156 -0
- data/vendor/repo.or.cz/nasm/output/outelf.mac +41 -0
- data/vendor/repo.or.cz/nasm/output/outform.c +120 -0
- data/vendor/repo.or.cz/nasm/output/outform.h +379 -0
- data/vendor/repo.or.cz/nasm/output/outieee.c +1528 -0
- data/vendor/repo.or.cz/nasm/output/outlib.c +58 -0
- data/vendor/repo.or.cz/nasm/output/outlib.h +63 -0
- data/vendor/repo.or.cz/nasm/output/outmacho.c +2387 -0
- data/vendor/repo.or.cz/nasm/output/outmacho.mac +49 -0
- data/vendor/repo.or.cz/nasm/output/outobj.c +2725 -0
- data/vendor/repo.or.cz/nasm/output/outobj.mac +49 -0
- data/vendor/repo.or.cz/nasm/output/outrdf.mac +40 -0
- data/vendor/repo.or.cz/nasm/output/outrdf2.c +791 -0
- data/vendor/repo.or.cz/nasm/output/outrdf2.mac +43 -0
- data/vendor/repo.or.cz/nasm/output/pecoff.h +532 -0
- data/vendor/repo.or.cz/nasm/output/stabs.h +144 -0
- data/vendor/repo.or.cz/nasm/perllib/crc64.ph +158 -0
- data/vendor/repo.or.cz/nasm/perllib/gensv.pl +34 -0
- data/vendor/repo.or.cz/nasm/perllib/phash.ph +200 -0
- data/vendor/repo.or.cz/nasm/perllib/random_sv_vectors.ph +67 -0
- data/vendor/repo.or.cz/nasm/rdoff/README +185 -0
- data/vendor/repo.or.cz/nasm/rdoff/collectn.c +44 -0
- data/vendor/repo.or.cz/nasm/rdoff/collectn.h +22 -0
- data/vendor/repo.or.cz/nasm/rdoff/doc/Makefile +37 -0
- data/vendor/repo.or.cz/nasm/rdoff/doc/rdoff.texi +137 -0
- data/vendor/repo.or.cz/nasm/rdoff/doc/v1-v2.txt +62 -0
- data/vendor/repo.or.cz/nasm/rdoff/hash.c +122 -0
- data/vendor/repo.or.cz/nasm/rdoff/hash.h +17 -0
- data/vendor/repo.or.cz/nasm/rdoff/ldrdf.1 +41 -0
- data/vendor/repo.or.cz/nasm/rdoff/ldrdf.c +1395 -0
- data/vendor/repo.or.cz/nasm/rdoff/ldsegs.h +59 -0
- data/vendor/repo.or.cz/nasm/rdoff/rdf2bin.1 +65 -0
- data/vendor/repo.or.cz/nasm/rdoff/rdf2bin.c +431 -0
- data/vendor/repo.or.cz/nasm/rdoff/rdf2com.1 +1 -0
- data/vendor/repo.or.cz/nasm/rdoff/rdf2ihx.1 +1 -0
- data/vendor/repo.or.cz/nasm/rdoff/rdf2ith.1 +1 -0
- data/vendor/repo.or.cz/nasm/rdoff/rdf2srec.1 +1 -0
- data/vendor/repo.or.cz/nasm/rdoff/rdfdump.1 +24 -0
- data/vendor/repo.or.cz/nasm/rdoff/rdfdump.c +347 -0
- data/vendor/repo.or.cz/nasm/rdoff/rdflib.1 +39 -0
- data/vendor/repo.or.cz/nasm/rdoff/rdflib.c +434 -0
- data/vendor/repo.or.cz/nasm/rdoff/rdfload.c +213 -0
- data/vendor/repo.or.cz/nasm/rdoff/rdfload.h +29 -0
- data/vendor/repo.or.cz/nasm/rdoff/rdfutils.h +165 -0
- data/vendor/repo.or.cz/nasm/rdoff/rdlar.c +492 -0
- data/vendor/repo.or.cz/nasm/rdoff/rdlar.h +34 -0
- data/vendor/repo.or.cz/nasm/rdoff/rdlib.c +290 -0
- data/vendor/repo.or.cz/nasm/rdoff/rdlib.h +62 -0
- data/vendor/repo.or.cz/nasm/rdoff/rdoff.c +621 -0
- data/vendor/repo.or.cz/nasm/rdoff/rdx.1 +21 -0
- data/vendor/repo.or.cz/nasm/rdoff/rdx.c +90 -0
- data/vendor/repo.or.cz/nasm/rdoff/segtab.c +172 -0
- data/vendor/repo.or.cz/nasm/rdoff/segtab.h +45 -0
- data/vendor/repo.or.cz/nasm/rdoff/symtab.c +159 -0
- data/vendor/repo.or.cz/nasm/rdoff/symtab.h +55 -0
- data/vendor/repo.or.cz/nasm/rdoff/test/Makefile +10 -0
- data/vendor/repo.or.cz/nasm/rdoff/test/makelib.sh +14 -0
- data/vendor/repo.or.cz/nasm/rdoff/test/rdfseg.asm +20 -0
- data/vendor/repo.or.cz/nasm/rdoff/test/rdfseg2.asm +12 -0
- data/vendor/repo.or.cz/nasm/rdoff/test/rdftest1.asm +54 -0
- data/vendor/repo.or.cz/nasm/rdoff/test/rdftest2.asm +33 -0
- data/vendor/repo.or.cz/nasm/rdoff/test/rdtlib.asm +48 -0
- data/vendor/repo.or.cz/nasm/rdoff/test/rdtmain.asm +47 -0
- data/vendor/repo.or.cz/nasm/rdoff/test/testlib.asm +18 -0
- data/vendor/repo.or.cz/nasm/stdlib/snprintf.c +29 -0
- data/vendor/repo.or.cz/nasm/stdlib/strlcpy.c +51 -0
- data/vendor/repo.or.cz/nasm/stdlib/strnlen.c +46 -0
- data/vendor/repo.or.cz/nasm/stdlib/vsnprintf.c +51 -0
- data/vendor/repo.or.cz/nasm/test/Makefile +106 -0
- data/vendor/repo.or.cz/nasm/test/_file_.asm +5 -0
- data/vendor/repo.or.cz/nasm/test/_version.asm +2 -0
- data/vendor/repo.or.cz/nasm/test/a32offs.asm +9 -0
- data/vendor/repo.or.cz/nasm/test/absolute.asm +40 -0
- data/vendor/repo.or.cz/nasm/test/addr64x.asm +18 -0
- data/vendor/repo.or.cz/nasm/test/align13.asm +19 -0
- data/vendor/repo.or.cz/nasm/test/align13s.asm +20 -0
- data/vendor/repo.or.cz/nasm/test/alonesym-obj.asm +166 -0
- data/vendor/repo.or.cz/nasm/test/andbyte.asm +15 -0
- data/vendor/repo.or.cz/nasm/test/aoutso.asm +99 -0
- data/vendor/repo.or.cz/nasm/test/aouttest.asm +86 -0
- data/vendor/repo.or.cz/nasm/test/aouttest.c +36 -0
- data/vendor/repo.or.cz/nasm/test/avx.asm +46 -0
- data/vendor/repo.or.cz/nasm/test/avx005.asm +529 -0
- data/vendor/repo.or.cz/nasm/test/avx2.asm +1608 -0
- data/vendor/repo.or.cz/nasm/test/avx512cd.asm +106 -0
- data/vendor/repo.or.cz/nasm/test/avx512er.asm +144 -0
- data/vendor/repo.or.cz/nasm/test/avx512f.asm +7000 -0
- data/vendor/repo.or.cz/nasm/test/avx512pf.asm +88 -0
- data/vendor/repo.or.cz/nasm/test/bcd.asm +23 -0
- data/vendor/repo.or.cz/nasm/test/binexe.asm +35 -0
- data/vendor/repo.or.cz/nasm/test/bintest.asm +59 -0
- data/vendor/repo.or.cz/nasm/test/bisect.sh +22 -0
- data/vendor/repo.or.cz/nasm/test/br1879590.asm +25 -0
- data/vendor/repo.or.cz/nasm/test/br2003451.asm +17 -0
- data/vendor/repo.or.cz/nasm/test/br2030823.asm +7 -0
- data/vendor/repo.or.cz/nasm/test/br2148476.asm +221 -0
- data/vendor/repo.or.cz/nasm/test/br2222615.asm +19 -0
- data/vendor/repo.or.cz/nasm/test/br2496848.asm +42 -0
- data/vendor/repo.or.cz/nasm/test/br3005117.asm +26 -0
- data/vendor/repo.or.cz/nasm/test/br3026808.asm +20 -0
- data/vendor/repo.or.cz/nasm/test/br3028880.asm +8 -0
- data/vendor/repo.or.cz/nasm/test/br3041451.asm +59 -0
- data/vendor/repo.or.cz/nasm/test/br3058845.asm +14 -0
- data/vendor/repo.or.cz/nasm/test/br3066383.asm +70 -0
- data/vendor/repo.or.cz/nasm/test/br3074517.asm +12 -0
- data/vendor/repo.or.cz/nasm/test/br3092924.asm +25 -0
- data/vendor/repo.or.cz/nasm/test/br3104312.asm +11 -0
- data/vendor/repo.or.cz/nasm/test/br3109604.asm +9 -0
- data/vendor/repo.or.cz/nasm/test/br3174983.asm +9 -0
- data/vendor/repo.or.cz/nasm/test/br3187743.asm +7 -0
- data/vendor/repo.or.cz/nasm/test/br3189064.asm +7 -0
- data/vendor/repo.or.cz/nasm/test/br3200749.asm +9 -0
- data/vendor/repo.or.cz/nasm/test/br3385573.asm +11 -0
- data/vendor/repo.or.cz/nasm/test/br3392252.asm +43 -0
- data/vendor/repo.or.cz/nasm/test/br3392259.asm +8 -0
- data/vendor/repo.or.cz/nasm/test/br3392363.asm +4 -0
- data/vendor/repo.or.cz/nasm/test/br3392392.asm +16 -0
- data/vendor/repo.or.cz/nasm/test/br3392396.asm +5 -0
- data/vendor/repo.or.cz/nasm/test/br3392411.asm +22 -0
- data/vendor/repo.or.cz/nasm/test/br3392418.asm +3 -0
- data/vendor/repo.or.cz/nasm/test/br3392439.asm +25 -0
- data/vendor/repo.or.cz/nasm/test/br3392442.asm +6 -0
- data/vendor/repo.or.cz/nasm/test/br560575.asm +17 -0
- data/vendor/repo.or.cz/nasm/test/br560873.asm +27 -0
- data/vendor/repo.or.cz/nasm/test/br890790.asm +7 -0
- data/vendor/repo.or.cz/nasm/test/br890790_i.asm +1 -0
- data/vendor/repo.or.cz/nasm/test/br978756.asm +7 -0
- data/vendor/repo.or.cz/nasm/test/changed.asm +383 -0
- data/vendor/repo.or.cz/nasm/test/cofftest.asm +85 -0
- data/vendor/repo.or.cz/nasm/test/cofftest.c +35 -0
- data/vendor/repo.or.cz/nasm/test/crc32.asm +37 -0
- data/vendor/repo.or.cz/nasm/test/cv8struc.asm +14 -0
- data/vendor/repo.or.cz/nasm/test/dtbcd.asm +72 -0
- data/vendor/repo.or.cz/nasm/test/elf64so.asm +118 -0
- data/vendor/repo.or.cz/nasm/test/elfso.asm +100 -0
- data/vendor/repo.or.cz/nasm/test/elftest.asm +87 -0
- data/vendor/repo.or.cz/nasm/test/elftest.c +38 -0
- data/vendor/repo.or.cz/nasm/test/elftest64.c +43 -0
- data/vendor/repo.or.cz/nasm/test/elif.asm +39 -0
- data/vendor/repo.or.cz/nasm/test/expimp.asm +90 -0
- data/vendor/repo.or.cz/nasm/test/far64.asm +10 -0
- data/vendor/repo.or.cz/nasm/test/float.asm +186 -0
- data/vendor/repo.or.cz/nasm/test/float8.asm +135 -0
- data/vendor/repo.or.cz/nasm/test/floatb.asm +35 -0
- data/vendor/repo.or.cz/nasm/test/floatexp.asm +382 -0
- data/vendor/repo.or.cz/nasm/test/floatize.asm +19 -0
- data/vendor/repo.or.cz/nasm/test/floattest.asm +28 -0
- data/vendor/repo.or.cz/nasm/test/floatx.asm +525 -0
- data/vendor/repo.or.cz/nasm/test/fpu.asm +127 -0
- data/vendor/repo.or.cz/nasm/test/fwdopt.asm +133 -0
- data/vendor/repo.or.cz/nasm/test/fwdoptpp.asm +150 -0
- data/vendor/repo.or.cz/nasm/test/gas2nasm.py +104 -0
- data/vendor/repo.or.cz/nasm/test/gather.asm +11 -0
- data/vendor/repo.or.cz/nasm/test/gotoff64.asm +25 -0
- data/vendor/repo.or.cz/nasm/test/hexfp.asm +25 -0
- data/vendor/repo.or.cz/nasm/test/hle.asm +19 -0
- data/vendor/repo.or.cz/nasm/test/ifelse.asm +46 -0
- data/vendor/repo.or.cz/nasm/test/ifenv.asm +31 -0
- data/vendor/repo.or.cz/nasm/test/ifmacro.asm +413 -0
- data/vendor/repo.or.cz/nasm/test/iftoken.asm +317 -0
- data/vendor/repo.or.cz/nasm/test/iftoken.pl +32 -0
- data/vendor/repo.or.cz/nasm/test/ilog2.asm +271 -0
- data/vendor/repo.or.cz/nasm/test/imacro.asm +8 -0
- data/vendor/repo.or.cz/nasm/test/imm.asm +23 -0
- data/vendor/repo.or.cz/nasm/test/imm64.asm +61 -0
- data/vendor/repo.or.cz/nasm/test/immwarn.asm +91 -0
- data/vendor/repo.or.cz/nasm/test/imul.asm +117 -0
- data/vendor/repo.or.cz/nasm/test/inc1.asm +6 -0
- data/vendor/repo.or.cz/nasm/test/inc2.asm +8 -0
- data/vendor/repo.or.cz/nasm/test/incbin.asm +7 -0
- data/vendor/repo.or.cz/nasm/test/incbin.data +2 -0
- data/vendor/repo.or.cz/nasm/test/inctest.asm +15 -0
- data/vendor/repo.or.cz/nasm/test/insnlbl.asm +12 -0
- data/vendor/repo.or.cz/nasm/test/invlpga.asm +11 -0
- data/vendor/repo.or.cz/nasm/test/jmp64.asm +19 -0
- data/vendor/repo.or.cz/nasm/test/lar_lsl.asm +124 -0
- data/vendor/repo.or.cz/nasm/test/larlsl.asm +23 -0
- data/vendor/repo.or.cz/nasm/test/lnxhello.asm +54 -0
- data/vendor/repo.or.cz/nasm/test/local.asm +19 -0
- data/vendor/repo.or.cz/nasm/test/loopoffs.asm +12 -0
- data/vendor/repo.or.cz/nasm/test/lwp.asm +213 -0
- data/vendor/repo.or.cz/nasm/test/macro-defaults.asm +64 -0
- data/vendor/repo.or.cz/nasm/test/macroerr.asm +12 -0
- data/vendor/repo.or.cz/nasm/test/macroerr.inc +3 -0
- data/vendor/repo.or.cz/nasm/test/mmxsize.asm +38 -0
- data/vendor/repo.or.cz/nasm/test/movd.asm +12 -0
- data/vendor/repo.or.cz/nasm/test/movd64.asm +15 -0
- data/vendor/repo.or.cz/nasm/test/movimm.asm +28 -0
- data/vendor/repo.or.cz/nasm/test/movnti.asm +10 -0
- data/vendor/repo.or.cz/nasm/test/mpx-64.asm +120 -0
- data/vendor/repo.or.cz/nasm/test/mpx.asm +89 -0
- data/vendor/repo.or.cz/nasm/test/multisection.asm +96 -0
- data/vendor/repo.or.cz/nasm/test/nasmformat.asm +17 -0
- data/vendor/repo.or.cz/nasm/test/new +9 -0
- data/vendor/repo.or.cz/nasm/test/newrdwr.asm +24 -0
- data/vendor/repo.or.cz/nasm/test/nop.asm +17 -0
- data/vendor/repo.or.cz/nasm/test/nullfile.asm +4 -0
- data/vendor/repo.or.cz/nasm/test/objexe.asm +30 -0
- data/vendor/repo.or.cz/nasm/test/objlink.c +33 -0
- data/vendor/repo.or.cz/nasm/test/objtest.asm +85 -0
- data/vendor/repo.or.cz/nasm/test/optimization.asm +104 -0
- data/vendor/repo.or.cz/nasm/test/org.asm +18 -0
- data/vendor/repo.or.cz/nasm/test/paste.asm +12 -0
- data/vendor/repo.or.cz/nasm/test/pcrel.asm +52 -0
- data/vendor/repo.or.cz/nasm/test/perf/label.pl +18 -0
- data/vendor/repo.or.cz/nasm/test/perf/macro.pl +18 -0
- data/vendor/repo.or.cz/nasm/test/perf/token.pl +23 -0
- data/vendor/repo.or.cz/nasm/test/performtest.pl +192 -0
- data/vendor/repo.or.cz/nasm/test/pextrw.asm +3 -0
- data/vendor/repo.or.cz/nasm/test/pinsr16.asm +53 -0
- data/vendor/repo.or.cz/nasm/test/pinsr32.asm +53 -0
- data/vendor/repo.or.cz/nasm/test/pinsr64.asm +68 -0
- data/vendor/repo.or.cz/nasm/test/popcnt.asm +32 -0
- data/vendor/repo.or.cz/nasm/test/ppindirect.asm +42 -0
- data/vendor/repo.or.cz/nasm/test/pragma.asm +12 -0
- data/vendor/repo.or.cz/nasm/test/prefix66.asm +28 -0
- data/vendor/repo.or.cz/nasm/test/ptr.asm +4 -0
- data/vendor/repo.or.cz/nasm/test/pushseg.asm +17 -0
- data/vendor/repo.or.cz/nasm/test/r13.asm +15 -0
- data/vendor/repo.or.cz/nasm/test/radix.asm +54 -0
- data/vendor/repo.or.cz/nasm/test/rdpid.asm +21 -0
- data/vendor/repo.or.cz/nasm/test/reldef.asm +57 -0
- data/vendor/repo.or.cz/nasm/test/relocs.asm +20 -0
- data/vendor/repo.or.cz/nasm/test/riprel.asm +5357 -0
- data/vendor/repo.or.cz/nasm/test/riprel.pl +29 -0
- data/vendor/repo.or.cz/nasm/test/riprel2.asm +11 -0
- data/vendor/repo.or.cz/nasm/test/sha-64.asm +30 -0
- data/vendor/repo.or.cz/nasm/test/sha.asm +31 -0
- data/vendor/repo.or.cz/nasm/test/smartalign16.asm +36 -0
- data/vendor/repo.or.cz/nasm/test/smartalign32.asm +36 -0
- data/vendor/repo.or.cz/nasm/test/smartalign64.asm +36 -0
- data/vendor/repo.or.cz/nasm/test/splitea.asm +11 -0
- data/vendor/repo.or.cz/nasm/test/sreg.asm +65 -0
- data/vendor/repo.or.cz/nasm/test/strlen.asm +5 -0
- data/vendor/repo.or.cz/nasm/test/struc.asm +33 -0
- data/vendor/repo.or.cz/nasm/test/test67.asm +38 -0
- data/vendor/repo.or.cz/nasm/test/testdos.asm +13 -0
- data/vendor/repo.or.cz/nasm/test/testnos3.asm +973 -0
- data/vendor/repo.or.cz/nasm/test/time.asm +11 -0
- data/vendor/repo.or.cz/nasm/test/times.asm +21 -0
- data/vendor/repo.or.cz/nasm/test/timesneg.asm +3 -0
- data/vendor/repo.or.cz/nasm/test/tmap.nas +1447 -0
- data/vendor/repo.or.cz/nasm/test/uscore.asm +15 -0
- data/vendor/repo.or.cz/nasm/test/utf.asm +82 -0
- data/vendor/repo.or.cz/nasm/test/vaesenc.asm +22 -0
- data/vendor/repo.or.cz/nasm/test/vex.asm +9 -0
- data/vendor/repo.or.cz/nasm/test/vgather.asm +76 -0
- data/vendor/repo.or.cz/nasm/test/vmread.asm +26 -0
- data/vendor/repo.or.cz/nasm/test/weirdpaste.asm +29 -0
- data/vendor/repo.or.cz/nasm/test/xchg.asm +96 -0
- data/vendor/repo.or.cz/nasm/test/xcrypt.asm +24 -0
- data/vendor/repo.or.cz/nasm/test/xmm0.asm +12 -0
- data/vendor/repo.or.cz/nasm/test/zerobyte.asm +22 -0
- data/vendor/repo.or.cz/nasm/tools/cleanfile +176 -0
- data/vendor/repo.or.cz/nasm/tools/cleanpatch +258 -0
- data/vendor/repo.or.cz/nasm/tools/mkdep.pl +261 -0
- data/vendor/repo.or.cz/nasm/tools/release +105 -0
- data/vendor/repo.or.cz/nasm/tools/syncfiles.pl +137 -0
- data/vendor/repo.or.cz/nasm/tools/tag-release +58 -0
- data/vendor/repo.or.cz/nasm/version +1 -0
- data/vendor/repo.or.cz/nasm/version.pl +189 -0
- data/vendor/repo.or.cz/nasm/x86/disp8.c +131 -0
- data/vendor/repo.or.cz/nasm/x86/insns-iflags.ph +280 -0
- data/vendor/repo.or.cz/nasm/x86/insns.dat +5371 -0
- data/vendor/repo.or.cz/nasm/x86/insns.pl +1043 -0
- data/vendor/repo.or.cz/nasm/x86/regs.dat +138 -0
- data/vendor/repo.or.cz/nasm/x86/regs.pl +204 -0
- metadata +520 -0
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* ldsegs.h Data for 'ldrdf' to determine what to do with different
|
|
3
|
+
* types of segment. This may be useful in other contexts also.
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
#ifndef RDOFF_LDSEGS_H
|
|
7
|
+
#define RDOFF_LDSEGS_H 1
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
struct segconfig {
|
|
11
|
+
uint16_t typelow, typehi; /* range of seg nos for which this is valid */
|
|
12
|
+
char *typedesc; /* a description of the segment type */
|
|
13
|
+
uint16_t dowhat; /* one of the SEG_xxxx values below */
|
|
14
|
+
uint16_t mergetype; /* if SEG_MERGE what type segment do we merge
|
|
15
|
+
with?
|
|
16
|
+
0 -> same type of segment. This type is also
|
|
17
|
+
used with SEG_NEWSEG. */
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
#define SEG_IGNORE 0
|
|
21
|
+
#define SEG_NEWSEG 1
|
|
22
|
+
#define SEG_MERGE 2
|
|
23
|
+
|
|
24
|
+
#define SEGCONFIGMAX 11
|
|
25
|
+
|
|
26
|
+
struct segconfig sconft[SEGCONFIGMAX] = {
|
|
27
|
+
{0x0000, 0x0000, "NULL segment", 0, 0},
|
|
28
|
+
{0x0001, 0x0001, "text", 2, 0},
|
|
29
|
+
{0x0002, 0x0002, "data", 2, 0},
|
|
30
|
+
{0x0003, 0x0003, "comment(ignored)", 0, 0},
|
|
31
|
+
{0x0004, 0x0005, "comment(kept)", 2, 0},
|
|
32
|
+
{0x0006, 0x0007, "debug information", 2, 0},
|
|
33
|
+
{0x0008, 0x001F, "reserved(general extensions)", 1, 0},
|
|
34
|
+
{0x0020, 0x0FFF, "reserved(MOSCOW)", 1, 0},
|
|
35
|
+
{0x1000, 0x7FFF, "reserved(system dependant)", 1, 0},
|
|
36
|
+
{0x8000, 0xFFFE, "reserved(other)", 1, 0},
|
|
37
|
+
{0xFFFF, 0xFFFF, "invalid segment", 0, 0}
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
#define getsegconfig(target,number) \
|
|
41
|
+
{ \
|
|
42
|
+
int _i; \
|
|
43
|
+
int _t = number; \
|
|
44
|
+
for (_i = 0; _i < SEGCONFIGMAX; _i++) \
|
|
45
|
+
if (_t >= sconft[_i].typelow && _t <= sconft[_i].typehi) \
|
|
46
|
+
{ \
|
|
47
|
+
target = sconft[_i]; \
|
|
48
|
+
if (target.mergetype == 0) target.mergetype = _t; \
|
|
49
|
+
break; \
|
|
50
|
+
} \
|
|
51
|
+
if (_i == SEGCONFIGMAX) \
|
|
52
|
+
{ \
|
|
53
|
+
fprintf(stderr, "PANIC: can't find segment %04X in segconfig\n",\
|
|
54
|
+
_t); \
|
|
55
|
+
exit(1); \
|
|
56
|
+
} \
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
#endif
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
.TH RDF2BIN 1 "September 6, 1999" "Debian Project" "Debian Manual"
|
|
2
|
+
.SH NAME
|
|
3
|
+
rdf2bin, rdf2com \- convert an RDOFF object file to flat binary
|
|
4
|
+
.SH SYNOPSIS
|
|
5
|
+
.B rdf2bin
|
|
6
|
+
.RI "[\-o " relocation-origin ]
|
|
7
|
+
.RI "[\-p " segment-alignment ]
|
|
8
|
+
.RI "[\-f " format ]
|
|
9
|
+
.I input-file
|
|
10
|
+
.I output-file
|
|
11
|
+
.br
|
|
12
|
+
.B rdf2com
|
|
13
|
+
.RI "[\-p " segment-alignment ]
|
|
14
|
+
.I input-file
|
|
15
|
+
.I output-file
|
|
16
|
+
.br
|
|
17
|
+
.B rdf2ith
|
|
18
|
+
.RI "[\-o " relocation-origin ]
|
|
19
|
+
.RI "[\-p " segment-alignment ]
|
|
20
|
+
.I input-file
|
|
21
|
+
.I output-file
|
|
22
|
+
.br
|
|
23
|
+
.B rdf2srec
|
|
24
|
+
.RI "[\-o " relocation-origin ]
|
|
25
|
+
.RI "[\-p " segment-alignment ]
|
|
26
|
+
.I input-file
|
|
27
|
+
.I output-file
|
|
28
|
+
.SH OPTIONS
|
|
29
|
+
.TP
|
|
30
|
+
.RI "\-o " relocation-origin
|
|
31
|
+
Relocate at origin
|
|
32
|
+
.IR relocation-origin .
|
|
33
|
+
If invoked as
|
|
34
|
+
.BR rdf2com ,
|
|
35
|
+
the default relocation origin will be 0x100. Else, the default origin is 0.
|
|
36
|
+
.TP
|
|
37
|
+
.RI "\-p " segment-alignment
|
|
38
|
+
Pad segments until their size is a multiple of
|
|
39
|
+
.IR segment-alignment .
|
|
40
|
+
By default, 16 is used.
|
|
41
|
+
.TP
|
|
42
|
+
.RI "\-f " format
|
|
43
|
+
Specify the output format. The currently supported formats are binary
|
|
44
|
+
.RI ( bin ),
|
|
45
|
+
DOS COM (binary with origin 0x100)
|
|
46
|
+
.RI ( com )
|
|
47
|
+
Intel hex
|
|
48
|
+
.RI ( ith
|
|
49
|
+
or
|
|
50
|
+
.IR ihx ),
|
|
51
|
+
and
|
|
52
|
+
Motorola S-Records
|
|
53
|
+
.RI ( srec ).
|
|
54
|
+
If not specified, the format is set by the command name.
|
|
55
|
+
.SH AUTHORS
|
|
56
|
+
Julian Hall <jules@earthcorp.com>, H. Peter Anvin <hpa@zytor.com>.
|
|
57
|
+
.PP
|
|
58
|
+
This manual page was written by Matej Vela <vela@debian.org>.
|
|
59
|
+
.SH BUGS
|
|
60
|
+
This utility currently only supports the classic segments
|
|
61
|
+
.IR .text ,
|
|
62
|
+
.I .data
|
|
63
|
+
and
|
|
64
|
+
.IR .bss .
|
|
65
|
+
|
|
@@ -0,0 +1,431 @@
|
|
|
1
|
+
/* ----------------------------------------------------------------------- *
|
|
2
|
+
*
|
|
3
|
+
* Copyright 1996-2009 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
|
+
* rdf2bin.c - convert an RDOFF object file to flat binary
|
|
36
|
+
*/
|
|
37
|
+
|
|
38
|
+
#include "compiler.h"
|
|
39
|
+
|
|
40
|
+
#include <stdlib.h>
|
|
41
|
+
#include <stdio.h>
|
|
42
|
+
#include <string.h>
|
|
43
|
+
#include <ctype.h>
|
|
44
|
+
#include <errno.h>
|
|
45
|
+
|
|
46
|
+
#include "rdfload.h"
|
|
47
|
+
#include "nasmlib.h"
|
|
48
|
+
|
|
49
|
+
const char *progname;
|
|
50
|
+
|
|
51
|
+
static uint32_t origin = 0;
|
|
52
|
+
static bool origin_def = false;
|
|
53
|
+
static uint32_t align = 16;
|
|
54
|
+
static bool align_def = false;
|
|
55
|
+
|
|
56
|
+
struct output_format {
|
|
57
|
+
const char *name;
|
|
58
|
+
const char *mode;
|
|
59
|
+
int (*init)(FILE *f);
|
|
60
|
+
int (*output)(FILE *f, void *data, uint32_t bytes, uint32_t where);
|
|
61
|
+
int (*fini)(FILE *f);
|
|
62
|
+
};
|
|
63
|
+
|
|
64
|
+
static int null_init_fini(FILE *f)
|
|
65
|
+
{
|
|
66
|
+
(void)f;
|
|
67
|
+
return 0;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
static int com_init(FILE *f)
|
|
71
|
+
{
|
|
72
|
+
(void)f;
|
|
73
|
+
if (!origin_def)
|
|
74
|
+
origin = 0x100;
|
|
75
|
+
return 0;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
static int output_bin(FILE *f, void *data, uint32_t bytes, uint32_t where)
|
|
79
|
+
{
|
|
80
|
+
static uint32_t offset = 0; /* Current file offset, if applicable */
|
|
81
|
+
size_t pad;
|
|
82
|
+
|
|
83
|
+
if (where-origin < offset) {
|
|
84
|
+
fprintf(stderr, "%s: internal error: backwards movement\n", progname);
|
|
85
|
+
exit(1);
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
pad = (where-origin) - offset;
|
|
89
|
+
fwritezero(pad, f);
|
|
90
|
+
offset += pad;
|
|
91
|
+
|
|
92
|
+
if (fwrite(data, 1, bytes, f) != bytes)
|
|
93
|
+
return -1;
|
|
94
|
+
offset += bytes;
|
|
95
|
+
|
|
96
|
+
return 0;
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
static int write_ith_record(FILE *f, unsigned int len, uint16_t addr,
|
|
100
|
+
uint8_t type, void *data)
|
|
101
|
+
{
|
|
102
|
+
char buf[1+2+4+2+255*2+2+2];
|
|
103
|
+
char *p = buf;
|
|
104
|
+
uint8_t csum, *dptr = data;
|
|
105
|
+
unsigned int i;
|
|
106
|
+
|
|
107
|
+
if (len > 255) {
|
|
108
|
+
fprintf(stderr, "%s: internal error: invalid ith record size\n",
|
|
109
|
+
progname);
|
|
110
|
+
exit(1);
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
csum = len + addr + (addr >> 8) + type;
|
|
114
|
+
for (i = 0; i < len; i++)
|
|
115
|
+
csum += dptr[i];
|
|
116
|
+
csum = -csum;
|
|
117
|
+
|
|
118
|
+
p += sprintf(p, ":%02X%04X%02X", len, addr, type);
|
|
119
|
+
for (i = 0; i < len; i++)
|
|
120
|
+
p += sprintf(p, "%02X", dptr[i]);
|
|
121
|
+
p += sprintf(p, "%02X\n", csum);
|
|
122
|
+
|
|
123
|
+
if (fwrite(buf, 1, p-buf, f) != (size_t)(p-buf))
|
|
124
|
+
return -1;
|
|
125
|
+
|
|
126
|
+
return 0;
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
static int output_ith(FILE *f, void *data, uint32_t bytes, uint32_t where)
|
|
130
|
+
{
|
|
131
|
+
static uint32_t last = 0; /* Last address written */
|
|
132
|
+
uint8_t abuf[2];
|
|
133
|
+
uint8_t *dbuf = data;
|
|
134
|
+
uint32_t chunk;
|
|
135
|
+
|
|
136
|
+
while (bytes) {
|
|
137
|
+
if ((where ^ last) & ~0xffff) {
|
|
138
|
+
abuf[0] = where >> 24;
|
|
139
|
+
abuf[1] = where >> 16;
|
|
140
|
+
if (write_ith_record(f, 2, 0, 4, abuf))
|
|
141
|
+
return -1;
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
/* Output up to 32 bytes, but always end on an aligned boundary */
|
|
145
|
+
chunk = 32 - (where & 31);
|
|
146
|
+
if (bytes < chunk)
|
|
147
|
+
chunk = bytes;
|
|
148
|
+
|
|
149
|
+
if (write_ith_record(f, chunk, (uint16_t)where, 0, dbuf))
|
|
150
|
+
return -1;
|
|
151
|
+
|
|
152
|
+
dbuf += chunk;
|
|
153
|
+
last = where + chunk - 1;
|
|
154
|
+
where += chunk;
|
|
155
|
+
bytes -= chunk;
|
|
156
|
+
}
|
|
157
|
+
return 0;
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
static int fini_ith(FILE *f)
|
|
161
|
+
{
|
|
162
|
+
/* XXX: entry point? */
|
|
163
|
+
return write_ith_record(f, 0, 0, 1, NULL);
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
static int write_srecord(FILE *f, unsigned int len, unsigned int alen,
|
|
167
|
+
uint32_t addr, uint8_t type, void *data)
|
|
168
|
+
{
|
|
169
|
+
char buf[2+2+8+255*2+2+2];
|
|
170
|
+
char *p = buf;
|
|
171
|
+
uint8_t csum, *dptr = data;
|
|
172
|
+
unsigned int i;
|
|
173
|
+
|
|
174
|
+
if (len > 255) {
|
|
175
|
+
fprintf(stderr, "%s: internal error: invalid srec record size\n",
|
|
176
|
+
progname);
|
|
177
|
+
exit(1);
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
switch (alen) {
|
|
181
|
+
case 2:
|
|
182
|
+
addr &= 0xffff;
|
|
183
|
+
break;
|
|
184
|
+
case 3:
|
|
185
|
+
addr &= 0xffffff;
|
|
186
|
+
break;
|
|
187
|
+
case 4:
|
|
188
|
+
break;
|
|
189
|
+
default:
|
|
190
|
+
fprintf(stderr, "%s: internal error: invalid srec address length\n",
|
|
191
|
+
progname);
|
|
192
|
+
exit(1);
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
csum = (len+alen+1) + addr + (addr >> 8) + (addr >> 16) + (addr >> 24);
|
|
196
|
+
for (i = 0; i < len; i++)
|
|
197
|
+
csum += dptr[i];
|
|
198
|
+
csum = 0xff-csum;
|
|
199
|
+
|
|
200
|
+
p += sprintf(p, "S%c%02X%0*X", type, len+alen+1, alen*2, addr);
|
|
201
|
+
for (i = 0; i < len; i++)
|
|
202
|
+
p += sprintf(p, "%02X", dptr[i]);
|
|
203
|
+
p += sprintf(p, "%02X\n", csum);
|
|
204
|
+
|
|
205
|
+
if (fwrite(buf, 1, p-buf, f) != (size_t)(p-buf))
|
|
206
|
+
return -1;
|
|
207
|
+
|
|
208
|
+
return 0;
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
static int init_srec(FILE *f)
|
|
212
|
+
{
|
|
213
|
+
return write_srecord(f, 0, 2, 0, '0', NULL);
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
static int fini_srec(FILE *f)
|
|
217
|
+
{
|
|
218
|
+
/* XXX: entry point? */
|
|
219
|
+
return write_srecord(f, 0, 4, 0, '7', NULL);
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
static int output_srec(FILE *f, void *data, uint32_t bytes, uint32_t where)
|
|
223
|
+
{
|
|
224
|
+
uint8_t *dbuf = data;
|
|
225
|
+
unsigned int chunk;
|
|
226
|
+
|
|
227
|
+
while (bytes) {
|
|
228
|
+
/* Output up to 32 bytes, but always end on an aligned boundary */
|
|
229
|
+
chunk = 32 - (where & 31);
|
|
230
|
+
if (bytes < chunk)
|
|
231
|
+
chunk = bytes;
|
|
232
|
+
|
|
233
|
+
if (write_srecord(f, chunk, 4, where, '3', dbuf))
|
|
234
|
+
return -1;
|
|
235
|
+
|
|
236
|
+
dbuf += chunk;
|
|
237
|
+
where += chunk;
|
|
238
|
+
bytes -= chunk;
|
|
239
|
+
}
|
|
240
|
+
return 0;
|
|
241
|
+
}
|
|
242
|
+
|
|
243
|
+
static struct output_format output_formats[] = {
|
|
244
|
+
{ "bin", "wb", null_init_fini, output_bin, null_init_fini },
|
|
245
|
+
{ "com", "wb", com_init, output_bin, null_init_fini },
|
|
246
|
+
{ "ith", "wt", null_init_fini, output_ith, fini_ith },
|
|
247
|
+
{ "ihx", "wt", null_init_fini, output_ith, fini_ith },
|
|
248
|
+
{ "srec", "wt", init_srec, output_srec, fini_srec },
|
|
249
|
+
{ NULL, NULL, NULL, NULL, NULL }
|
|
250
|
+
};
|
|
251
|
+
|
|
252
|
+
static const char *getformat(const char *pathname)
|
|
253
|
+
{
|
|
254
|
+
const char *p;
|
|
255
|
+
static char fmt_buf[16];
|
|
256
|
+
|
|
257
|
+
/*
|
|
258
|
+
* Search backwards for the string "rdf2" followed by a string
|
|
259
|
+
* of alphanumeric characters. This should handle path prefixes,
|
|
260
|
+
* as well as extensions (e.g. C:\FOO\RDF2SREC.EXE).
|
|
261
|
+
*/
|
|
262
|
+
for (p = strchr(pathname, '\0')-1 ; p >= pathname ; p--) {
|
|
263
|
+
if (!nasm_stricmp(p, "rdf2")) {
|
|
264
|
+
const char *q = p+4;
|
|
265
|
+
char *r = fmt_buf;
|
|
266
|
+
while (isalnum(*q) && r < fmt_buf+sizeof fmt_buf-1)
|
|
267
|
+
*r++ = *q++;
|
|
268
|
+
*r = '\0';
|
|
269
|
+
if (fmt_buf[0])
|
|
270
|
+
return fmt_buf;
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
return NULL;
|
|
274
|
+
}
|
|
275
|
+
|
|
276
|
+
static void usage(void)
|
|
277
|
+
{
|
|
278
|
+
fprintf(stderr,
|
|
279
|
+
"Usage: %s [options] input-file output-file\n"
|
|
280
|
+
"Options:\n"
|
|
281
|
+
" -o origin Specify the relocation origin\n"
|
|
282
|
+
" -p alignment Specify minimum segment alignment\n"
|
|
283
|
+
" -f format Select format (bin, com, ith, srec)\n"
|
|
284
|
+
" -q Run quiet\n"
|
|
285
|
+
" -v Run verbose\n",
|
|
286
|
+
progname);
|
|
287
|
+
}
|
|
288
|
+
|
|
289
|
+
int main(int argc, char **argv)
|
|
290
|
+
{
|
|
291
|
+
rdfmodule *m;
|
|
292
|
+
bool err;
|
|
293
|
+
FILE *of;
|
|
294
|
+
int codepad, datapad;
|
|
295
|
+
const char *format = NULL;
|
|
296
|
+
const struct output_format *fmt;
|
|
297
|
+
bool quiet = false;
|
|
298
|
+
|
|
299
|
+
progname = argv[0];
|
|
300
|
+
|
|
301
|
+
if (argc < 2) {
|
|
302
|
+
usage();
|
|
303
|
+
return 1;
|
|
304
|
+
}
|
|
305
|
+
|
|
306
|
+
rdoff_init();
|
|
307
|
+
|
|
308
|
+
argv++, argc--;
|
|
309
|
+
|
|
310
|
+
while (argc > 2) {
|
|
311
|
+
if (argv[0][0] == '-' && argv[0][1] && !argv[0][2]) {
|
|
312
|
+
switch (argv[0][1]) {
|
|
313
|
+
case 'o':
|
|
314
|
+
argv++, argc--;
|
|
315
|
+
origin = readnum(*argv, &err);
|
|
316
|
+
if (err) {
|
|
317
|
+
fprintf(stderr, "%s: invalid parameter: %s\n",
|
|
318
|
+
progname, *argv);
|
|
319
|
+
return 1;
|
|
320
|
+
}
|
|
321
|
+
origin_def = true;
|
|
322
|
+
break;
|
|
323
|
+
case 'p':
|
|
324
|
+
argv++, argc--;
|
|
325
|
+
align = readnum(*argv, &err);
|
|
326
|
+
if (err) {
|
|
327
|
+
fprintf(stderr, "%s: invalid parameter: %s\n",
|
|
328
|
+
progname, *argv);
|
|
329
|
+
return 1;
|
|
330
|
+
}
|
|
331
|
+
align_def = true;
|
|
332
|
+
break;
|
|
333
|
+
case 'f':
|
|
334
|
+
argv++, argc--;
|
|
335
|
+
format = *argv;
|
|
336
|
+
break;
|
|
337
|
+
case 'q':
|
|
338
|
+
quiet = true;
|
|
339
|
+
break;
|
|
340
|
+
case 'v':
|
|
341
|
+
quiet = false;
|
|
342
|
+
break;
|
|
343
|
+
case 'h':
|
|
344
|
+
usage();
|
|
345
|
+
return 0;
|
|
346
|
+
default:
|
|
347
|
+
fprintf(stderr, "%s: unknown option: %s\n",
|
|
348
|
+
progname, *argv);
|
|
349
|
+
return 1;
|
|
350
|
+
}
|
|
351
|
+
}
|
|
352
|
+
argv++, argc--;
|
|
353
|
+
}
|
|
354
|
+
|
|
355
|
+
if (argc < 2) {
|
|
356
|
+
usage();
|
|
357
|
+
return 1;
|
|
358
|
+
}
|
|
359
|
+
|
|
360
|
+
if (!format)
|
|
361
|
+
format = getformat(progname);
|
|
362
|
+
|
|
363
|
+
if (!format) {
|
|
364
|
+
fprintf(stderr, "%s: unable to determine desired output format\n",
|
|
365
|
+
progname);
|
|
366
|
+
return 1;
|
|
367
|
+
}
|
|
368
|
+
|
|
369
|
+
for (fmt = output_formats; fmt->name; fmt++) {
|
|
370
|
+
if (!nasm_stricmp(format, fmt->name))
|
|
371
|
+
break;
|
|
372
|
+
}
|
|
373
|
+
|
|
374
|
+
if (!fmt->name) {
|
|
375
|
+
fprintf(stderr, "%s: unknown output format: %s\n", progname, format);
|
|
376
|
+
return 1;
|
|
377
|
+
}
|
|
378
|
+
|
|
379
|
+
m = rdfload(*argv);
|
|
380
|
+
|
|
381
|
+
if (!m) {
|
|
382
|
+
rdfperror(progname, *argv);
|
|
383
|
+
return 1;
|
|
384
|
+
}
|
|
385
|
+
|
|
386
|
+
if (!quiet)
|
|
387
|
+
printf("relocating %s: origin=%"PRIx32", align=%d\n",
|
|
388
|
+
*argv, origin, align);
|
|
389
|
+
|
|
390
|
+
m->textrel = origin;
|
|
391
|
+
m->datarel = origin + m->f.seg[0].length;
|
|
392
|
+
if (m->datarel % align != 0) {
|
|
393
|
+
codepad = align - (m->datarel % align);
|
|
394
|
+
m->datarel += codepad;
|
|
395
|
+
} else
|
|
396
|
+
codepad = 0;
|
|
397
|
+
|
|
398
|
+
m->bssrel = m->datarel + m->f.seg[1].length;
|
|
399
|
+
if (m->bssrel % align != 0) {
|
|
400
|
+
datapad = align - (m->bssrel % align);
|
|
401
|
+
m->bssrel += datapad;
|
|
402
|
+
} else
|
|
403
|
+
datapad = 0;
|
|
404
|
+
|
|
405
|
+
if (!quiet)
|
|
406
|
+
printf("code: %08"PRIx32"\ndata: %08"PRIx32"\nbss: %08"PRIx32"\n",
|
|
407
|
+
m->textrel, m->datarel, m->bssrel);
|
|
408
|
+
|
|
409
|
+
rdf_relocate(m);
|
|
410
|
+
|
|
411
|
+
argv++;
|
|
412
|
+
|
|
413
|
+
of = fopen(*argv, fmt->mode);
|
|
414
|
+
if (!of) {
|
|
415
|
+
fprintf(stderr, "%s: could not open output file %s: %s\n",
|
|
416
|
+
progname, *argv, strerror(errno));
|
|
417
|
+
return 1;
|
|
418
|
+
}
|
|
419
|
+
|
|
420
|
+
if (fmt->init(of) ||
|
|
421
|
+
fmt->output(of, m->t, m->f.seg[0].length, m->textrel) ||
|
|
422
|
+
fmt->output(of, m->d, m->f.seg[1].length, m->datarel) ||
|
|
423
|
+
fmt->fini(of)) {
|
|
424
|
+
fprintf(stderr, "%s: error writing to %s: %s\n",
|
|
425
|
+
progname, *argv, strerror(errno));
|
|
426
|
+
return 1;
|
|
427
|
+
}
|
|
428
|
+
|
|
429
|
+
fclose(of);
|
|
430
|
+
return 0;
|
|
431
|
+
}
|