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 compiler, runtime: More steps toward separating int and intgo. 2012-11-01 03:02:13 +00:00
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 re PR go/46986 (Go is not supported on Darwin) 2013-01-24 19:44:23 +00:00
go-byte-array-to-string.c libgo: Update to October 24 version of master library. 2013-11-06 19:49:01 +00:00
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 runtime: fix misc gcc-isms and undefined behavior 2014-05-28 23:10:47 +00:00
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 compiler, runtime: More steps toward separating int and intgo. 2012-11-01 03:02:13 +00:00
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 re PR go/46986 (Go is not supported on Darwin) 2013-01-24 19:44:23 +00:00
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 runtime: Fix handling of surrogate pairs in string([]rune). 2013-11-26 23:27:29 +00:00
go-int-to-string.c libgo: Update to October 24 version of master library. 2013-11-06 19:49:01 +00:00
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 compiler, runtime: More steps toward separating int and intgo. 2012-11-01 03:02:13 +00:00
go-map-range.c compiler, runtime: More steps toward separating int and intgo. 2012-11-01 03:02:13 +00:00
go-matherr.c
go-memcmp.c compiler, runtime: Memcmp routine returns intgo. 2012-11-06 18:12:45 +00:00
go-nanotime.c
go-new-map.c compiler, libgo: Fixes to prepare for 64-bit int. 2012-11-06 18:28:21 +00:00
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 compiler, runtime: More steps toward separating int and intgo. 2012-11-01 03:02:13 +00:00
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 compiler, libgo: Fixes to prepare for 64-bit int. 2012-11-06 18:28:21 +00:00
go-runtime-error.c compiler, runtime: More steps toward separating int and intgo. 2012-11-01 03:02:13 +00:00
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 compiler, runtime: More steps toward separating int and intgo. 2012-11-01 03:02:13 +00:00
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 compiler, libgo: Fixes to prepare for 64-bit int. 2012-11-06 18:28:21 +00:00
go-strplus.c libgo: Update to October 24 version of master library. 2013-11-06 19:49:01 +00:00
go-strslice.c compiler, runtime: More steps toward separating int and intgo. 2012-11-01 03:02:13 +00:00
go-traceback.c reflect, runtime: Use libffi closures to implement reflect.MakeFunc. 2014-07-19 21:36:26 +00:00
go-trampoline.c libgo: Update to revision 15193:6fdc1974457c of master library. 2012-12-22 01:15:33 +00:00
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 libgo: Update to Go 1.1.1. 2013-07-16 06:54:42 +00:00
go-unsafe-newarray.c libgo: Update to Go 1.1.1. 2013-07-16 06:54:42 +00:00
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 compiler, runtime: More steps toward separating int and intgo. 2012-11-01 03:02:13 +00:00
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_posix_memalign.c
mem.c runtime: Add casts to mincore call to compile on Solaris. 2014-08-04 17:54:09 +00:00
mfixalloc.c libgo: Update to October 24 version of master library. 2013-11-06 19:49:01 +00:00
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_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
netpoll.goc libgo, compiler: Upgrade libgo to Go 1.4, except for runtime. 2015-01-15 00:27:56 +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
runtime1.goc runtime: Remove now unnecessary pad field from ParFor. 2015-10-31 00:59:47 +00:00
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
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 libgo: Update to Go 1.1.1. 2013-07-16 06:54:42 +00:00
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 libgo: Update to October 24 version of master library. 2013-11-06 19:49:01 +00:00
thread-sema.c
thread.c libgo: Update to Go 1.1.1. 2013-07-16 06:54:42 +00:00
time.goc compiler, reflect, runtime: Use static chain for closures. 2015-01-16 22:58:53 +00:00
yield.c runtime: Use _mm_pause rather than __builtin_ia32_pause. 2014-05-30 13:53:58 +00:00