From patchwork Tue Mar 13 22:51:38 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Kaz Kojima X-Patchwork-Id: 146502 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from sourceware.org (server1.sourceware.org [209.132.180.131]) by ozlabs.org (Postfix) with SMTP id 60348B6EEE for ; Wed, 14 Mar 2012 09:52:00 +1100 (EST) Comment: DKIM? See http://www.dkim.org DKIM-Signature: v=1; a=rsa-sha1; c=relaxed/relaxed; d=gcc.gnu.org; s=default; x=1332283921; h=Comment: DomainKey-Signature:Received:Received:Received:Received:Received: Date:Message-Id:To:Subject:From:Mime-Version:Content-Type: Content-Transfer-Encoding:Mailing-List:Precedence:List-Id: List-Unsubscribe:List-Archive:List-Post:List-Help:Sender: Delivered-To; bh=VUMb8QPFKXPrUp9F2ivR5CCAObM=; b=N9gpk1M/aJucjtp H0l78MfFjzswgWYVJFAvv8blakv3FEyTrF9IAfFf/6YaZ2ACPa4htTLd8AGiAzeq 9SAT9sXrodKHtALb57u99duxhaNh4LrxmCz5og81oOF6ah0mik2GM91J91/UvaiF mZ26Mn+hnFhXX8OGe8+m/c0kpGPc= Comment: DomainKeys? See http://antispam.yahoo.com/domainkeys DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws; s=default; d=gcc.gnu.org; h=Received:Received:X-SWARE-Spam-Status:X-Spam-Check-By:Received:Received:Received:Date:Message-Id:To:Subject:From:Mime-Version:Content-Type:Content-Transfer-Encoding:X-IsSubscribed:Mailing-List:Precedence:List-Id:List-Unsubscribe:List-Archive:List-Post:List-Help:Sender:Delivered-To; b=Me14qW0Xdd6m5GhqZcW/JrjKDfEZzJEHSzKHYLCipHZ80Nj9tjrCRnpf1y3shJ haq5JRAVQGv9/+24r7+y8D3ZOia3Ft6b9f7xt8/98YME/M9CNDwdKwTcR/JRGpUP c3G9rdOECpUPZUqMRonHW3bLkbskS/QBqsVVPgwusNRKA=; Received: (qmail 8995 invoked by alias); 13 Mar 2012 22:51:57 -0000 Received: (qmail 8983 invoked by uid 22791); 13 Mar 2012 22:51:56 -0000 X-SWARE-Spam-Status: No, hits=-2.0 required=5.0 tests=AWL, BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, SPF_HELO_PASS, TW_BF, T_RP_MATCHES_RCVD X-Spam-Check-By: sourceware.org Received: from mo11.iij4u.or.jp (HELO mo.iij4u.or.jp) (210.138.174.79) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Tue, 13 Mar 2012 22:51:41 +0000 Received: by mo.iij4u.or.jp (mo11) id q2DMpdts010220; Wed, 14 Mar 2012 07:51:39 +0900 Received: from localhost (238.152.138.210.bn.2iij.net [210.138.152.238]) by mbox.iij4u.or.jp (mbox10) id q2DMpdSE027169; Wed, 14 Mar 2012 07:51:39 +0900 Date: Wed, 14 Mar 2012 07:51:38 +0900 (JST) Message-Id: <20120314.075138.293460036.kkojima@rr.iij4u.or.jp> To: gcc-patches@gcc.gnu.org Subject: [patch libffi SH] Fix failures for libffi.call/err_bad_abi.c From: Kaz Kojima Mime-Version: 1.0 X-IsSubscribed: yes Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Hi, I've applied the attached patch which fixes failures for libffi.call/err_bad_abi.c on SH. It's similar to the changes done already on other targets. Tested on sh-linux. Regards, kaz --- 2012-03-13 Kaz Kojima * src/sh/ffi.c (ffi_prep_closure_loc): Don't ASSERT ABI test, just return FFI_BAD_ABI when things are wrong. * src/sh64/ffi.c (ffi_prep_closure_loc): Ditto. diff -upr ORIG/trunk/libffi/src/sh/ffi.c trunk/libffi/src/sh/ffi.c --- ORIG/trunk/libffi/src/sh/ffi.c 2009-06-06 13:12:01.000000000 +0900 +++ trunk/libffi/src/sh/ffi.c 2012-03-12 22:06:43.000000000 +0900 @@ -1,5 +1,5 @@ /* ----------------------------------------------------------------------- - ffi.c - Copyright (c) 2002, 2003, 2004, 2005, 2006, 2007, 2008 Kaz Kojima + ffi.c - Copyright (c) 2002-2008, 2012 Kaz Kojima Copyright (c) 2008 Red Hat, Inc. SuperH Foreign Function Interface @@ -463,7 +463,8 @@ ffi_prep_closure_loc (ffi_closure* closu unsigned int *tramp; unsigned int insn; - FFI_ASSERT (cif->abi == FFI_GCC_SYSV); + if (cif->abi != FFI_SYSV) + return FFI_BAD_ABI; tramp = (unsigned int *) &closure->tramp[0]; /* Set T bit if the function returns a struct pointed with R2. */ diff -upr ORIG/trunk/libffi/src/sh64/ffi.c trunk/libffi/src/sh64/ffi.c --- ORIG/trunk/libffi/src/sh64/ffi.c 2009-06-06 13:12:00.000000000 +0900 +++ trunk/libffi/src/sh64/ffi.c 2012-03-12 22:07:28.000000000 +0900 @@ -1,5 +1,5 @@ /* ----------------------------------------------------------------------- - ffi.c - Copyright (c) 2003, 2004, 2006, 2007 Kaz Kojima + ffi.c - Copyright (c) 2003, 2004, 2006, 2007, 2012 Kaz Kojima Copyright (c) 2008 Anthony Green SuperH SHmedia Foreign Function Interface @@ -302,7 +302,8 @@ ffi_prep_closure_loc (ffi_closure *closu { unsigned int *tramp; - FFI_ASSERT (cif->abi == FFI_GCC_SYSV); + if (cif->abi != FFI_SYSV) + return FFI_BAD_ABI; tramp = (unsigned int *) &closure->tramp[0]; /* Since ffi_closure is an aligned object, the ffi trampoline is