go/test
Russ Cox feb6131b1a cmd/compile: add -linkobj flag to allow writing object file in two parts
This flag is experimental and the semantics may change
even after Go 1.7 is released. There are no changes to code
not using the flag.

The first part is for reading by future compiles.
The second part is for reading by the final link step.
Splitting the file this way allows distributed build systems
to ship the compile-input part only to compile steps and
the linker-input part only to linker steps.

The first part is basically just the export data,
and the second part is basically everything else.
The overall files still have the same broad structure,
so that existing tools will work with both halves.
It's just that various pieces are empty in the two halves.

This also copies the two bits of data the linker needed from
export data into the object header proper, so that the linker
doesn't need any export data at all. That eliminates a TODO
that was left for switching to the binary export data.
(Now the linker doesn't need to know about the switch.)

The default is still to write out a combined output file.
Nothing changes unless you pass -linkobj to the compiler.
There is no support in the go command for -linkobj,
since the go command doesn't copy objects around.
The expectation is that other build systems (like bazel, say)
might take advantage of this.

The header adjustment and the option for the split output
was intended as part of the zip archives, but the zip archives
have been cut from Go 1.7. Doing this to the current archives
both unblocks one step in the switch to binary export data
and enables alternate build systems to experiment with the
new flag using the Go 1.7 release.

Change-Id: I8b6eab25b8a22b0a266ba0ac6d31e594f3d117f3
Reviewed-on: https://go-review.googlesource.com/22500
Run-TryBot: Russ Cox <rsc@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
Reviewed-by: Robert Griesemer <gri@golang.org>
2016-05-09 17:31:45 +00:00
..
bench all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
bugs all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
chan all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
ddd2.dir all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
dwarf test: make rundir match compiledir/errorcheckdir. 2013-01-11 22:00:48 +01:00
fixedbugs cmd/compile: fix binary export of composite literals with implicit types 2016-05-09 06:16:07 +00:00
import2.dir all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
import4.dir test: adjust gccgo expected import errors 2015-10-07 14:37:44 +00:00
interface all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
intrinsic.dir cmd/compile: added some intrinsics to SSA back end 2016-03-28 16:29:59 +00:00
ken all: fix spelling mistakes 2016-04-03 17:03:15 +00:00
method4.dir cmd/gc: do not omit wrapper for expression (interface{...}).F 2014-01-07 13:26:48 +01:00
safe test: adapt old-style tests to new flag parsing. 2013-01-11 22:05:46 +01:00
stress all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
syntax all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
64bit.go cmd/gc: Error out on division by constant zero. 2013-01-30 20:21:08 +01:00
235.go
alg.go test: add test that required algs get generated 2016-04-24 21:36:52 +00:00
alias.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
alias1.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
append.go
args.go
assign.go cmd/gc: prohibit short variable declarations containing duplicate symbols 2014-10-06 17:16:39 -04:00
assign1.go
atomicload.go cmd/compile: keep value use counts in SSA 2016-03-17 04:20:02 +00:00
bigalg.go test: ensure all failing tests exit nonzero. 2013-02-12 13:17:49 -05:00
bigmap.go
blank.go test: revert changes made for Go SSA interpreter test. 2013-10-08 14:36:20 -04:00
blank1.go cmd/compile: don't allow blank method declarations on builtins 2015-12-02 18:26:38 +00:00
bom.go
bombad.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
bounds.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
chancap.go
chanlinear.go runtime: test for linear enqueue/dequeue behavior 2014-12-08 22:18:17 +00:00
char_lit.go
char_lit1.go
checkbce.go cmd/compile: bce when max and limit are consts 2016-04-11 16:01:22 +00:00
clearfat.go [dev.power64] 9g: fix under-zeroing in clearfat 2014-10-31 11:08:27 -04:00
closedchan.go
closure.go
closure1.go cmd/gc: capture variables by value 2015-01-29 13:07:30 +00:00
closure2.go cmd/gc: fix capturing by value for range statements 2015-02-03 15:48:48 +00:00
cmp.go Fix several out of date references to 4g/5g/6g/8g/9g. 2015-06-26 03:38:21 +00:00
cmp6.go cmd/gc: do not consider length zero arrays as comparable. 2014-01-31 00:30:56 +01:00
cmplx.go cmd/gc: reject complex calls with mismatched argument types. 2013-03-11 22:55:14 +01:00
cmplxdivide.c all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
cmplxdivide.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
cmplxdivide1.go
complit.go
complit1.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
compos.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
const.go cmd/compile: allow huge rsh in constants arithmetic 2015-08-21 20:27:22 +00:00
const1.go test: match gccgo error messages 2013-12-12 17:18:12 -08:00
const2.go
const3.go
const4.go all: link to https instead of http 2015-07-11 14:36:33 +00:00
const5.go all: link to https instead of http 2015-07-11 14:36:33 +00:00
const6.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
convT2X.go
convert.go
convert1.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
convert3.go
convlit.go cmd/internal/gc: unsafe.Pointer constants may only be converted to uintptr 2015-05-07 23:54:28 +00:00
convlit1.go
copy.go test: ensure all failing tests exit nonzero. 2013-02-12 13:17:49 -05:00
crlf.go
ddd.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
ddd1.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
ddd2.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
decl.go test: ensure all failing tests exit nonzero. 2013-02-12 13:17:49 -05:00
declbad.go
defer.go test: ensure all failing tests exit nonzero. 2013-02-12 13:17:49 -05:00
deferfin.go runtime: combine small NoScan allocations 2014-01-24 22:35:11 +04:00
deferprint.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
deferprint.out
divide.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
divmod.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
empty.go
env.go
eof.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
eof1.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
errchk Fix several out of date references to 4g/5g/6g/8g/9g. 2015-06-26 03:38:21 +00:00
escape.go test: ensure all failing tests exit nonzero. 2013-02-12 13:17:49 -05:00
escape2.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
escape2n.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
escape3.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
escape4.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
escape5.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
escape_array.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
escape_because.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
escape_calls.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
escape_closure.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
escape_field.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
escape_iface.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
escape_indir.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
escape_level.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
escape_map.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
escape_param.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
escape_slice.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
escape_struct_param1.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
escape_struct_param2.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
escape_struct_return.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
fibo.go Fix whitespace (use blanks consistently). 2014-12-08 22:22:58 +00:00
finprofiled.go runtime: fix finalization and profiling of tiny allocations 2015-11-03 18:57:18 +00:00
float_lit.go test: ensure all failing tests exit nonzero. 2013-02-12 13:17:49 -05:00
float_lit2.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
float_lit3.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
floatcmp.go test: ensure all failing tests exit nonzero. 2013-02-12 13:17:49 -05:00
for.go
func.go
func1.go cmd/gc: ensure unique parameter and result names in function types 2013-03-15 15:24:13 -04:00
func2.go
func3.go
func4.go
func5.go
func6.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
func7.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
func8.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
funcdup.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
funcdup2.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
gc.go
gc1.go
gc2.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
gcstring.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
goprint.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
goprint.out
goto.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
heapsampling.go test: really force heap profile update in heapsampling.go 2015-11-12 18:32:13 +00:00
helloworld.go
helloworld.out
if.go
import.go
import1.go test: match gccgo import error messages 2013-12-12 19:02:11 -08:00
import2.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
import4.go
import5.go
index.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
index0.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
index1.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
index2.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
indirect.go
indirect1.go
init.go
init1.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
initcomma.go
initialize.go
initializerr.go test: add "duplicate" struct map key test 2012-12-17 11:05:58 -05:00
initloop.go cmd/compile: use []*Node instead of NodeList in sinit 2015-09-05 02:25:01 +00:00
inline.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
int_lit.go
intcvt.go
intrinsic.go cmd/compile: added some intrinsics to SSA back end 2016-03-28 16:29:59 +00:00
iota.go
label.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
label1.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
linkmain.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
linkmain_run.go test: fix linkmain test 2015-12-17 23:36:13 +00:00
linkobj.go cmd/compile: add -linkobj flag to allow writing object file in two parts 2016-05-09 17:31:45 +00:00
linkx.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
linkx_run.go test: print output on link -X failure 2016-04-20 17:37:35 +00:00
literal.go test: ensure all failing tests exit nonzero. 2013-02-12 13:17:49 -05:00
live.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
live1.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
live2.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
live_ssa.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
live_syscall.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
loopbce.go cmd/compile: bce when max and limit are consts 2016-04-11 16:01:22 +00:00
mallocfin.go
map.go test/mapnan.go: add regression test for non-empty interfaces. 2014-08-06 17:02:55 -04:00
map1.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
maplinear.go test: make maplinear more robust 2014-10-27 18:59:02 -04:00
method.go test: a number of fixes. 2013-02-11 18:20:52 -05:00
method1.go cmd/compile: ignore receiver parameters in Eqtype 2016-03-17 00:38:15 +00:00
method2.go cmd/gc: fix method values whose receiver is an unnamed interface. 2013-08-29 10:00:58 +02:00
method3.go
method4.go
method5.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
named.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
named1.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
nil.go test: ensure all failing tests exit nonzero. 2013-02-12 13:17:49 -05:00
nilcheck.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
nilptr.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
nilptr2.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
nilptr3.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
nilptr3_ssa.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
nilptr4.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
nosplit.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
nul1.go
opt_branchlikely.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
parentype.go
peano.go
phiopt.go cmd/compile: introduce bool operations. 2016-04-25 20:43:04 +00:00
print.go runtime: move built-in print routines to go. 2014-07-31 13:48:48 -07:00
print.out runtime: move built-in print routines to go. 2014-07-31 13:48:48 -07:00
printbig.go
printbig.out
prove.go cmd/compile: transform some Phis into Or8. 2016-04-19 22:04:30 +00:00
range.go cmd/gc: implement 'for range x {' 2014-07-16 19:27:10 -04:00
recover.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
recover1.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
recover2.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
recover3.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
recover4.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
reflectmethod1.go cmd/compile: track reflect.Type.Method in deadcode 2016-03-11 21:19:20 +00:00
reflectmethod2.go cmd/compile: track reflect.Type.Method in deadcode 2016-03-11 21:19:20 +00:00
reflectmethod3.go cmd/compile: track reflect.Type.Method in deadcode 2016-03-11 21:19:20 +00:00
reflectmethod4.go cmd/link: treat reflect.Value.Method like Call 2016-03-11 22:07:02 +00:00
rename.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
rename1.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
reorder.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
reorder2.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
return.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
rotate.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
rotate0.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
rotate1.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
rotate2.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
rotate3.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
run.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
rune.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
runtime.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
shift1.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
shift2.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
sieve.go
sigchld.go test: skip SIGCHLD test on Plan 9 2014-01-29 09:28:23 +01:00
sigchld.out
simassign.go
sinit.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
sinit_run.go all: retire architecture letter in file names, public API 2015-05-21 17:32:17 +00:00
sizeof.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
slice3.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
slice3err.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
slicecap.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
sliceopt.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
solitaire.go
stack.go
strength.go cmd/compile: generalize strength reduction of mulq 2016-03-30 22:27:13 +00:00
string_lit.go test: add []rune case to string_lit.go 2013-12-12 17:17:02 -08:00
stringrange.go
struct0.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
switch.go cmd/gc: disallow fallthrough in final case of switch 2013-03-15 00:35:09 -04:00
switch2.go cmd/compile: address several more 1.6 TODOs in parser 2015-11-21 07:21:23 +00:00
switch3.go
switch4.go cmd/gc: disallow fallthrough in final case of switch 2013-03-15 00:35:09 -04:00
tinyfin.go runtime: fix finalization and profiling of tiny allocations 2015-11-03 18:57:18 +00:00
torture.go cmd/8g: don't allocate a register early for cap(CHAN). 2014-07-01 09:20:51 +02:00
turing.go
typecheck.go cmd/gc: silence assignment errors to undefined symbols 2014-01-03 21:03:20 +01:00
typecheckloop.go cmd/compile: convert typecheck_stack to []*Node 2015-09-06 23:50:51 +00:00
typeswitch.go
typeswitch1.go
typeswitch2.go
typeswitch3.go
undef.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
utf.go
varerr.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
varinit.go
writebarrier.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
zerodivide.go test: ensure all failing tests exit nonzero. 2013-02-12 13:17:49 -05:00