From patchwork Tue Mar 11 18:38:03 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Roland McGrath X-Patchwork-Id: 41 Return-Path: X-Original-To: siddhesh@wilcox.dreamhost.com Delivered-To: siddhesh@wilcox.dreamhost.com Received: from homiemail-mx23.g.dreamhost.com (caibbdcaabja.dreamhost.com [208.113.200.190]) by wilcox.dreamhost.com (Postfix) with ESMTP id 31E073600AD for ; Tue, 11 Mar 2014 11:38:13 -0700 (PDT) Received: by homiemail-mx23.g.dreamhost.com (Postfix, from userid 14307373) id D7B5262E0CE93; Tue, 11 Mar 2014 11:38:12 -0700 (PDT) X-Original-To: glibc@patchwork.siddhesh.in Delivered-To: x14307373@homiemail-mx23.g.dreamhost.com Received: from sourceware.org (server1.sourceware.org [209.132.180.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by homiemail-mx23.g.dreamhost.com (Postfix) with ESMTPS id B8D0F61C4916A for ; Tue, 11 Mar 2014 11:38:12 -0700 (PDT) DomainKey-Signature: a=rsa-sha1; c=nofws; d=sourceware.org; h=list-id :list-unsubscribe:list-subscribe:list-archive:list-post :list-help:sender:mime-version:content-type :content-transfer-encoding:from:to:subject:message-id:date; q= dns; s=default; b=XQi2MFxu9DZzEcgje4FDR14R3dbX1oGlWD0q0K3Y1nsgLA 7cn/LLTcEyBJcq2cZ+7W+PiVCRC/sgZ37jo5b1a0WX7LG2wyyAz0x4vDXw9N7xjR L7TX8sOnFRtwHorSqTX3RknwR6VTdCJzmS/KKmj8we6xgT2vTqq9oYqIqCyd8= DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=sourceware.org; h=list-id :list-unsubscribe:list-subscribe:list-archive:list-post :list-help:sender:mime-version:content-type :content-transfer-encoding:from:to:subject:message-id:date; s= default; bh=dwWrWFeBu4ZrHfysAk40pYLAWT4=; b=FmBaIc4aB9dTUw5iMBeP qzsbPQexzMQ3Omkp+l4LVSJlc1D61xjDQbeqU4NVw0QvjARXPbqRo6cb6NO0+lI0 L+c3l1Nj7tt7dZ0OjivGrT41iplwf1i025RZeM/r3hR5QYLUBlnY3secOWkYRAq+ Xk9CsTmef80AEhbJZQOhlPU= Received: (qmail 23741 invoked by alias); 11 Mar 2014 18:38:10 -0000 Mailing-List: contact libc-alpha-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: libc-alpha-owner@sourceware.org Delivered-To: mailing list libc-alpha@sourceware.org Received: (qmail 23722 invoked by uid 89); 11 Mar 2014 18:38:07 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-2.3 required=5.0 tests=AWL, BAYES_00 autolearn=ham version=3.3.2 X-HELO: topped-with-meat.com MIME-Version: 1.0 From: Roland McGrath To: "GNU C. Library" Subject: [PATCH roland/arm-setjmp] ARM: Fix up setjmp/longjmp changes sfi_* macro use. Message-Id: <20140311183803.DA2B974475@topped-with-meat.com> Date: Tue, 11 Mar 2014 11:38:03 -0700 (PDT) X-CMAE-Score: 0 X-CMAE-Analysis: v=2.1 cv=Rt9WckWK c=1 sm=1 tr=0 a=WkljmVdYkabdwxfqvArNOQ==:117 a=14OXPxybAAAA:8 a=M-WCB35-GGYA:10 a=Z6MIti7PxpgA:10 a=kj9zAlcOel0A:10 a=hOe2yjtxAAAA:8 a=EK4xD7nK5o6F0FWlOgcA:9 a=CjuIK1q_8ugA:10 X-DH-Original-To: glibc@patchwork.siddhesh.in The recent changes to ARM's setjmp/longjmp ignored the sfi_* macros (which is fine enough, I don't mind doing the fix-up). So this fixes them again. Thanks, Roland 2014-03-11 Roland McGrath * sysdeps/arm/setjmp.S: Use sfi_breg on stores of mangled registers. * sysdeps/arm/__longjmp.S: Use sfi_breg on loads of mangled registers. Move sfi_sp use from the load-multiple (that no longer sets sp) to the new mov targetting sp. --- a/sysdeps/arm/__longjmp.S +++ b/sysdeps/arm/__longjmp.S @@ -38,22 +38,27 @@ ENTRY (__longjmp) #endif #ifdef PTR_DEMANGLE - ldr a4, [ip], #4 + sfi_breg ip, \ + ldr a4, [\B], #4 PTR_DEMANGLE (a4, a4, a3, r4) cfi_undefined (r4) - ldr r4, [ip], #4 + sfi_breg ip, \ + ldr r4, [\B], #4 PTR_DEMANGLE2 (r4, r4, a3) #else - ldr a4, [ip], #4 - ldr r4, [ip], #4 + sfi_breg ip, \ + ldr a4, [\B], #4 + sfi_breg ip, \ + ldr r4, [\B], #4 cfi_undefined (r4) #endif /* longjmp probe expects longjmp first argument (4@r0), second argument (-4@r1), and target address (4@r4), respectively. */ LIBC_PROBE (longjmp, 3, 4@r0, -4@r1, 4@r4) + sfi_sp \ mov sp, a4 mov lr, r4 - sfi_sp sfi_breg ip, \ + sfi_breg ip, \ ldmia \B!, JMP_BUF_REGLIST cfi_restore (v1) cfi_restore (v2) --- a/sysdeps/arm/setjmp.S +++ b/sysdeps/arm/setjmp.S @@ -36,12 +36,16 @@ ENTRY (__sigsetjmp) #ifdef PTR_MANGLE mov a4, sp PTR_MANGLE2 (a4, a4, a3) - str a4, [ip], #4 + sfi_breg ip, \ + str a4, [\B], #4 PTR_MANGLE2 (a4, lr, a3) - str a4, [ip], #4 + sfi_breg ip, \ + str a4, [\B], #4 #else - str sp, [ip], #4 - str lr, [ip], #4 + sfi_breg ip, \ + str sp, [\B], #4 + sfi_breg ip, \ + str lr, [\B], #4 #endif /* Save registers */ sfi_breg ip, \