Commit 8c612867 by Ian Lance Taylor

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
parent cbd03aee
97ec885c715b3922b0866c081554899b8d50933a 0d979f0b860cfd879754150e0ae5e1018b94d7c4
The first line of this file holds the git revision number of the last The first line of this file holds the git revision number of the last
merge done from the gofrontend repository. merge done from the gofrontend repository.
...@@ -81,6 +81,12 @@ go_results_size (const struct __go_func_type *func) ...@@ -81,6 +81,12 @@ go_results_size (const struct __go_func_type *func)
off = (off + maxalign - 1) & ~ (maxalign - 1); 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; return off;
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment