gcc/libgo/runtime
Ian Lance Taylor f432d1282d re PR go/72814 (reflect FAILs on 32-bit Solaris/SPARC: SIGILL)
PR go/72814

    runtime: treat zero-sized result value as void
    
    Change the FFI interface to treat a call to a function that returns a
    zero-sized result as a call to a function that returns void.
    
    This is part of the fix for https://gcc.gnu.org/PR72814.  On 32-bit
    SPARC systems, a call to a function that returns a non-zero-sized struct
    is followed by an unimp instruction that describes the size of the
    struct.  The function returns to the address after the unimp
    instruction.  The libffi library can not represent a zero-sized struct,
    so we wind up treating it as a 1-byte struct.  Thus in that case libffi
    calls the function with an unimp instruction, but the function does not
    adjust the return address.  The result is that the program attempts to
    execute the unimp instruction, causing a crash.
    
    This is part of a change that fixes the crash by treating all functions
    that return zero bytes as functions that return void.
    
    Reviewed-on: https://go-review.googlesource.com/25585

	* go-gcc.cc (Gcc_backend::function_type): If the return type is
	zero bytes, treat the function as returning void.
	(return_statement): If the return type is zero bytes, don't
	actually return any values.

From-SVN: r239252
2016-08-08 19:53:44 +00:00
..
arch.h
array.h
chan.goc libgo: update to go1.7rc3 2016-07-22 18:15:38 +00:00
chan.h libgo: update to go1.7rc3 2016-07-22 18:15:38 +00:00
cpuprof.goc libgo: Update to Go 1.3 release. 2014-07-19 08:53:52 +00:00
defs.h
env_posix.c runtime: Remove now unnecessary pad field from ParFor. 2015-10-31 00:59:47 +00:00
getncpu-bsd.c
getncpu-irix.c
getncpu-linux.c runtime: Check for CPU_COUNT itself, don't check glibc version. 2014-10-03 05:04:59 +00:00
getncpu-none.c
getncpu-solaris.c
go-alloc.h
go-append.c libgo: Merge to master revision 19184. 2014-06-06 22:37:27 +00:00
go-assert-interface.c libgo, compiler: Upgrade libgo to Go 1.4, except for runtime. 2015-01-15 00:27:56 +00:00
go-assert.c
go-assert.h
go-breakpoint.c
go-byte-array-to-string.c
go-caller.c libgo: update to go1.7rc3 2016-07-22 18:15:38 +00:00
go-callers.c compiler, runtime: mark stub methods, ignore them in runtime.Caller. 2016-02-03 06:54:41 +00:00
go-can-convert-interface.c libgo, compiler: Upgrade libgo to Go 1.4, except for runtime. 2015-01-15 00:27:56 +00:00
go-cdiv.c
go-cgo.c runtime: lock M during cgo call 2016-02-24 15:03:04 +00:00
go-check-interface.c libgo, compiler: Upgrade libgo to Go 1.4, except for runtime. 2015-01-15 00:27:56 +00:00
go-construct-map.c
go-convert-interface.c libgo, compiler: Upgrade libgo to Go 1.4, except for runtime. 2015-01-15 00:27:56 +00:00
go-copy.c
go-defer.c re PR go/60406 (recover.go: test13reflect2 test failure) 2014-10-08 14:03:13 +00:00
go-defer.h libgo: Merge to master revision 19184. 2014-06-06 22:37:27 +00:00
go-deferred-recover.c
go-eface-compare.c compiler, runtime: change type hash/equal to Go funcs 2015-10-29 17:14:51 +00:00
go-eface-val-compare.c compiler, runtime: change type hash/equal to Go funcs 2015-10-29 17:14:51 +00:00
go-ffi.c re PR go/72814 (reflect FAILs on 32-bit Solaris/SPARC: SIGILL) 2016-08-08 19:53:44 +00:00
go-ffi.h reflect, runtime: Use libffi closures to implement reflect.MakeFunc. 2014-07-19 21:36:26 +00:00
go-fieldtrack.c
go-iface.goc runtime: Rename iface.goc to go-iface.goc. 2014-07-11 00:39:03 +00:00
go-int-array-to-string.c
go-int-to-string.c
go-interface-compare.c compiler, runtime: change type hash/equal to Go funcs 2015-10-29 17:14:51 +00:00
go-interface-eface-compare.c compiler, runtime: change type hash/equal to Go funcs 2015-10-29 17:14:51 +00:00
go-interface-val-compare.c compiler, runtime: change type hash/equal to Go funcs 2015-10-29 17:14:51 +00:00
go-libmain.c runtime: For c-archive/c-shared, install signal handlers synchronously. 2016-02-12 22:10:09 +00:00
go-main.c re PR go/69357 (libgo refers to _end in a non-weak way) 2016-02-09 00:34:55 +00:00
go-make-slice.c libgo, compiler: Upgrade libgo to Go 1.4, except for runtime. 2015-01-15 00:27:56 +00:00
go-map-delete.c compiler, runtime: change type hash/equal to Go funcs 2015-10-29 17:14:51 +00:00
go-map-index.c compiler, runtime: change type hash/equal to Go funcs 2015-10-29 17:14:51 +00:00
go-map-len.c
go-map-range.c
go-matherr.c
go-memcmp.c
go-nanotime.c
go-new-map.c
go-new.c compiler,runtime: Determine if allocations need new pointers in runtime. 2015-07-14 01:22:25 +00:00
go-nosys.c libgo: change build procedure to use build tags 2016-08-06 00:36:33 +00:00
go-now.c re PR go/66574 (Time is provided in millisecond precision instead of nanoseconds as described in go documentation) 2015-11-21 01:27:44 +00:00
go-panic.c libgo: Merge to master revision 19184. 2014-06-06 22:37:27 +00:00
go-panic.h re PR go/60406 (recover.go: test13reflect2 test failure) 2014-10-08 14:03:13 +00:00
go-print.c
go-recover.c re PR go/60406 (recover.go: test13reflect2 test failure) 2014-10-08 14:03:13 +00:00
go-reflect-call.c re PR go/68496 ([libgo] reflect test fails on Linux x86-64) 2015-11-23 21:17:45 +00:00
go-reflect-map.c compiler, runtime: change type hash/equal to Go funcs 2015-10-29 17:14:51 +00:00
go-rune.c
go-runtime-error.c
go-setenv.c libgo: Merge to master revision 19184. 2014-06-06 22:37:27 +00:00
go-signal.c libgo: Update to go1.6rc1. 2016-02-03 21:58:02 +00:00
go-strcmp.c
go-string-to-byte-array.c libgo: Update to final Go 1.6 release. 2016-02-18 05:56:46 +00:00
go-string-to-int-array.c libgo: Merge to master revision 19184. 2014-06-06 22:37:27 +00:00
go-string.h
go-strplus.c
go-strslice.c
go-traceback.c reflect, runtime: Use libffi closures to implement reflect.MakeFunc. 2014-07-19 21:36:26 +00:00
go-trampoline.c
go-type-complex.c compiler, runtime: change type hash/equal to Go funcs 2015-10-29 17:14:51 +00:00
go-type-eface.c compiler, runtime: change type hash/equal to Go funcs 2015-10-29 17:14:51 +00:00
go-type-error.c compiler, runtime: change type hash/equal to Go funcs 2015-10-29 17:14:51 +00:00
go-type-float.c compiler, runtime: change type hash/equal to Go funcs 2015-10-29 17:14:51 +00:00
go-type-identity.c compiler, runtime: change type hash/equal to Go funcs 2015-10-29 17:14:51 +00:00
go-type-interface.c compiler, runtime: change type hash/equal to Go funcs 2015-10-29 17:14:51 +00:00
go-type-string.c compiler, runtime: change type hash/equal to Go funcs 2015-10-29 17:14:51 +00:00
go-type.h compiler, reflect, runtime: remove zero field from type descriptor 2015-10-29 18:14:50 +00:00
go-typedesc-equal.c re PR go/65755 (incorrect reflection of struct fields with gccgo) 2015-04-17 18:19:44 +00:00
go-unsafe-new.c
go-unsafe-newarray.c
go-unsafe-pointer.c compiler, reflect, runtime: remove zero field from type descriptor 2015-10-29 18:14:50 +00:00
go-unsetenv.c libgo, compiler: Upgrade libgo to Go 1.4, except for runtime. 2015-01-15 00:27:56 +00:00
go-unwind.c libgo: Use __USING_SJLJ_EXCEPTIONS__ rather than configure test. 2015-05-16 00:17:46 +00:00
go-varargs.c libgo: Solaris portability fixes. 2015-11-06 19:15:45 +00:00
goc2c.c runtime: Merge master revision 19185. 2014-07-12 00:01:09 +00:00
heapdump.c runtime: fix incorrectly commented out code in heapdump.c 2016-08-04 17:21:23 +00:00
interface.h
lfstack.goc runtime: Fix recent lfstack change on Solaris. 2015-09-24 13:33:20 +00:00
lock_futex.c libgo: Merge to master revision 19184. 2014-06-06 22:37:27 +00:00
lock_sema.c libgo: Update to Go 1.3 release. 2014-07-19 08:53:52 +00:00
malloc.goc libgo: update to go1.7rc3 2016-07-22 18:15:38 +00:00
malloc.h runtime: Remove now unnecessary pad field from ParFor. 2015-10-31 00:59:47 +00:00
map.goc
map.h
mcache.c libgo: Update to Go 1.3 release. 2014-07-19 08:53:52 +00:00
mcentral.c libgo: Update to Go 1.3 release. 2014-07-19 08:53:52 +00:00
mem.c runtime: Add casts to mincore call to compile on Solaris. 2014-08-04 17:54:09 +00:00
mem_posix_memalign.c
mfixalloc.c
mgc0.c runtime: Remove now unnecessary pad field from ParFor. 2015-10-31 00:59:47 +00:00
mgc0.h libgo: Update to Go 1.3 release. 2014-07-19 08:53:52 +00:00
mheap.c libgo: Update to Go 1.3 release. 2014-07-19 08:53:52 +00:00
mprof.goc runtime: initialize variable to avoid compiler warning 2015-08-04 03:39:21 +00:00
msize.c libgo: Merge to master revision 19184. 2014-06-06 22:37:27 +00:00
netpoll.goc libgo, compiler: Upgrade libgo to Go 1.4, except for runtime. 2015-01-15 00:27:56 +00:00
netpoll_epoll.c libgo: Update to Go 1.3 release. 2014-07-19 08:53:52 +00:00
netpoll_kqueue.c libgo: Update to Go 1.3 release. 2014-07-19 08:53:52 +00:00
netpoll_select.c re PR go/61303 (gccgo: segfault, regression since 4.8.2) 2015-11-26 00:24:21 +00:00
netpoll_stub.c libgo: Merge to master revision 19184. 2014-06-06 22:37:27 +00:00
panic.c re PR go/60406 (recover.go: test13reflect2 test failure) 2014-10-08 14:03:13 +00:00
parfor.c runtime: Remove now unnecessary pad field from ParFor. 2015-10-31 00:59:47 +00:00
print.c runtime: also disable split stacks for runtime_snprintf function under Clang 2014-07-20 09:24:16 +00:00
proc.c libgo: update to go1.7rc3 2016-07-22 18:15:38 +00:00
rdebug.goc libgo: Update to Go 1.3 release. 2014-07-19 08:53:52 +00:00
reflect.goc runtime: Drop reflectFlags tests. 2014-07-11 00:26:25 +00:00
rtems-task-variable-add.c
runtime.c libgo: Update to go1.6rc1. 2016-02-03 21:58:02 +00:00
runtime.h libgo: update to go1.7rc3 2016-07-22 18:15:38 +00:00
runtime1.goc runtime: Remove now unnecessary pad field from ParFor. 2015-10-31 00:59:47 +00:00
sema.goc libgo: update to go1.7rc3 2016-07-22 18:15:38 +00:00
signal_unix.c runtime: For c-archive/c-shared, install signal handlers synchronously. 2016-02-12 22:10:09 +00:00
signal_unix.h
sigqueue.goc runtime: Remove now unnecessary pad field from ParFor. 2015-10-31 00:59:47 +00:00
string.goc runtime: Remove undefined references to runtime_race*. 2014-12-23 20:33:53 +00:00
thread-linux.c
thread-sema.c
thread.c
time.goc compiler, reflect, runtime: Use static chain for closures. 2015-01-16 22:58:53 +00:00
yield.c