]> Cypherpunks repositories - gostls13.git/commit
[dev.cc] liblink: invoke 'go tool objwriter' to implement writeobj, if directed
authorRuss Cox <rsc@golang.org>
Mon, 19 Jan 2015 18:24:43 +0000 (13:24 -0500)
committerRuss Cox <rsc@golang.org>
Wed, 21 Jan 2015 03:15:04 +0000 (03:15 +0000)
commitbe818361b9a5e73ade75fa1999ed0dec81de7cb6
tree34b62d0de1c4998e5ae4a6f8af2999c4a5d2d8c6
parent35d3987dbc49d0e2cae4e0cf70dabb62e62cbc50
[dev.cc] liblink: invoke 'go tool objwriter' to implement writeobj, if directed

This CL enables moving the bulk of the object writing code
out of liblink and into translated Go libraries in cmd/internal/obj,
but it does not do the move.

This CL introduces two new environment variables,
$GOOBJ and $GOOBJWRITER, but both will be deleted along with
the rest of the liblink C code.

The default behavior of a build is unchanged by this CL:
the C version of liblink uses the C object layout and writing code.

If $GOOBJ=1, liblink invokes go tool objwriter instead.

If $GOOBJ=2, liblink does its own layout and then invokes
go tool objwriter, which checks that it gets the same answer.

That is, in $GOOBJ=2 mode, both the C and the Go version of
the code run, and the operation fails if the two produce different
answers. This provides a very strong check that the translation
is working correctly.

Change-Id: I56ab49b07ccb2c7b81085f1d6950131047c6aa3c
Reviewed-on: https://go-review.googlesource.com/3048
Reviewed-by: Ian Lance Taylor <iant@golang.org>
include/link.h
src/liblink/objfile.c
src/liblink/objfilego.c [new file with mode: 0644]