diff options
author | Victor van den Elzen <victor.vde@gmail.com> | 2008-12-10 13:04:58 +0100 |
---|---|---|
committer | Victor van den Elzen <victor.vde@gmail.com> | 2008-12-10 13:04:58 +0100 |
commit | 352fe06e02034394107e2ad625018eff731a9b01 (patch) | |
tree | f8616d9d0cb61a0e717f4e9b7659bf0075cf9855 /assemble.c | |
parent | 2b5ad13bc184b19dc11c6298cfb55663338299cb (diff) | |
download | nasm-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.c | 19 |
1 files changed, 7 insertions, 12 deletions
@@ -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; } |