This is the mail archive of the libffi-discuss@sourceware.org mailing list for the libffi project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH 00/16] Go closures for aarch64


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
> 
> 


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]