re PR go/68496 ([libgo] reflect test fails on Linux x86-64)

PR go/68496
    reflect: Allocate space for FFI functions returning a zero-sized type.
    
    The libffi library does not understand zero-sized types.  We represent
    them as a struct with a single field of type void.  If such a type is
    returned from a function, libffi will copy 1 byte of data.  Allocate
    space for that byte, although we won't use it.
    
    Fixes https://gcc.gnu.org/PR68496.

    Reviewed-on: https://go-review.googlesource.com/17175

From-SVN: r230776
This commit is contained in:
Ian Lance Taylor 2015-11-23 21:17:45 +00:00
parent cbd03aee24
commit 8c61286797
2 changed files with 7 additions and 1 deletions

View File

@ -1,4 +1,4 @@
97ec885c715b3922b0866c081554899b8d50933a
0d979f0b860cfd879754150e0ae5e1018b94d7c4
The first line of this file holds the git revision number of the last
merge done from the gofrontend repository.

View File

@ -81,6 +81,12 @@ go_results_size (const struct __go_func_type *func)
off = (off + maxalign - 1) & ~ (maxalign - 1);
// The libffi library doesn't understand a struct with no fields.
// We generate a struct with a single field of type void. When used
// as a return value, libffi will think that requires a byte.
if (off == 0)
off = 1;
return off;
}