1
0
mirror of https://github.com/golang/go synced 2024-10-04 20:11:22 -06:00
go/misc/cgo/test
Russ Cox e5c105033a cmd/gc: disable link-time copying of un-Go-initialized globals
If you write:

        var x = 3

then the compiler arranges for x to be initialized in the linker
with an actual 3 from the data segment, rather than putting
x in the bss and emitting init-time "x = 3" assignment code.

If you write:

        var y = x
        var x = 3

then the compiler is clever and treats this the same as if
the code said 'y = 3': they both end up in the data segment
with no init-time assignments.

If you write

        var y = x
        var x int

then the compiler was treating this the same as if the
code said 'x = 0', making both x and y zero and avoiding
any init-time assignment.

This copying optimization to avoid init-time assignment of y
is incorrect if 'var x int' doesn't mean 'x = 0' but instead means
'x is initialized in C or assembly code'. The program ends up
with 'y = 0' instead of 'y = the value specified for x in that other code'.

Disable the propagation if there is no initializer for x.

This comes up in some uses of cgo, because cgo generates
Go globals that are initialized in accompanying C files.

Fixes #7665.

LGTM=iant
R=golang-codereviews, iant
CC=golang-codereviews
https://golang.org/cl/93200044
2014-05-09 16:03:44 -04:00
..
backdoor misc/cgo/test/backdoor: add gccgo version of backdoor function 2014-04-26 22:31:32 -07:00
align.go test: Add the usual Copyright notice. 2012-01-24 14:48:15 -05:00
api.go misc/cgo/test: check API compatibility for cgo pseudo-functions 2013-05-30 02:59:57 +08:00
basic.go cgo: enable cgo on openbsd 2012-12-21 01:43:19 +11:00
callback_c_gc.c misc/cgo/test: fix C panic test to work with gccgo 2013-10-11 11:24:54 -07:00
callback_c_gccgo.c misc/cgo/test: fix C panic test to work with gccgo 2013-10-11 11:24:54 -07:00
callback_c.c misc/cgo/test: fix C panic test to work with gccgo 2013-10-11 11:24:54 -07:00
callback.go runtime/cgo: mark callback functions as NOSPLIT 2013-10-09 08:44:47 -07:00
cflags.go cmd/cgo, cmd/go: remove #cgo directive parsing from cmd/cgo 2013-04-10 21:41:54 -07:00
cgo_linux_test.go runtime: co-exist with NPTL's pthread_cancel. 2014-01-09 09:34:04 -08:00
cgo_test.go cmd/gc: disable link-time copying of un-Go-initialized globals 2014-05-09 16:03:44 -04:00
cthread_unix.c cgo: enable cgo on dragonfly 2013-09-04 15:19:21 -07:00
cthread_windows.c runtime: allow cgo callbacks on non-Go threads 2013-02-20 17:48:23 -05:00
cthread.go runtime: fix stack pointer corruption in runtime.cgocallback_gofunc() 2013-04-30 04:13:32 +08:00
duplicate_symbol.go cgo: omit duplicate symbols in writeDefs 2011-08-16 14:56:23 -04:00
env.go misc/cgo/test: make tests run on windows 2012-01-20 12:59:44 +11:00
exports.go cgo: add missing semicolon in generated struct 2011-07-18 07:23:52 -07:00
fpvar.go cmd/cgo: Add support for C function pointers 2013-08-13 12:42:21 -04:00
helpers.go cgo: fix incorrect print found by govet 2011-11-29 14:40:34 +11:00
issue1222.go runtime: scheduler, cgo reorganization 2011-03-07 10:37:42 -05:00
issue1328.go misc/cgo: re-enable some tests 2012-03-06 23:27:30 -05:00
issue1560.go misc/cgo/test: deflake TestParallelSleep once more 2013-05-18 02:55:44 +08:00
issue1635.go cmd/ld: handle a special case of scattered relocation 2/1 on Darwin/386 2012-08-29 23:42:05 +08:00
issue2462.go cgo: support export for built-in types 2011-12-20 09:28:45 -08:00
issue3250.go misc/cgo/test: skip test for issue 3250, the runtime isn't ready yet. 2013-07-15 14:37:36 +08:00
issue3250w.go runtime: correctly handle signals received on foreign threads 2013-07-12 04:39:39 +08:00
issue3261.go cmd/go: new cgo build procedure 2012-08-17 03:42:34 +08:00
issue3729.go cmd/cgo: access errno from void C function 2012-12-18 00:26:08 +08:00
issue3729w.go cmd/cgo: access errno from void C function 2012-12-18 00:26:08 +08:00
issue3741.go cmd/cgo: generate definitions for GoSlice 2012-06-30 12:40:07 +08:00
issue3775.go misc/cgo/test: test recursive internal OS thread lock 2013-07-23 14:43:55 -04:00
issue3945.go runtime: increase stack frame during cgo call on windows/amd64 2012-09-03 12:12:51 +10:00
issue4029.go misc/cgo/test: do not stop on first error 2013-03-06 15:03:28 -05:00
issue4029w.go misc/cgo/test: add -ldl to LDFLAGS on Linux, ignore issue4029 on windows (fix build) 2012-10-10 01:30:34 +08:00
issue4054a.go cgo: process DWARF info even when debug data is used for value 2012-09-20 13:20:33 +10:00
issue4054b.go cgo: process DWARF info even when debug data is used for value 2012-09-20 13:20:33 +10:00
issue4273.c cmd/ld: handle weak symbols 2012-10-30 23:58:43 +08:00
issue4273b.c cmd/ld: handle weak symbols 2012-10-30 23:58:43 +08:00
issue4339.c misc/cgo/test: test of issue 4339 2013-09-11 09:56:38 -04:00
issue4339.go misc/cgo/test: test of issue 4339 2013-09-11 09:56:38 -04:00
issue4339.h misc/cgo/test: test of issue 4339 2013-09-11 09:56:38 -04:00
issue4417.go cmd/cgo: access errno from void C function 2012-12-18 00:26:08 +08:00
issue4857.go cmd/cgo: using __typeof__(a->r) instead of putting invalid TYPE in "a->r = (const TYPE)" 2013-06-02 22:46:53 +08:00
issue5227.go misc/cgo/test: fix a gcc warning 2013-04-18 02:33:55 +08:00
issue5337.go misc/cgo/test: make test work with -linkmode=internal 2013-07-11 23:24:35 -04:00
issue5337w.go misc/cgo/test: add missing import 2013-05-15 15:34:47 +10:00
issue5548_c.c cmd/cgo: use intgo, not int, for string and slice structures 2013-05-23 22:51:07 -07:00
issue5548.go cmd/cgo: use intgo, not int, for string and slice structures 2013-05-23 22:51:07 -07:00
issue5603.go cmd/cgo: use gcc_struct attribute for packed structs to work around GCC PR52991. 2013-06-09 22:06:29 +08:00
issue5740.go cmd/ld: handle duplicate static symbols in COFF and Mach-O files. 2013-09-18 22:27:25 -04:00
issue5740a.c cmd/ld: handle duplicate static symbols in COFF and Mach-O files. 2013-09-18 22:27:25 -04:00
issue5740b.c cmd/ld: handle duplicate static symbols in COFF and Mach-O files. 2013-09-18 22:27:25 -04:00
issue5986.go cmd/go: fix missing __mingw_fprintf symbol for cgo on windows 2013-09-19 01:20:02 -04:00
issue6128.go cmd/cgo: fix Xcode 5 incompatibility for #defined expressions 2013-10-15 14:34:46 -04:00
issue6390.go cmd/cgo: fix build (missing file from earlier CL) 2013-09-16 14:21:54 -04:00
issue6472.go debug/dwarf: handle surprising clang encoding 2013-10-09 11:08:22 -04:00
issue6506.go misc/cgo/test: cut out non-standard functions 2013-10-15 14:25:29 -04:00
issue6612.go cmd/cgo: stop using compiler error message text to analyze C names 2013-10-18 15:56:25 -04:00
issue6833_c.c cmd/cgo: use __gcc_struct__ for go exported functions 2013-12-10 11:30:12 +11:00
issue6833.go cmd/cgo: use __gcc_struct__ for go exported functions 2013-12-10 11:30:12 +11:00
issue6997_linux.c runtime: co-exist with NPTL's pthread_cancel. 2014-01-09 09:34:04 -08:00
issue6997_linux.go runtime: co-exist with NPTL's pthread_cancel. 2014-01-09 09:34:04 -08:00
issue7234_test.go cmd/ld: fix bug with "runtime/cgo" in external link mode 2014-01-30 09:25:47 -08:00
issue7665.go cmd/gc: disable link-time copying of un-Go-initialized globals 2014-05-09 16:03:44 -04:00
issue7695_test.go test: demo for issue 7695 2014-04-16 23:06:37 -04:00
setgid_linux.go misc/cgo/test: only run setgid test on GNU/Linux 2012-07-28 10:40:51 -07:00
sleep_windows_386.go cmd/go: new cgo build procedure 2012-08-17 03:42:34 +08:00