diff options
| author | Russ Cox <rsc@golang.org> | 2014-10-14 23:25:12 -0400 |
|---|---|---|
| committer | Russ Cox <rsc@golang.org> | 2014-10-14 23:25:12 -0400 |
| commit | 5e6bd29c2c522bf55d12bdd2c63c7a06b761617e (patch) | |
| tree | 2c4c40d53aaf5dd4a582b0e39a239952f80019b9 /src/liblink/data.c | |
| parent | 4f80b50e235dd6e7637cf1b15f450d5c50d5ba9f (diff) | |
| download | go-5e6bd29c2c522bf55d12bdd2c63c7a06b761617e.tar.xz | |
liblink: require DATA lines to be ordered by offset, with no overlap
The assembler could give a better error, but this one
is good enough for now.
Fixes #8880.
LGTM=r
R=r
CC=golang-codereviews
https://golang.org/cl/153610043
Diffstat (limited to 'src/liblink/data.c')
| -rw-r--r-- | src/liblink/data.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/src/liblink/data.c b/src/liblink/data.c index 4504f4171e..e5efa2eb2d 100644 --- a/src/liblink/data.c +++ b/src/liblink/data.c @@ -83,6 +83,8 @@ savedata(Link *ctxt, LSym *s, Prog *p, char *pn) siz = ctxt->arch->datasize(p); if(off < 0 || siz < 0 || off >= 1<<30 || siz >= 100) mangle(pn); + if(ctxt->enforce_data_order && off < s->np) + ctxt->diag("data out of order (already have %d)\n%P", p); symgrow(ctxt, s, off+siz); if(p->to.type == ctxt->arch->D_FCONST) { |
