]> Cypherpunks repositories - gostls13.git/commit
misc/cgo/life: fix, add to build
authorRuss Cox <rsc@golang.org>
Fri, 17 Dec 2010 17:51:55 +0000 (09:51 -0800)
committerRuss Cox <rsc@golang.org>
Fri, 17 Dec 2010 17:51:55 +0000 (09:51 -0800)
commit0cd34753866bf6114df91d074f9e344cfd17aa1d
tree2e5575258a448326a6c29720acd9d57b8e89e9ff
parenta890d70cc1fff8513d89e88b7028132f6df40b42
misc/cgo/life: fix, add to build

#pragma dynexport is no longer needed for
this use of cgo, since the gcc and gc code are
now linked together into the same binary.
It may still be necessary later.

On the Mac, you cannot use the GOT to resolve
symbols that exist in the current binary, so 6l and 8l
translate the GOT-loading mov instructions into lea
instructions.

On ELF systems, we could use the GOT for those
symbols, but for consistency 6l and 8l apply the
same translation.

The translation is sketchy in the extreme
(depending on the relocation being in a mov
instruction) but it verifies that the instruction
is a mov before rewriting it to lea.

Also makes typedefs global across files.

Fixes #1335.
Fixes #1345.

R=iant, r
CC=golang-dev
https://golang.org/cl/3650042
12 files changed:
misc/cgo/life/Makefile
misc/cgo/life/golden.out [new file with mode: 0644]
misc/cgo/life/test.bash [new file with mode: 0755]
src/Make.pkg
src/cmd/6l/asm.c
src/cmd/8l/8.out.h
src/cmd/8l/asm.c
src/cmd/cgo/gcc.go
src/cmd/cgo/main.go
src/cmd/cgo/out.go
src/pkg/runtime/cgo/Makefile
src/run.bash