From patchwork Mon Oct 7 14:53:14 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sachin Monga X-Patchwork-Id: 1993673 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=ibm.com header.i=@ibm.com header.a=rsa-sha256 header.s=pp1 header.b=gZHIf+WT; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=sourceware.org (client-ip=2620:52:3:1:0:246e:9693:128c; helo=server2.sourceware.org; envelope-from=libc-alpha-bounces~incoming=patchwork.ozlabs.org@sourceware.org; receiver=patchwork.ozlabs.org) Received: from server2.sourceware.org (server2.sourceware.org [IPv6:2620:52:3:1:0:246e:9693:128c]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (secp384r1) server-digest SHA384) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4XMhx54C5Cz1xtV for ; Tue, 8 Oct 2024 01:53:45 +1100 (AEDT) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 229A5385F012 for ; Mon, 7 Oct 2024 14:53:43 +0000 (GMT) X-Original-To: libc-alpha@sourceware.org Delivered-To: libc-alpha@sourceware.org Received: from mx0a-001b2d01.pphosted.com (mx0a-001b2d01.pphosted.com [148.163.156.1]) by sourceware.org (Postfix) with ESMTPS id 7DA8E3858CDA for ; Mon, 7 Oct 2024 14:53:26 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 7DA8E3858CDA Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=linux.ibm.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=linux.ibm.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 7DA8E3858CDA Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=148.163.156.1 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1728312809; cv=none; b=HkJOaXrvT/W5SzPZim8LnI/dGhPOBvfgF4cM6h454Aj6/EUCkl/IGzfRolsqBsobySwb0pDxi9GmguzDRM67PsUoyKQBUnaqQeccC7gvznruQkl96X/btozvbRA7J+UvqSodfpvW4V9LxRILREyAVc686oRzidoMgG961pdAe7A= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1728312809; c=relaxed/simple; bh=NrIkSvQ53bXR/mmP9CwJ9sR+0ldqCJxuQVRZVS2cWQk=; h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version; b=U7cy9J/g/Z7+1gHjK+gDRf4mBYtXW8R+na9x3GwfW54zvxHduPPGhzOIAqO2lmMwsAai9paMf/L1iyNdk1gGQVoaXrgnOotTKFKVCR6JPe6foESHn6gGYEVsAz6WZ0t/ev5tT3eHnCn3gZhN4NFuLYU1m/x0slGis25820TeT2o= ARC-Authentication-Results: i=1; server2.sourceware.org Received: from pps.filterd (m0360083.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 4978uDmQ012784 for ; Mon, 7 Oct 2024 14:53:25 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=from :to:cc:subject:date:message-id:mime-version :content-transfer-encoding; s=pp1; bh=84KFJpSmVD5siPr9JGjq5GSVdA 4G7FzTBmKvDs18GrQ=; b=gZHIf+WTH72if8jzK3vWIMKo7krznlZtGvLcaaWd6f VmkYBeyH70RJ2rqPU9lVvctpjvzZ2VgfTOiY+NoY3mqt+aiBgxLaaIvl9C/g6lVW 9kD0BzQaRzj3r79f/j2GMmBL9why+bJ4drPbOjDEwIeNwyz68IGFfCrgn1bAQPAC WzPS3mpdSJWYgtF1dObZAHfLaVxGYQ/aEMO44qQ3JraLJtmSXSREe8Ul/DMh8nr+ kdT7k4oSi16/TFbuCof64vnqg+3ZvEhFNkF/5oMNQZRhlzfWj3jPq21nMC2eS3FM Ih0a3a7rTF4CsUn4V98V++mgL6jml6UITaKgD3VAVAzQ== Received: from ppma21.wdc07v.mail.ibm.com (5b.69.3da9.ip4.static.sl-reverse.com [169.61.105.91]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 424cjm22b2-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT) for ; Mon, 07 Oct 2024 14:53:25 +0000 (GMT) Received: from pps.filterd (ppma21.wdc07v.mail.ibm.com [127.0.0.1]) by ppma21.wdc07v.mail.ibm.com (8.18.1.2/8.18.1.2) with ESMTP id 497EBx9V030174 for ; Mon, 7 Oct 2024 14:53:24 GMT Received: from smtprelay02.fra02v.mail.ibm.com ([9.218.2.226]) by ppma21.wdc07v.mail.ibm.com (PPS) with ESMTPS id 423gsmf76b-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT) for ; Mon, 07 Oct 2024 14:53:23 +0000 Received: from smtpav01.fra02v.mail.ibm.com (smtpav01.fra02v.mail.ibm.com [10.20.54.100]) by smtprelay02.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 497ErK6w57934290 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 7 Oct 2024 14:53:20 GMT Received: from smtpav01.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 40B2920043; Mon, 7 Oct 2024 14:53:20 +0000 (GMT) Received: from smtpav01.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 75BE920040; Mon, 7 Oct 2024 14:53:19 +0000 (GMT) Received: from ltcd97-lp3.. (unknown [9.40.194.171]) by smtpav01.fra02v.mail.ibm.com (Postfix) with ESMTP; Mon, 7 Oct 2024 14:53:19 +0000 (GMT) From: Sachin Monga To: libc-alpha@sourceware.org Cc: murphyp@linux.ibm.com, bergner@linux.ibm.com, Sachin Monga Subject: [PATCH] powerpc64le: ROP changes for _init/_fini Date: Mon, 7 Oct 2024 10:53:14 -0400 Message-ID: <20241007145314.3938424-1-smonga@linux.ibm.com> X-Mailer: git-send-email 2.46.0 MIME-Version: 1.0 X-TM-AS-GCONF: 00 X-Proofpoint-GUID: V3DIBf3iWLtojZyi1PtvU_uD-p8ZogPo X-Proofpoint-ORIG-GUID: V3DIBf3iWLtojZyi1PtvU_uD-p8ZogPo X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1051,Hydra:6.0.680,FMLib:17.12.62.30 definitions=2024-10-07_06,2024-10-07_01,2024-09-30_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 adultscore=0 phishscore=0 suspectscore=0 bulkscore=0 mlxlogscore=603 spamscore=0 priorityscore=1501 mlxscore=0 lowpriorityscore=0 clxscore=1011 impostorscore=0 malwarescore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.19.0-2409260000 definitions=main-2410070102 X-Spam-Status: No, score=-12.1 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_EF, GIT_PATCH_0, RCVD_IN_DNSWL_LOW, RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-BeenThere: libc-alpha@sourceware.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Libc-alpha mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: libc-alpha-bounces~incoming=patchwork.ozlabs.org@sourceware.org Disable -mrop-protect for power7 files Macro FRAME_ROP_SAVE defined for storing ROP pointer Store/Retrieve ROP pointer next to FRAME_MIN_SIZE_PARM Signed-off-by: Sachin Monga --- sysdeps/powerpc/powerpc64/crti.S | 10 ++++++++++ sysdeps/powerpc/powerpc64/crtn.S | 14 ++++++++++++++ sysdeps/powerpc/powerpc64/multiarch/Makefile | 2 ++ sysdeps/powerpc/powerpc64/sysdep.h | 1 + 4 files changed, 27 insertions(+) diff --git a/sysdeps/powerpc/powerpc64/crti.S b/sysdeps/powerpc/powerpc64/crti.S index 71bdddfb3b..4f009158c7 100644 --- a/sysdeps/powerpc/powerpc64/crti.S +++ b/sysdeps/powerpc/powerpc64/crti.S @@ -68,7 +68,12 @@ BODY_LABEL (_init): LOCALENTRY(_init) mflr 0 std 0, FRAME_LR_SAVE(r1) +#ifdef __ROP_PROTECT__ + hashst 0, -FRAME_ROP_SAVE(r1) + stdu r1, -FRAME_MIN_SIZE_PARM-FRAME_ROP_SAVE(r1) +#else stdu r1, -FRAME_MIN_SIZE_PARM(r1) +#endif #if PREINIT_FUNCTION_WEAK addis r9, r2, .LC0@toc@ha ld r0, .LC0@toc@l(r9) @@ -87,4 +92,9 @@ BODY_LABEL (_fini): LOCALENTRY(_fini) mflr 0 std 0, FRAME_LR_SAVE(r1) +#ifdef __ROP_PROTECT__ + hashst 0, -FRAME_ROP_SAVE(r1) + stdu r1, -FRAME_MIN_SIZE_PARM-FRAME_ROP_SAVE(r1) +#else stdu r1, -FRAME_MIN_SIZE_PARM(r1) +#endif diff --git a/sysdeps/powerpc/powerpc64/crtn.S b/sysdeps/powerpc/powerpc64/crtn.S index 4e91231f2c..45359dbe32 100644 --- a/sysdeps/powerpc/powerpc64/crtn.S +++ b/sysdeps/powerpc/powerpc64/crtn.S @@ -39,13 +39,27 @@ #include .section .init,"ax",@progbits +#ifdef __ROP_PROTECT__ + addi r1, r1, FRAME_MIN_SIZE_PARM+FRAME_ROP_SAVE +#else addi r1, r1, FRAME_MIN_SIZE_PARM +#endif ld r0, FRAME_LR_SAVE(r1) mtlr r0 +#ifdef __ROP_PROTECT__ + hashchk 0, -FRAME_ROP_SAVE(r1) +#endif blr .section .fini,"ax",@progbits +#ifdef __ROP_PROTECT__ + addi r1, r1, FRAME_MIN_SIZE_PARM+FRAME_ROP_SAVE +#else addi r1, r1, FRAME_MIN_SIZE_PARM +#endif ld r0, FRAME_LR_SAVE(r1) mtlr r0 +#ifdef __ROP_PROTECT__ + hashchk 0, -FRAME_ROP_SAVE(r1) +#endif blr diff --git a/sysdeps/powerpc/powerpc64/multiarch/Makefile b/sysdeps/powerpc/powerpc64/multiarch/Makefile index b847c19049..769625b70d 100644 --- a/sysdeps/powerpc/powerpc64/multiarch/Makefile +++ b/sysdeps/powerpc/powerpc64/multiarch/Makefile @@ -38,7 +38,9 @@ sysdep_routines += memchr-power10 memcmp-power10 memcpy-power10 \ strlen-power9 strncpy-power9 stpncpy-power9 strlen-power10 endif CFLAGS-strncase-power7.c += -mcpu=power7 -funroll-loops +CFLAGS-strncase-power7.c := $(filter-out -mrop-protect, $(strncase-power7-CFLAGS)) CFLAGS-strncase_l-power7.c += -mcpu=power7 -funroll-loops +CFLAGS-strncase_l-power7.c := $(filter-out -mrop-protect, $(strncase-power7_l-CFLAGS)) endif # Called during static initialization diff --git a/sysdeps/powerpc/powerpc64/sysdep.h b/sysdeps/powerpc/powerpc64/sysdep.h index c439b06121..52253a6a0f 100644 --- a/sysdeps/powerpc/powerpc64/sysdep.h +++ b/sysdeps/powerpc/powerpc64/sysdep.h @@ -24,6 +24,7 @@ /* Stack frame offsets. */ #define FRAME_BACKCHAIN 0 #define FRAME_CR_SAVE 8 +#define FRAME_ROP_SAVE 8 /* Generally to be stored in red zone */ #define FRAME_LR_SAVE 16 #if _CALL_ELF != 2 #define FRAME_MIN_SIZE 112