generation code wasn't seeing it because it wasn't looking at the modified
opersize.
Bug noticed by: Antoine Leca <antoine64leca@unknown> (x86-64 discuss ML)
svn path=/trunk/yasm/; revision=1022
module users to ensure the module interface they're using matches the
interface the module was compiled with. The #define YASM_module_VERSION
should be incremented on every functional change to the module interface.
svn path=/trunk/yasm/; revision=1021
differentiate e.g. AMD64 from x86. Doesn't prohibit anything in x86 yet,
but does standardize unsupported warnings across objfmts (most objfmts will
not support all machines and/or all architectures).
svn path=/trunk/yasm/; revision=1020
use of configure.ac's --enable-warnerror, which was set up to disable
conversion errors due to flex's warning-prone generated code. As we no
longer use flex, fix configure.ac to not disable conversion errors.
svn path=/trunk/yasm/; revision=1018
- Switch to bit-based output, including shift capability
- This means the standard intnum output functions can be used for non-byte
oriented archs like LC-3b (implemented)
- Default out of range (overflow) warnings for intnum (bugzilla bug 14)
- Change floating point overflow/underflow errors to warnings
To do (hooks but not implemented):
- Shifting floatnums into destination
- Floatnum destinations larger than floatnum value
- Big endian support for intnum and floatnum
Related simultaneous changes:
- Use bc instead of ep in objfmt output_expr() functions; while bc->line
should == (*ep)->line, in case they differ, we want to use the bc->line
so as not to confuse users.
- lc3b-mp22NC test was not properly offsetting the accessed variables, but
since the variable "sections" started at an aligned offset, the output
was actually correct. The new intnum warnings uncovered this issue, so
fix code to be correct (and not generate warnings).
svn path=/trunk/yasm/; revision=1017
expression line number instead of the start line number (which may be 0,
which isn't nearly as useful as the expression line number).
svn path=/trunk/yasm/; revision=1016
ELF objfmt implementation.
Assumed to be correct for the test cases, but only tested as far as feasible.
Currently only implements 32bit 386 little-endian, but is mostly abstracted
well enough to easily add more machines.
svn path=/trunk/yasm/; revision=1015
three possible return states (okay, invalid, or indeterminate). Propagate
this return change into the yasm_x86__expr_checkea() call tree as necessary.
svn path=/trunk/yasm/; revision=1013
internal errors, and mis-optimization as seen in Bugzilla Bug 13.
Reported by: meor@softhome.net
Fix a few minor bugs (not heavily tested) due to use of opersize == 32 as a
comparison; this fails when opersize == 64 due to bits = 64, but the default
size is still 4 bytes, not 2.
There's still a couple cases here where we might end up with internal errors
due to a lack of variety in return values; I'll fix those in the next commit.
svn path=/trunk/yasm/; revision=1012
all <32 bit positive numbers are collapsed into ul form.
yasm_intnum_is_neg1(): fix bug which would equate 0xffffffff as -1.
svn path=/trunk/yasm/; revision=1010
intnum folding on and leveling performed would result in terms getting copied
over due to hitting o != i case after i++ but no o++.
Bugzilla: #12.
Reported by: meor@softhome.net
svn path=/trunk/yasm/; revision=1009
yasm_intnum_get_int(): Properly overflow and handle INTNUM_UL properly
Elsewhere: use wordptr instead of intptr.
yasm_intnum_check_size() is still broken, but the interface for this will be
changing soon, so fix it then.
svn path=/trunk/yasm/; revision=1008
defining __NO_STRING_INLINES in strsep.c. Due to string.h inclusion in
util.h, extra level of indirection is needed
(NO_STRING_INLINES->__NO_STRING_INLINES).
svn path=/trunk/yasm/; revision=1004
- Up internal format size to 128 bit.
- Use full internal format size for all calculations.
- Always store negative numbers using full internal size
(avoids 0xffffffff == -1?? issue)
This fixes many inconsistencies in handling of >32-bit intnums.
svn path=/trunk/yasm/; revision=995
of [ORG] in bin objfmt. Still need to assess impact of self-referential
(invalid) ORG, and how to detect for that condition.
svn path=/trunk/yasm/; revision=990
similar label names).
Test also found a bug in COFF parsing of section options; this will be fixed
and a separate test added explicitly for it.
svn path=/trunk/yasm/; revision=982
Also, don't abort(), just exit()... unlike internal errors, which we want a
backtrace for, fatal errors may happen during normal operation.
svn path=/trunk/yasm/; revision=975