From patchwork Fri Apr 20 07:34:14 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nicholas Piggin X-Patchwork-Id: 10351975 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id 4D1FC60365 for ; Fri, 20 Apr 2018 07:34:50 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 3B1C12869A for ; Fri, 20 Apr 2018 07:34:50 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 2FA5C286A3; Fri, 20 Apr 2018 07:34:50 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-7.8 required=2.0 tests=BAYES_00, DKIM_ADSP_CUSTOM_MED, DKIM_SIGNED, FREEMAIL_FROM, MAILING_LIST_MULTI, RCVD_IN_DNSWL_HI, T_DKIM_INVALID autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id B18542869A for ; Fri, 20 Apr 2018 07:34:49 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753980AbeDTHes (ORCPT ); Fri, 20 Apr 2018 03:34:48 -0400 Received: from mail-pf0-f193.google.com ([209.85.192.193]:43817 "EHLO mail-pf0-f193.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753922AbeDTHeq (ORCPT ); Fri, 20 Apr 2018 03:34:46 -0400 Received: by mail-pf0-f193.google.com with SMTP id j11so3881933pff.10; Fri, 20 Apr 2018 00:34:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=/+EJyTv0YstiSfCAWNtLWoRRXWQegfiVUf/OIF1Ha8A=; b=ovJepImZNneoqjShgPmsBjfQWGTakxeSanl93g+tdvctJbn0cvtUufnukcZwn8KkcY 4ehJgSexGdr0UDeUA5GcmPIVMcKIjxotN9uMqfD0U7nLZj+4n7NFG1c/bkVYwH1qwMJE +btb3rcxfpUzKZFVnQ+wyvh88pQLbzErx5Eic0SWmkBBEVomNF26rZ1mNBYGo7CYHKUc GO8JEwO6u8KRIgzHvzFFe5nvOkQxsRRf4iPRTABC+wtHD2j2s+hQg2givvekbDVNZWLc iWfPjRK0eZfOLVIH/Xlv4F+X3X14jrcjrsuOTe6QGWwmjfAOE14uIC9uJfpOZhfC5+Xz VcEg== 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; bh=/+EJyTv0YstiSfCAWNtLWoRRXWQegfiVUf/OIF1Ha8A=; b=gS9Z05THr2yXpsDdYNrRS6DNFsgsCSbGjoWxcgHi+higcefv/6V5K2iRtMYf8mhJL6 g2JixtKJnoqNSdaHUQbSs56pMwkJma3xL3OkPLI+r+M3pc284qX8M+2LqWBWWOHncaoC zFr/8ByAsWpS8eWfSDrzX+PX+6LNuGwOFsYsWpIZjvDBxek+uHd9I5VtpapQosm7feu9 WyMhZEn/tkUOM5E8NoDglDJi8vBCbSa0T/8Djgw4yGxGKNJ9NmnGm/g1jPDh6X98SzJh ec6EohAa+7laLmjF6MtKbkCoDw3UyZ0u9KjKfT5kyDqmRXuvEamMomYjRkEXrjGOTnSa MaCg== X-Gm-Message-State: ALQs6tC6Iv+kQSBjDamosobQb5ECLQgyRTe3gdXTuhKvVvgxi6VhpSos 83o4sepT6l79MzPXhWwM6Q840Q== X-Google-Smtp-Source: AIpwx4/OK6wUTlp+0ehOOIAUVRtdhenZAOEas2VDDdY+UZdMfX81oxe+uSZg7yQrDKiYgxN/8HRWew== X-Received: by 10.99.94.197 with SMTP id s188mr7645539pgb.21.1524209686117; Fri, 20 Apr 2018 00:34:46 -0700 (PDT) Received: from roar.au.ibm.com (59-102-70-78.tpgi.com.au. [59.102.70.78]) by smtp.gmail.com with ESMTPSA id v15sm12568724pfa.116.2018.04.20.00.34.42 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 20 Apr 2018 00:34:45 -0700 (PDT) From: Nicholas Piggin To: linuxppc-dev@lists.ozlabs.org Cc: Nicholas Piggin , linux-arch@vger.kernel.org, linux-kbuild@vger.kernel.org, Christophe Leroy , Nicolas Pitre Subject: [PATCH 4/4] powerpc: Allow LD_DEAD_CODE_DATA_ELIMINATION to be selected Date: Fri, 20 Apr 2018 17:34:14 +1000 Message-Id: <20180420073414.23169-5-npiggin@gmail.com> X-Mailer: git-send-email 2.17.0 In-Reply-To: <20180420073414.23169-1-npiggin@gmail.com> References: <20180420073414.23169-1-npiggin@gmail.com> Sender: linux-kbuild-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kbuild@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP This requires further changes to linker script to KEEP some tables and wildcard compiler generated sections into the right place. This includes pp32 modifications from Christophe Leroy. When compiling powernv_defconfig with this option: text data bss dec filename 11827621 4810490 1341080 17979191 vmlinux 11752437 4598858 1338776 17690071 vmlinux.dcde Resulting kernel is almost 400kB smaller (and still boots). [ppc32 numbers here] Signed-off-by: Nicholas Piggin Tested-by: Christophe Leroy --- arch/powerpc/Kconfig | 1 + arch/powerpc/kernel/vmlinux.lds.S | 22 +++++++++++----------- 2 files changed, 12 insertions(+), 11 deletions(-) diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig index c32a181a7cbb..ee6dbe2efc8b 100644 --- a/arch/powerpc/Kconfig +++ b/arch/powerpc/Kconfig @@ -205,6 +205,7 @@ config PPC select HAVE_KPROBES select HAVE_KPROBES_ON_FTRACE select HAVE_KRETPROBES + select HAVE_LD_DEAD_CODE_DATA_ELIMINATION select HAVE_LIVEPATCH if HAVE_DYNAMIC_FTRACE_WITH_REGS select HAVE_MEMBLOCK select HAVE_MEMBLOCK_NODE_MAP diff --git a/arch/powerpc/kernel/vmlinux.lds.S b/arch/powerpc/kernel/vmlinux.lds.S index c8af90ff49f0..89381dc959ce 100644 --- a/arch/powerpc/kernel/vmlinux.lds.S +++ b/arch/powerpc/kernel/vmlinux.lds.S @@ -89,7 +89,7 @@ SECTIONS */ .text BLOCK(0) : AT(ADDR(.text) - LOAD_OFFSET) { #ifdef CONFIG_LD_HEAD_STUB_CATCH - *(.linker_stub_catch); + KEEP(*(.linker_stub_catch)); . = . ; #endif @@ -98,7 +98,7 @@ SECTIONS ALIGN_FUNCTION(); #endif /* careful! __ftr_alt_* sections need to be close to .text */ - *(.text.hot .text .text.fixup .text.unlikely .fixup __ftr_alt_* .ref.text); + *(.text.hot .text .text.[0-9a-zA-Z_]* .text.fixup .text.unlikely .fixup __ftr_alt_* .ref.text); SCHED_TEXT CPUIDLE_TEXT LOCK_TEXT @@ -170,10 +170,10 @@ SECTIONS .init.data : AT(ADDR(.init.data) - LOAD_OFFSET) { INIT_DATA __vtop_table_begin = .; - *(.vtop_fixup); + KEEP(*(.vtop_fixup)); __vtop_table_end = .; __ptov_table_begin = .; - *(.ptov_fixup); + KEEP(*(.ptov_fixup)); __ptov_table_end = .; } @@ -194,26 +194,26 @@ SECTIONS . = ALIGN(8); __ftr_fixup : AT(ADDR(__ftr_fixup) - LOAD_OFFSET) { __start___ftr_fixup = .; - *(__ftr_fixup) + KEEP(*(__ftr_fixup)) __stop___ftr_fixup = .; } . = ALIGN(8); __mmu_ftr_fixup : AT(ADDR(__mmu_ftr_fixup) - LOAD_OFFSET) { __start___mmu_ftr_fixup = .; - *(__mmu_ftr_fixup) + KEEP(*(__mmu_ftr_fixup)) __stop___mmu_ftr_fixup = .; } . = ALIGN(8); __lwsync_fixup : AT(ADDR(__lwsync_fixup) - LOAD_OFFSET) { __start___lwsync_fixup = .; - *(__lwsync_fixup) + KEEP(*(__lwsync_fixup)) __stop___lwsync_fixup = .; } #ifdef CONFIG_PPC64 . = ALIGN(8); __fw_ftr_fixup : AT(ADDR(__fw_ftr_fixup) - LOAD_OFFSET) { __start___fw_ftr_fixup = .; - *(__fw_ftr_fixup) + KEEP(*(__fw_ftr_fixup)) __stop___fw_ftr_fixup = .; } #endif @@ -226,7 +226,7 @@ SECTIONS . = ALIGN(8); .machine.desc : AT(ADDR(.machine.desc) - LOAD_OFFSET) { __machine_desc_start = . ; - *(.machine.desc) + KEEP(*(.machine.desc)) __machine_desc_end = . ; } #ifdef CONFIG_RELOCATABLE @@ -274,7 +274,7 @@ SECTIONS .data : AT(ADDR(.data) - LOAD_OFFSET) { DATA_DATA *(.data.rel*) - *(.sdata) + *(SDATA_MAIN) *(.sdata2) *(.got.plt) *(.got) *(.plt) @@ -289,7 +289,7 @@ SECTIONS .opd : AT(ADDR(.opd) - LOAD_OFFSET) { __start_opd = .; - *(.opd) + KEEP(*(.opd)) __end_opd = .; }