• Russ Cox's avatar
    cmd/cc, cmd/ld, runtime: disallow conservative data/bss objects · 193daab9
    Russ Cox authored
    In linker, refuse to write conservative (array of pointers) as the
    garbage collection type for any variable in the data/bss GC program.
    
    In the linker, attach the Go type to an already-read C declaration
    during dedup. This gives us Go types for C globals for free as long
    as the cmd/dist-generated Go code contains the declaration.
    (Most runtime C declarations have a corresponding Go declaration.
    Both are bss declarations and so the linker dedups them.)
    
    In cmd/dist, add a few more C files to the auto-Go-declaration list
    in order to get Go type information for the C declarations into the linker.
    
    In C compiler, mark all non-pointer-containing global declarations
    and all string data as NOPTR. This allows them to exist in C files
    without any corresponding Go declaration. Count C function pointers
    as "non-pointer-containing", since we have no heap-allocated C functions.
    
    In runtime, add NOPTR to the remaining pointer-containing declarations,
    none of which refer to Go heap objects.
    
    In runtime, also move os.Args and syscall.envs data into runtime-owned
    variables. Otherwise, in programs that do not import os or syscall, the
    runtime variables named os.Args and syscall.envs will be missing type
    information.
    
    I believe that this CL eliminates the final source of conservative GC scanning
    in non-SWIG Go programs, and therefore...
    
    Fixes #909.
    
    LGTM=iant
    R=iant
    CC=golang-codereviews
    https://golang.org/cl/149770043
    193daab9
Name
Last commit
Last update
..
asm.s Loading commit data...
asm_darwin_386.s Loading commit data...
asm_darwin_amd64.s Loading commit data...
asm_dragonfly_386.s Loading commit data...
asm_dragonfly_amd64.s Loading commit data...
asm_freebsd_386.s Loading commit data...
asm_freebsd_amd64.s Loading commit data...
asm_freebsd_arm.s Loading commit data...
asm_linux_386.s Loading commit data...
asm_linux_amd64.s Loading commit data...
asm_linux_arm.s Loading commit data...
asm_nacl_386.s Loading commit data...
asm_nacl_amd64p32.s Loading commit data...
asm_nacl_arm.s Loading commit data...
asm_netbsd_386.s Loading commit data...
asm_netbsd_amd64.s Loading commit data...
asm_netbsd_arm.s Loading commit data...
asm_openbsd_386.s Loading commit data...
asm_openbsd_amd64.s Loading commit data...
asm_plan9_386.s Loading commit data...
asm_plan9_amd64.s Loading commit data...
asm_solaris_amd64.s Loading commit data...
bpf_bsd.go Loading commit data...
creds_test.go Loading commit data...
dir_plan9.go Loading commit data...
dll_windows.go Loading commit data...
env_plan9.go Loading commit data...
env_unix.go Loading commit data...
env_windows.go Loading commit data...
exec_bsd.go Loading commit data...
exec_linux.go Loading commit data...
exec_plan9.go Loading commit data...
exec_solaris.go Loading commit data...
exec_unix.go Loading commit data...
exec_windows.go Loading commit data...
export_test.go Loading commit data...
fd_nacl.go Loading commit data...
flock.go Loading commit data...
flock_linux_32bit.go Loading commit data...
fs_nacl.go Loading commit data...
lsf_linux.go Loading commit data...
mkall.sh Loading commit data...
mkall_windows.bat Loading commit data...
mkerrors.sh Loading commit data...
mksyscall.pl Loading commit data...
mksyscall_solaris.pl Loading commit data...
mksyscall_windows.go Loading commit data...
mksysctl_openbsd.pl Loading commit data...
mksysnum_darwin.pl Loading commit data...
mksysnum_dragonfly.pl Loading commit data...
mksysnum_freebsd.pl Loading commit data...
mksysnum_linux.pl Loading commit data...
mksysnum_netbsd.pl Loading commit data...
mksysnum_openbsd.pl Loading commit data...
mksysnum_plan9.sh Loading commit data...
mmap_unix_test.go Loading commit data...
net_nacl.go Loading commit data...
netlink_linux.go Loading commit data...
race.go Loading commit data...
race0.go Loading commit data...
route_bsd.go Loading commit data...
route_darwin.go Loading commit data...
route_dragonfly.go Loading commit data...
route_freebsd.go Loading commit data...
route_freebsd_32bit.go Loading commit data...
route_freebsd_64bit.go Loading commit data...
route_netbsd.go Loading commit data...
route_openbsd.go Loading commit data...
security_windows.go Loading commit data...
so_solaris.go Loading commit data...
sockcmsg_linux.go Loading commit data...
sockcmsg_unix.go Loading commit data...
srpc_nacl.go Loading commit data...
str.go Loading commit data...
syscall.go Loading commit data...
syscall_bsd.go Loading commit data...
syscall_bsd_test.go Loading commit data...
syscall_darwin.go Loading commit data...
syscall_darwin_386.go Loading commit data...
syscall_darwin_amd64.go Loading commit data...
syscall_dragonfly.go Loading commit data...
syscall_dragonfly_386.go Loading commit data...
syscall_dragonfly_amd64.go Loading commit data...
syscall_freebsd.go Loading commit data...
syscall_freebsd_386.go Loading commit data...
syscall_freebsd_amd64.go Loading commit data...
syscall_freebsd_arm.go Loading commit data...
syscall_linux.go Loading commit data...
syscall_linux_386.go Loading commit data...
syscall_linux_amd64.go Loading commit data...
syscall_linux_arm.go Loading commit data...
syscall_nacl.go Loading commit data...
syscall_nacl_386.go Loading commit data...
syscall_nacl_amd64p32.go Loading commit data...
syscall_nacl_arm.go Loading commit data...
syscall_netbsd.go Loading commit data...
syscall_netbsd_386.go Loading commit data...
syscall_netbsd_amd64.go Loading commit data...
syscall_netbsd_arm.go Loading commit data...
syscall_no_getwd.go Loading commit data...
syscall_openbsd.go Loading commit data...
syscall_openbsd_386.go Loading commit data...
syscall_openbsd_amd64.go Loading commit data...
syscall_plan9.go Loading commit data...
syscall_solaris.go Loading commit data...
syscall_solaris_amd64.go Loading commit data...
syscall_test.go Loading commit data...
syscall_unix.go Loading commit data...
syscall_unix_test.go Loading commit data...
syscall_windows.go Loading commit data...
syscall_windows_386.go Loading commit data...
syscall_windows_amd64.go Loading commit data...
syscall_windows_test.go Loading commit data...
tables_nacl.go Loading commit data...
time_nacl_386.s Loading commit data...
time_nacl_amd64p32.s Loading commit data...
time_nacl_arm.s Loading commit data...
types_darwin.go Loading commit data...
types_dragonfly.go Loading commit data...
types_freebsd.go Loading commit data...
types_linux.go Loading commit data...
types_netbsd.go Loading commit data...
types_openbsd.go Loading commit data...
types_plan9.c Loading commit data...
types_solaris.go Loading commit data...
unzip_nacl.go Loading commit data...
zerrors_darwin_386.go Loading commit data...
zerrors_darwin_amd64.go Loading commit data...
zerrors_dragonfly_386.go Loading commit data...
zerrors_dragonfly_amd64.go Loading commit data...
zerrors_freebsd_386.go Loading commit data...
zerrors_freebsd_amd64.go Loading commit data...
zerrors_freebsd_arm.go Loading commit data...
zerrors_linux_386.go Loading commit data...
zerrors_linux_amd64.go Loading commit data...
zerrors_linux_arm.go Loading commit data...
zerrors_netbsd_386.go Loading commit data...
zerrors_netbsd_amd64.go Loading commit data...
zerrors_netbsd_arm.go Loading commit data...
zerrors_openbsd_386.go Loading commit data...
zerrors_openbsd_amd64.go Loading commit data...
zerrors_plan9_386.go Loading commit data...
zerrors_plan9_amd64.go Loading commit data...
zerrors_solaris_amd64.go Loading commit data...
zerrors_windows.go Loading commit data...
zerrors_windows_386.go Loading commit data...
zerrors_windows_amd64.go Loading commit data...
zsyscall_darwin_386.go Loading commit data...
zsyscall_darwin_amd64.go Loading commit data...
zsyscall_dragonfly_386.go Loading commit data...
zsyscall_dragonfly_amd64.go Loading commit data...
zsyscall_freebsd_386.go Loading commit data...
zsyscall_freebsd_amd64.go Loading commit data...
zsyscall_freebsd_arm.go Loading commit data...
zsyscall_linux_386.go Loading commit data...
zsyscall_linux_amd64.go Loading commit data...
zsyscall_linux_arm.go Loading commit data...
zsyscall_nacl_386.go Loading commit data...
zsyscall_nacl_amd64p32.go Loading commit data...
zsyscall_nacl_arm.go Loading commit data...
zsyscall_netbsd_386.go Loading commit data...
zsyscall_netbsd_amd64.go Loading commit data...
zsyscall_netbsd_arm.go Loading commit data...
zsyscall_openbsd_386.go Loading commit data...
zsyscall_openbsd_amd64.go Loading commit data...
zsyscall_plan9_386.go Loading commit data...
zsyscall_plan9_amd64.go Loading commit data...
zsyscall_solaris_amd64.go Loading commit data...
zsyscall_windows.go Loading commit data...
zsysctl_openbsd.go Loading commit data...
zsysnum_darwin_386.go Loading commit data...
zsysnum_darwin_amd64.go Loading commit data...
zsysnum_dragonfly_386.go Loading commit data...
zsysnum_dragonfly_amd64.go Loading commit data...
zsysnum_freebsd_386.go Loading commit data...
zsysnum_freebsd_amd64.go Loading commit data...
zsysnum_freebsd_arm.go Loading commit data...
zsysnum_linux_386.go Loading commit data...
zsysnum_linux_amd64.go Loading commit data...
zsysnum_linux_arm.go Loading commit data...
zsysnum_netbsd_386.go Loading commit data...
zsysnum_netbsd_amd64.go Loading commit data...
zsysnum_netbsd_arm.go Loading commit data...
zsysnum_openbsd_386.go Loading commit data...
zsysnum_openbsd_amd64.go Loading commit data...
zsysnum_plan9_386.go Loading commit data...
zsysnum_plan9_amd64.go Loading commit data...
zsysnum_solaris_amd64.go Loading commit data...
zsysnum_windows_386.go Loading commit data...
zsysnum_windows_amd64.go Loading commit data...
ztypes_darwin_386.go Loading commit data...
ztypes_darwin_amd64.go Loading commit data...
ztypes_dragonfly_386.go Loading commit data...
ztypes_dragonfly_amd64.go Loading commit data...
ztypes_freebsd_386.go Loading commit data...
ztypes_freebsd_amd64.go Loading commit data...
ztypes_freebsd_arm.go Loading commit data...
ztypes_linux_386.go Loading commit data...
ztypes_linux_amd64.go Loading commit data...
ztypes_linux_arm.go Loading commit data...
ztypes_netbsd_386.go Loading commit data...
ztypes_netbsd_amd64.go Loading commit data...
ztypes_netbsd_arm.go Loading commit data...
ztypes_openbsd_386.go Loading commit data...
ztypes_openbsd_amd64.go Loading commit data...
ztypes_plan9_386.go Loading commit data...
ztypes_plan9_amd64.go Loading commit data...
ztypes_solaris_amd64.go Loading commit data...
ztypes_windows.go Loading commit data...
ztypes_windows_386.go Loading commit data...
ztypes_windows_amd64.go Loading commit data...