• Russ Cox's avatar
    gc, ld: detect stale or incompatible object files · 3f61184e
    Russ Cox authored
    The object files begin with a header that is
    
            $GOARCH
    
    on a line by itself.  This CL changes that header to
    
            go object $GOOS $GOARCH release.2011-01-01 4567+
    
    where the final two fields are the most recent release
    tag and the current hg version number.
    
    All objects imported into a Go compilation or linked into an
    executable must have the same header line, and that header
    line must match the compiler and linker versions.
    
    The effect of this will be that if you update and run all.bash
    and then try to link in objects compiled with an earlier version
    of the compiler (or invoke the wrong version of the compiler),
    you will get an error showing the different headers instead
    of perhaps silent incompatibility.
    
    Normal usage with all.bash should be unaffected, because
    all.bash deletes all the object files in $GOROOT/pkg/$GOOS_$GOARCH
    and cleans all intermediate object files before starting.
    
    This change is intended to diagnose stale objects arising when
    users maintaining alternate installation directories forget to
    rebuild some of their files after updating.
    
    It should help make the adoption of $GOPATH (CL 3780043)
    less error-prone.
    
    R=ken2, r
    CC=golang-dev
    https://golang.org/cl/4023063
    3f61184e
subr.c 62.2 KB