summaryrefslogtreecommitdiff
path: root/assemble.c
diff options
context:
space:
mode:
authorVictor van den Elzen <victor.vde@gmail.com>2008-12-10 13:04:58 +0100
committerVictor van den Elzen <victor.vde@gmail.com>2008-12-10 13:04:58 +0100
commit352fe06e02034394107e2ad625018eff731a9b01 (patch)
treef8616d9d0cb61a0e717f4e9b7659bf0075cf9855 /assemble.c
parent2b5ad13bc184b19dc11c6298cfb55663338299cb (diff)
downloadnasm-352fe06e02034394107e2ad625018eff731a9b01.tar.gz
BR 2413272: Warn about byte displacement overflow
Remove the special case for single byte displacements, which was already in out() anyway.
Diffstat (limited to 'assemble.c')
-rw-r--r--assemble.c19
1 files changed, 7 insertions, 12 deletions
diff --git a/assemble.c b/assemble.c
index bf4314d1..0277d19e 100644
--- a/assemble.c
+++ b/assemble.c
@@ -1820,20 +1820,9 @@ static void gencode(int32_t segment, int64_t offset, int bits,
case 0:
break;
case 1:
- if (opy->segment != NO_SEG) {
- data = opy->offset;
- out(offset, segment, &data, OUT_ADDRESS, 1,
- opy->segment, opy->wrt);
- } else {
- *bytes = opy->offset;
- out(offset, segment, bytes, OUT_RAWDATA, 1,
- NO_SEG, NO_SEG);
- }
- s++;
- break;
- case 8:
case 2:
case 4:
+ case 8:
data = opy->offset;
warn_overflow(ea_data.bytes, opy);
s += ea_data.bytes;
@@ -1852,6 +1841,12 @@ static void gencode(int32_t segment, int64_t offset, int bits,
ea_data.bytes, opy->segment, opy->wrt);
}
break;
+ default:
+ /* Impossible! */
+ errfunc(ERR_PANIC,
+ "Invalid amount of bytes (%d) for offset?!",
+ ea_data.bytes);
+ break;
}
offset += s;
}