aboutsummaryrefslogtreecommitdiff
path: root/src/liblink/data.c
diff options
context:
space:
mode:
authorRuss Cox <rsc@golang.org>2014-10-14 23:25:12 -0400
committerRuss Cox <rsc@golang.org>2014-10-14 23:25:12 -0400
commit5e6bd29c2c522bf55d12bdd2c63c7a06b761617e (patch)
tree2c4c40d53aaf5dd4a582b0e39a239952f80019b9 /src/liblink/data.c
parent4f80b50e235dd6e7637cf1b15f450d5c50d5ba9f (diff)
downloadgo-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.c2
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) {