aboutsummaryrefslogtreecommitdiff
path: root/src/liblink/objfile.c
diff options
context:
space:
mode:
authorRuss Cox <rsc@golang.org>2014-04-14 13:20:51 -0400
committerRuss Cox <rsc@golang.org>2014-04-14 13:20:51 -0400
commit0e8de61d7311d6bc74fc244de44df9be452a112b (patch)
treec1fc4bd0d6c4973b8b2f66ad495472c84d21a3d0 /src/liblink/objfile.c
parent071a0f4d18c5b5869bdcb6b0ca0e396cfa4506c6 (diff)
downloadgo-0e8de61d7311d6bc74fc244de44df9be452a112b.tar.xz
liblink, cmd/link: add version number to object file
There are changes we know we want to make, but not before Go 1.3 Add a version number so that we can make them more easily later. LGTM=iant R=iant CC=golang-codereviews https://golang.org/cl/87670043
Diffstat (limited to 'src/liblink/objfile.c')
-rw-r--r--src/liblink/objfile.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/src/liblink/objfile.c b/src/liblink/objfile.c
index b602536251..f0f3f76223 100644
--- a/src/liblink/objfile.c
+++ b/src/liblink/objfile.c
@@ -16,6 +16,7 @@
// The file format is:
//
// - magic header: "\x00\x00go13ld"
+// - byte 1 - version number
// - sequence of strings giving dependencies (imported packages)
// - empty string (marks end of sequence)
// - sequence of defined symbols
@@ -248,7 +249,8 @@ linkwriteobj(Link *ctxt, Biobuf *b)
Bputc(b, 0);
Bputc(b, 0);
Bprint(b, "go13ld");
-
+ Bputc(b, 1); // version
+
// Emit autolib.
for(h = ctxt->hist; h != nil; h = h->link)
if(h->offset < 0)
@@ -453,6 +455,8 @@ ldobjfile(Link *ctxt, Biobuf *f, char *pkg, int64 len, char *pn)
Bread(f, buf, sizeof buf);
if(memcmp(buf, startmagic, sizeof buf) != 0)
sysfatal("%s: invalid file start %x %x %x %x %x %x %x %x", pn, buf[0], buf[1], buf[2], buf[3], buf[4], buf[5], buf[6], buf[7]);
+ if((c = Bgetc(f)) != 1)
+ sysfatal("%s: invalid file version number %d", pn, c);
for(;;) {
lib = rdstring(f);