diff options
Diffstat (limited to 'src/cmd/ld/data.c')
| -rw-r--r-- | src/cmd/ld/data.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/src/cmd/ld/data.c b/src/cmd/ld/data.c index 92c6fb57ce..3cf0bbdfe1 100644 --- a/src/cmd/ld/data.c +++ b/src/cmd/ld/data.c @@ -132,6 +132,7 @@ relocsym(LSym *s) { Reloc *r; LSym *rs; + int16 i16; int32 i, off, siz, fl; vlong o; uchar *cast; @@ -317,6 +318,14 @@ relocsym(LSym *s) // TODO(rsc): Remove. s->p[off] = (int8)o; break; + case 2: + if(o != (int16)o) + diag("relocation address is too big: %#llx", o); + i16 = o; + cast = (uchar*)&i16; + for(i=0; i<2; i++) + s->p[off+i] = cast[inuxi2[i]]; + break; case 4: if(r->type == R_PCREL || r->type == R_CALL) { if(o != (int32)o) |
