Add support for directly generating Intel hex or Motorola S-records.
These formats are commonly used with ROM burners.
Signed-off-by: H. Peter Anvin <hpa@zytor.com>
Allow the backend to specify that an output format is either text or
binary. For future uses, define this as a flag word so we can define
other flags in the future if it would make sense.
Currently, the ieee and dbg formats are text; all the others are
binary.
Signed-off-by: H. Peter Anvin <hpa@zytor.com>
We explicitly want the compiler to pessimize the taken case of the
assert, so unlikely() is appropriate here.
Signed-off-by: H. Peter Anvin <hpa@zytor.com>
The more common acronym for Intel Hex seems to be "ith", but the
legacy utility was "rdf2ihx", so we allow both variants. However, the
Makefile rule was wrong.
Signed-off-by: H. Peter Anvin <hpa@zytor.com>
Make the base addresses in rdfload unsigned. Note: this file is
really obsolete; it can't represent RDF2 with more than the 3
old-style segments.
Signed-off-by: H. Peter Anvin <hpa@zytor.com>
Remove rdf2ihx.c since I think it's unlikely we'll ever get it
relicensed -- any attempts at contacting the author has failed, and
it's easier to reconstruct it from scratch.
Signed-off-by: H. Peter Anvin <hpa@zytor.com>
Beginnings of a crude utility to dump the contents of an OMF (obj)
file. At this point all it does it breaks it down into the individual
records and dumps those, but it is still easier to read than a pure
hexdump.
See http://www.azillionmonkeys.com/qed/Omfg.pdf for the format spec.
Signed-off-by: H. Peter Anvin <hpa@zytor.com>
Fix report_error() to (hopefully) not fault if used without ERR_NOFILE
if no filename is available.
Avoid nuisance phase error between passes warnings if we have detected
other errors. In those case, the phase error is almost certainly
spurious.
Signed-off-by: H. Peter Anvin <hpa@zytor.com>
SEG <undefined> can happen, validly, for a common symbol during the
optimization passes. It better not happen during the real passes,
however!
Signed-off-by: H. Peter Anvin <hpa@zytor.com>
Add new nasm_assert() function, and add "const" to the declarations
which take filenames, as well as to the nasm_strdup/strndup functions.
Signed-off-by: H. Peter Anvin <hpa@zytor.com>
Received authorization from Apple to change the license of outmacho.c
to the 2-clause BSD license. Thanks!
Signed-off-by: H. Peter Anvin <hpa@zytor.com>
To the best of my knowledge, the only file which we don't have 2-BSD
relicensing permission for at this stage is rdf2ihx.c. That file
probably should just be rewritten, if anyone cares.
Signed-off-by: H. Peter Anvin <hpa@zytor.com>
Add new copyright headers to the new output modules. As far as I
know, the only module which we still don't have a green light to
release under 2-BSD is outmacho.
Signed-off-by: H. Peter Anvin <hpa@zytor.com>
Add copyright headers to the *.c/*.h files in the main directory. For
files where I'm sure enough that we have all the approvals, I have
given them the 2-BSD license, the others have been given the "LGPL for
now" license header. Most of them can probably be changed after
auditing.
Signed-off-by: H. Peter Anvin <hpa@zytor.com>
This adds copyright verbiage to the Perl scripts. Scripts that are
known to be clean w.r.t. the 2-clause BSD license are given that
license; unclear ones are given the "LGPL for now".
Signed-off-by: H. Peter Anvin <hpa@zytor.com>
Move the prototypes for the null debugging format to outform.h (for
the top-level structure declaration only) and outlib.h (for the
internal routines.)
Signed-off-by: H. Peter Anvin <hpa@zytor.com>
Move backend-specific code into the output/ directory, and make the
null debugging backend a separate file (it certainly isn't needed for
ndisasm...)
Signed-off-by: H. Peter Anvin <hpa@zytor.com>
Make all the null debug routines available as a library, so we can use
them whenever appropriate. We really don't need to have a bunch of
dummy functions scattered all over the code.
Signed-off-by: H. Peter Anvin <hpa@zytor.com>
We already call current_dfmt->init in the same place (at the very end
of ofmt->init) in all the backends that do it; instead call it
centrally in nasm.c after ofmt->init.
This fixes invalid ELF files with when compiling with -F dwarf, since
the dwarf initialization routine never got called.
Signed-off-by: H. Peter Anvin <hpa@zytor.com>
When optimizing, we have to keep track of common labels, since a
common symbol cannot be optimized -- only the linker will know where
it will end up. In that sense it is similar to an EXTERN symbol.
Thus, allow them to be entered in the symbol table but make sure we
don't holler too hard on redefinition.
Signed-off-by: H. Peter Anvin <hpa@zytor.com>