... | ... |
@@ -351,6 +351,8 @@ resolve(void) |
351 | 351 |
if(!(l = findlabel(r->name))) |
352 | 352 |
return error("Unknown relative reference", r->name); |
353 | 353 |
p.data[r->addr + 1] = (Sint8)(l->addr - r->addr - 3); |
354 |
+ if((Sint8)p.data[r->addr + 1] != (l->addr - r->addr - 3)) |
|
355 |
+ return error("Relative reference is too far", r->name); |
|
354 | 356 |
l->refs++; |
355 | 357 |
break; |
356 | 358 |
case ';': |