This is the mail archive of the
libffi-discuss@sourceware.org
mailing list for the libffi project.
Re: [PATCH 00/16] Go closures for aarch64
- From: James Greenhalgh <james dot greenhalgh at arm dot com>
- To: Richard Henderson <rth at twiddle dot net>
- Cc: "libffi-discuss at sourceware dot org" <libffi-discuss at sourceware dot org>
- Date: Mon, 10 Nov 2014 10:12:14 +0000
- Subject: Re: [PATCH 00/16] Go closures for aarch64
- Authentication-results: sourceware.org; auth=none
- References: <1414522393-19169-1-git-send-email-rth at twiddle dot net>
On Tue, Oct 28, 2014 at 06:52:57PM +0000, Richard Henderson wrote:
> This patch set fixes a compilation error since the iOS merge,
> tidies up the port significantly, and finally adds support for
> complex and Go closures.
Hi Richard,
Possibly an irrelevant comment for this patch series, but while rewriting
the world, did you consider Jakub's comments in this thread on
gcc-patches regarding .note.GNU-stack notes?
https://gcc.gnu.org/ml/gcc-patches/2014-09/msg00820.html
"I've noticed that on 4.8 branch libgo recently (in the last few months)
started being linked with
GNU_STACK 0x000000 0x00000000 0x00000000 0x00000 0x00000 RWE 0x10
i.e. requiring executable stack on powerpc-linux (32-bit).
The problem is that we link into libffi linux64.o and linux64_closure.o
unconditionally, both for 32-bit and 64-bit compilations, just for 32-bit
ones all the assembly is ifdefed out, so they have just empty sections.
The .note.GNU-stack section isn't emitted in that case either, which means
that the linker conservatively treats those as possibly needing executable
stack.
The following patch should fix that, ok for trunk/4.9/4.8?
BTW, I wonder if e.g. libffi/src/arm/trampoline.S or
libffi/src/aarch64/sysv.S shouldn't have those notes too (note, both of
those were added after 2008 when most of the *.S files were marked that
way)."
If it doesn't belong in this series, I'll propose a patch adding it once
your patches have gone in.
Thanks,
James
> Richard Henderson (16):
> aarch64: Fix non-apple compilation
> aarch64: Improve is_hfa
> aarch64: Always distinguish LONGDOUBLE
> aarch64: Simplify AARCH64_STACK_ALIGN
> aarch64: Reduce the size of register_context
> aarch64: Use correct return registers
> aarch64: Treat void return as not passed in registers
> aarch64: Tidy up abi manipulation
> aarch64: Merge prep_args with ffi_call
> aarch64: Move return value handling into ffi_call_SYSV
> aarch64: Move return value handling into ffi_closure_SYSV
> aarch64: Unify scalar fp and hfa handling
> aarch64: Remove aarch64_flags
> aarch64: Add support for complex types
> aarch64: Move x8 out of call_context
> aarch64: Add support for Go closures
>
> src/aarch64/ffi.c | 1477 ++++++++++++++++------------------------
> src/aarch64/ffitarget.h | 14 +-
> src/aarch64/internal.h | 67 ++
> src/aarch64/sysv.S | 589 +++++++++-------
> testsuite/libffi.call/call.exp | 10 +-
> 5 files changed, 1008 insertions(+), 1149 deletions(-)
> create mode 100644 src/aarch64/internal.h
>
> --
> 1.9.3
>
>