diff --git a/dynasm/dasm_arm.h b/dynasm/dasm_arm.h index 691cfdd7..d83cbbb3 100644 --- a/dynasm/dasm_arm.h +++ b/dynasm/dasm_arm.h @@ -211,7 +211,8 @@ void dasm_put(Dst_DECL, int start, ...) case DASM_ALIGN: ofs += (ins & 255); b[pos++] = ofs; break; case DASM_REL_LG: n = (ins & 2047) - 10; pl = D->lglabels + n; - if (n >= 0) { CKPL(lg, LG); goto putrel; } /* Bkwd rel or global. */ + /* Bkwd rel or global. */ + if (n >= 0) { CK(n>=10||*pl<0, RANGE_LG); CKPL(lg, LG); goto putrel; } pl += 10; n = *pl; if (n < 0) n = 0; /* Start new chain for fwd rel if label exists. */ goto linkrel; diff --git a/dynasm/dasm_mips.h b/dynasm/dasm_mips.h index 77a8eb52..0866beb8 100644 --- a/dynasm/dasm_mips.h +++ b/dynasm/dasm_mips.h @@ -202,7 +202,8 @@ void dasm_put(Dst_DECL, int start, ...) case DASM_ALIGN: ofs += (ins & 255); b[pos++] = ofs; break; case DASM_REL_LG: n = (ins & 2047) - 10; pl = D->lglabels + n; - if (n >= 0) { CKPL(lg, LG); goto putrel; } /* Bkwd rel or global. */ + /* Bkwd rel or global. */ + if (n >= 0) { CK(n>=10||*pl<0, RANGE_LG); CKPL(lg, LG); goto putrel; } pl += 10; n = *pl; if (n < 0) n = 0; /* Start new chain for fwd rel if label exists. */ goto linkrel; diff --git a/dynasm/dasm_ppc.h b/dynasm/dasm_ppc.h index 774ee6ed..13c44611 100644 --- a/dynasm/dasm_ppc.h +++ b/dynasm/dasm_ppc.h @@ -202,7 +202,8 @@ void dasm_put(Dst_DECL, int start, ...) case DASM_ALIGN: ofs += (ins & 255); b[pos++] = ofs; break; case DASM_REL_LG: n = (ins & 2047) - 10; pl = D->lglabels + n; - if (n >= 0) { CKPL(lg, LG); goto putrel; } /* Bkwd rel or global. */ + /* Bkwd rel or global. */ + if (n >= 0) { CK(n>=10||*pl<0, RANGE_LG); CKPL(lg, LG); goto putrel; } pl += 10; n = *pl; if (n < 0) n = 0; /* Start new chain for fwd rel if label exists. */ goto linkrel; diff --git a/dynasm/dasm_x86.h b/dynasm/dasm_x86.h index eb2bc768..c91bfdd5 100644 --- a/dynasm/dasm_x86.h +++ b/dynasm/dasm_x86.h @@ -213,7 +213,8 @@ void dasm_put(Dst_DECL, int start, ...) case DASM_REL_LG: case DASM_IMM_LG: n = *p++; pl = D->lglabels + n; - if (n <= 246) { CKPL(lg, LG); goto putrel; } /* Bkwd rel or global. */ + /* Bkwd rel or global. */ + if (n <= 246) { CK(n>=10||*pl<0, RANGE_LG); CKPL(lg, LG); goto putrel; } pl -= 246; n = *pl; if (n < 0) n = 0; /* Start new chain for fwd rel if label exists. */ goto linkrel;