Unbreak relative references to immediate addresses
Remove bogus "treat labels different from immediates" code, which
would result in generating of a relative mod/rm but without adjusting
the address accordingly.
Update addressing mode test.
diff --git a/assemble.c b/assemble.c
index 4d56a65..6adaec6 100644
--- a/assemble.c
+++ b/assemble.c
@@ -1601,10 +1601,9 @@
case 2:
case 4:
data = ins->oprs[(c >> 3) & 7].offset;
- if (ea_data.rip && (ins->oprs[(c >> 3) & 7].segment == 0xFFFFFFFF))
- ea_data.rip = 0; /* Make distinction between Symbols and Immediates */
- out(offset, segment, &data, /* RIP = Relative, not Absolute */
- (ea_data.rip ? OUT_REL4ADR : OUT_ADDRESS) + ea_data.bytes,
+ out(offset, segment, &data,
+ (ea_data.rip ? OUT_REL4ADR : OUT_ADDRESS)
+ + ea_data.bytes,
ins->oprs[(c >> 3) & 7].segment,
ins->oprs[(c >> 3) & 7].wrt);
s += ea_data.bytes;