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:
parent
cbd03aee24
commit
8c61286797
@ -1,4 +1,4 @@
|
|||||||
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)
|
|||||||
|
|
||||||
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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user