From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 7950 invoked by alias); 7 Nov 2014 15:30:56 -0000 Mailing-List: contact libffi-discuss-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: libffi-discuss-owner@sourceware.org Received: (qmail 7924 invoked by uid 89); 7 Nov 2014 15:30:55 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-2.5 required=5.0 tests=AWL,BAYES_00,FREEMAIL_ENVFROM_END_DIGIT,FREEMAIL_FROM,RCVD_IN_DNSWL_LOW,SPF_PASS autolearn=ham version=3.3.2 X-HELO: mail-wg0-f44.google.com Received: from mail-wg0-f44.google.com (HELO mail-wg0-f44.google.com) (74.125.82.44) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES128-SHA encrypted) ESMTPS; Fri, 07 Nov 2014 15:30:54 +0000 Received: by mail-wg0-f44.google.com with SMTP id x12so4005277wgg.17 for ; Fri, 07 Nov 2014 07:30:51 -0800 (PST) X-Received: by 10.180.90.241 with SMTP id bz17mr5896120wib.75.1415374251050; Fri, 07 Nov 2014 07:30:51 -0800 (PST) Received: from pike.twiddle.home.com ([87.111.149.167]) by mx.google.com with ESMTPSA id p1sm12186731wjy.22.2014.11.07.07.30.49 for (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 07 Nov 2014 07:30:50 -0800 (PST) From: Richard Henderson To: libffi-discuss@sourceware.org Subject: [PATCH 00/13] Go closures for i686 Date: Fri, 07 Nov 2014 15:30:00 -0000 Message-Id: <1415374240-1792-1-git-send-email-rth@twiddle.net> X-SW-Source: 2014/txt/msg00189.txt.bz2 A massive cleanup of the i686 backend, with all/most ABIs supported for all targets, not just windows. Which (nearly) eliminates conditional compilation wrt ABIs, and allows massive code de-duplication. Like the x86_64 patch set, this breaks Darwin. What I think ought to happen is that darwin.S should be deleted, and the very minor tweaks that might be left vs sysv.S should be handled by the preprocessor. However, I have no access to darwin with which to test. Like the x86_64 patch set, the masm variant is removed. Again, I have no way that I could test this. Though win32 support is of course still working via gas. With the final patch, building with clang mostly works. For some reason the unwind tests fail, despite the .eh_frame looking correct. Freebsd continues to work if you use gcc+gas from ports. Tested on i686-{linux,cygwin,freebsd10}. r~ Richard Henderson (13): x86: Tidy ffi_abi x86: Remove some conditional compilation x86: Force FFI_TYPE_LONGDOUBLE different from FFI_TYPE_DOUBLE x86: Convert to gas generated unwind info ffi_cif: Add cfa_escape x86: Rewrite ffi_call x86: Rewrite closures testsuite: Fix return_complex2 vs excessive precision x86: Add support for Complex x86: Add support for Go closures x86: Use win32 name mangling for fastcall functions testsuite: Add two dg-do run markers x86: Work around two clang assembler bugs Makefile.am | 13 +- include/ffi_cfi.h | 2 + src/x86/ffi.c | 1128 ++++++++++++------------ src/x86/ffitarget.h | 64 +- src/x86/freebsd.S | 463 ---------- src/x86/internal.h | 23 + src/x86/sysv.S | 1037 +++++++++++++--------- src/x86/win32.S | 1351 ----------------------------- testsuite/libffi.call/call.exp | 3 +- testsuite/libffi.call/float2.c | 1 + testsuite/libffi.call/return_complex2.inc | 10 +- testsuite/libffi.call/return_ldl.c | 1 + 12 files changed, 1238 insertions(+), 2858 deletions(-) delete mode 100644 src/x86/freebsd.S create mode 100644 src/x86/internal.h delete mode 100644 src/x86/win32.S -- 1.9.3