From patchwork Wed Dec 12 10:33:06 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ard Biesheuvel X-Patchwork-Id: 153565 Delivered-To: patch@linaro.org Received: by 2002:a2e:299d:0:0:0:0:0 with SMTP id p29-v6csp1660891ljp; Wed, 12 Dec 2018 02:33:17 -0800 (PST) X-Google-Smtp-Source: AFSGD/XQUsCF0MEycc9hOA9UStqTvzIzshknA3frEtJ6fTbuRIFM92Qi9D/FYwL3nP+GIMtYeps9 X-Received: by 2002:a63:920a:: with SMTP id o10mr17137409pgd.141.1544610797032; Wed, 12 Dec 2018 02:33:17 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1544610797; cv=none; d=google.com; s=arc-20160816; b=LQDeD9DplU7h7wzt/JPKQQps3oH49AnHY22Twb1bdskrYu2pv59/1Cv84w4bgcY2tg EAZwbNLZSQvxBeTqz9p+hpEdqbfZxUvfoEe9Ed9hQvXuLu6UOQlErp9CJHKYBL/vH7Ew mKRt/HfMXM/Yf3mE2bBiXGm2HkRG79P/cK8xgmdgSkjK0Oq8RsWMjF0WXN6JQhDxfZ9K isRdTvUe+GP7oMftA8TIYJ2zZTy02DmlQieD2wGDygHNI9cXgnlbNWrt+dtA07IOiImh gD7XEPpKbwjIwDwSaxx6G/qW0MteyOMMCaqGDojaV+hvhVt2yzPdUBXos0Qp+vCO7+F7 faAg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:cc:list-subscribe :list-help:list-post:list-archive:list-unsubscribe:list-id :precedence:subject:mime-version:references:in-reply-to:message-id :date:to:from:dkim-signature:delivered-to; bh=xdywiQSHzgOUbl+gNxyq2RIhge+V4VJ3nzX9PVPJSvE=; b=fYyIhCLIJsMxI5fVxKUDs9/zzZMbjG9s/T6MCSz5h6UHMXbeX7TuLDu/ocQk2H+0Er 62J+J5ZijKS0V+0CL72LQdIg35BHas+LwLgfwCuOhk2gw/GtzKZQRAkL7n5mioTA+L3L Xgw72sMd6ScCt8vhIqSjiehng6ggYoPze8QjQFEGJcni9zV+zGcbHuIFmqNH7RKQoK0T XOT5CQ698wXlpL2HRtI4MlgWuU1JUVvPNZX7RkYiJdlWUDXot0ayNTKls/DUlXt0FngB Oz9XW6l+KhX2qjn35Lxf0v3/Pqthnc/0/CJfMA3w7NOf0F0wVjW9JEwhXrxBDFEdfo++ bHRw== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@linaro.org header.s=google header.b=EgIIQvBn; spf=pass (google.com: best guess record for domain of edk2-devel-bounces@lists.01.org designates 198.145.21.10 as permitted sender) smtp.mailfrom=edk2-devel-bounces@lists.01.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from ml01.01.org (ml01.01.org. [198.145.21.10]) by mx.google.com with ESMTPS id bf4si14313577plb.163.2018.12.12.02.33.16 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 12 Dec 2018 02:33:17 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of edk2-devel-bounces@lists.01.org designates 198.145.21.10 as permitted sender) client-ip=198.145.21.10; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@linaro.org header.s=google header.b=EgIIQvBn; spf=pass (google.com: best guess record for domain of edk2-devel-bounces@lists.01.org designates 198.145.21.10 as permitted sender) smtp.mailfrom=edk2-devel-bounces@lists.01.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from [127.0.0.1] (localhost [IPv6:::1]) by ml01.01.org (Postfix) with ESMTP id 20FCD2119C8A7; Wed, 12 Dec 2018 02:33:16 -0800 (PST) X-Original-To: edk2-devel@lists.01.org Delivered-To: edk2-devel@lists.01.org Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=2a00:1450:4864:20::344; helo=mail-wm1-x344.google.com; envelope-from=ard.biesheuvel@linaro.org; receiver=edk2-devel@lists.01.org Received: from mail-wm1-x344.google.com (mail-wm1-x344.google.com [IPv6:2a00:1450:4864:20::344]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id 67DDE2119C89A for ; Wed, 12 Dec 2018 02:33:14 -0800 (PST) Received: by mail-wm1-x344.google.com with SMTP id q26so5320184wmf.5 for ; Wed, 12 Dec 2018 02:33:14 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=GN5eTXvJ1uOiTycjPIar8fPc83dvVb3CCEUsp4PozSU=; b=EgIIQvBn4sy4pqcDvL4xetnrMAq/B+DXVP2FQFxswil+SXGZjnxCQU87jCI726GmMT xMcP/vpzyMQBEs6NVQWKSNlok5brbcqWMUNLmarnGt3vSqH9G4by6faVThNzb8PX5YwD crUQrOD12fY85A0dWGUM7rnh3TFvCAJ43Qmck= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=GN5eTXvJ1uOiTycjPIar8fPc83dvVb3CCEUsp4PozSU=; b=NGpt18MpVuuFQzFb37Ag+vaPtvRvjEdI35MK947NKMYEiiriqknziL1+jdwlJYYXFf AgBKgmjP0wHhjXDQaGEfVPbTyC1SHcv4MsI9yHULmg675IIc6tcVAR9/9Iz3Lfh8EKvF PKyNLGgvy7z5RcuBU7DgalayQ4naAh4+gJ1TuPZLg56YaYbwi9fYisMmtbs3nCeEiSBc LR3YX3zM3LHBf9A5FQOyAn2GoTi7SnSCTobN/9/2Ya3OCdzhx1CpVc5PYLNNatwPCs7/ lLV6FdO1MFvY+nc0HakTWEpyBcx7CoFBnpI0HWMJUQAcrRQqASetUJDYPZseVULTStFR wnEg== X-Gm-Message-State: AA+aEWZGjDhpTObvHFXXH31JPqXd9RLawNNjcSayX0iH2wNOSNtpLDtB K0XEG11l1T50XHst2txn7LJKc0PjXc1W1A== X-Received: by 2002:a1c:f207:: with SMTP id s7mr5652440wmc.87.1544610792598; Wed, 12 Dec 2018 02:33:12 -0800 (PST) Received: from harold.home ([2a01:cb1d:112:6f00:1db:abd7:f798:3277]) by smtp.gmail.com with ESMTPSA id r69sm3132789wmd.4.2018.12.12.02.33.11 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 12 Dec 2018 02:33:11 -0800 (PST) From: Ard Biesheuvel To: edk2-devel@lists.01.org Date: Wed, 12 Dec 2018 11:33:06 +0100 Message-Id: <20181212103308.8099-2-ard.biesheuvel@linaro.org> X-Mailer: git-send-email 2.19.2 In-Reply-To: <20181212103308.8099-1-ard.biesheuvel@linaro.org> References: <20181212103308.8099-1-ard.biesheuvel@linaro.org> MIME-Version: 1.0 Subject: [edk2] [PATCH 1/3] MdePkg/BaseMemoryLibOptDxe ARM: add missing function annotations X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Liming Gao , Michael D Kinney , Laszlo Ersek Errors-To: edk2-devel-bounces@lists.01.org Sender: "edk2-devel" ARM uses the low order bit of a branch target address to decide in which execution mode (ARM or Thumb) a function needs to be called. In order for this to work across object files, ELF function symbols will have the low bit set if they were emitted in Thumb mode and cleared otherwise. This annotation is only emitted if the ELF symbols are annotated as function, since taking the address of some data symbol (e.g., a literal) should not produce a value with the low bit set, even if it appears in an object file containing Thumb code. This means that all functions coded in assembler must have this function annotation, or they may end up getting called in the wrong mode, crashing the program. Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Ard Biesheuvel --- MdePkg/Library/BaseMemoryLibOptDxe/Arm/CompareGuid.S | 1 + MdePkg/Library/BaseMemoryLibOptDxe/Arm/CompareMem.S | 1 + MdePkg/Library/BaseMemoryLibOptDxe/Arm/CopyMem.S | 1 + MdePkg/Library/BaseMemoryLibOptDxe/Arm/SetMem.S | 5 +++++ 4 files changed, 8 insertions(+) -- 2.19.2 _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel Acked-by: Laszlo Ersek diff --git a/MdePkg/Library/BaseMemoryLibOptDxe/Arm/CompareGuid.S b/MdePkg/Library/BaseMemoryLibOptDxe/Arm/CompareGuid.S index 6d0089049d48..b74056fa1f5f 100644 --- a/MdePkg/Library/BaseMemoryLibOptDxe/Arm/CompareGuid.S +++ b/MdePkg/Library/BaseMemoryLibOptDxe/Arm/CompareGuid.S @@ -30,6 +30,7 @@ .thumb .syntax unified .align 5 + .type ASM_PFX(InternalMemCompareGuid), %function ASM_GLOBAL ASM_PFX(InternalMemCompareGuid) ASM_PFX(InternalMemCompareGuid): push {r4, lr} diff --git a/MdePkg/Library/BaseMemoryLibOptDxe/Arm/CompareMem.S b/MdePkg/Library/BaseMemoryLibOptDxe/Arm/CompareMem.S index 9483aab61a0c..25a9a0994524 100644 --- a/MdePkg/Library/BaseMemoryLibOptDxe/Arm/CompareMem.S +++ b/MdePkg/Library/BaseMemoryLibOptDxe/Arm/CompareMem.S @@ -46,6 +46,7 @@ .thumb .syntax unified .align 5 + .type ASM_PFX(InternalMemCompareMem), %function ASM_GLOBAL ASM_PFX(InternalMemCompareMem) ASM_PFX(InternalMemCompareMem): push {r4-r8, lr} diff --git a/MdePkg/Library/BaseMemoryLibOptDxe/Arm/CopyMem.S b/MdePkg/Library/BaseMemoryLibOptDxe/Arm/CopyMem.S index 195a0b23f770..e1543f3c2a43 100644 --- a/MdePkg/Library/BaseMemoryLibOptDxe/Arm/CopyMem.S +++ b/MdePkg/Library/BaseMemoryLibOptDxe/Arm/CopyMem.S @@ -42,6 +42,7 @@ InternalMemCopyMem ( IN UINTN Length ) **/ + .type ASM_PFX(InternalMemCopyMem), %function ASM_GLOBAL ASM_PFX(InternalMemCopyMem) ASM_PFX(InternalMemCopyMem): push {r4-r11, lr} diff --git a/MdePkg/Library/BaseMemoryLibOptDxe/Arm/SetMem.S b/MdePkg/Library/BaseMemoryLibOptDxe/Arm/SetMem.S index 2d8f4d5b8621..928c1a12d558 100644 --- a/MdePkg/Library/BaseMemoryLibOptDxe/Arm/SetMem.S +++ b/MdePkg/Library/BaseMemoryLibOptDxe/Arm/SetMem.S @@ -16,6 +16,7 @@ .thumb .syntax unified .align 5 + .type ASM_PFX(InternalMemSetMem16), %function ASM_GLOBAL ASM_PFX(InternalMemSetMem16) ASM_PFX(InternalMemSetMem16): uxth r2, r2 @@ -23,17 +24,20 @@ ASM_PFX(InternalMemSetMem16): orr r2, r2, r2, lsl #16 b 0f + .type ASM_PFX(InternalMemSetMem32), %function ASM_GLOBAL ASM_PFX(InternalMemSetMem32) ASM_PFX(InternalMemSetMem32): lsl r1, r1, #2 b 0f + .type ASM_PFX(InternalMemSetMem64), %function ASM_GLOBAL ASM_PFX(InternalMemSetMem64) ASM_PFX(InternalMemSetMem64): lsl r1, r1, #3 b 1f .align 5 + .type ASM_PFX(InternalMemSetMem), %function ASM_GLOBAL ASM_PFX(InternalMemSetMem) ASM_PFX(InternalMemSetMem): uxtb r2, r2 @@ -41,6 +45,7 @@ ASM_PFX(InternalMemSetMem): orr r2, r2, r2, lsl #16 b 0f + .type ASM_PFX(InternalMemZeroMem), %function ASM_GLOBAL ASM_PFX(InternalMemZeroMem) ASM_PFX(InternalMemZeroMem): movs r2, #0