From patchwork Wed May 9 13:00:01 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nicholas Piggin X-Patchwork-Id: 10389389 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 422A260153 for ; Wed, 9 May 2018 13:00:34 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 3413628FC2 for ; Wed, 9 May 2018 13:00:34 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 291F828FB7; Wed, 9 May 2018 13:00:34 +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 4E78528FC6 for ; Wed, 9 May 2018 13:00:33 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S934958AbeEINAa (ORCPT ); Wed, 9 May 2018 09:00:30 -0400 Received: from mail-pg0-f67.google.com ([74.125.83.67]:38223 "EHLO mail-pg0-f67.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S934875AbeEINA2 (ORCPT ); Wed, 9 May 2018 09:00:28 -0400 Received: by mail-pg0-f67.google.com with SMTP id n9-v6so22656391pgq.5; Wed, 09 May 2018 06:00:28 -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=0avLCZgYoQHjQnnBQ3pWMi7CYCIf33E3BLpidig7+UI=; b=W/iVwHIEgWdkQPLkrPdcSv7vs2uhVZ6hk4kjPAq5+2GxyDjENxSG0Ju5ucgDuClLsI OnAKXcLM250gX1b5VHxFvt+pGzjr0cq4E2XAFW5P7h1P/w9ife8TRkdqG5l+rC2ZKamz 5YgPLACBPbfQOkhaZwFrjRyx9skLFwQSE2zmw/c6KFjUz0jJcLbJV46BuOzc4gyEAwma JzVCUDpijZgC+ifhc06ZN56M+7UukUYIxz39mNgu/dJUnQ0EU/nIIkvYlF11/PJRQ5GV XBskfBnN84Fe/Ivw8iJFb2h14HO/nEdZvdS3jyQqCeXmmpj3ndcbR23y3KZSix0g1Lx5 TLpg== 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=0avLCZgYoQHjQnnBQ3pWMi7CYCIf33E3BLpidig7+UI=; b=kKfdw+oMAh47lOf7qqoFmMDqwCf9QCRmsyVCzBkJDawlQnw46Ptpzx5khOQz2DFlP5 n0jRcDta54uQ+3/g3qh67bqKHLXhTOed/mGJuOcAM7ferFYm1nsZBrTVG8Wzcl0Ey92X jI+DPPXYzyp6w2qGWmPo9PS1rSymQdfEq8FbQkGqjP0JisnEitgYcmexrOG7rl3MhUnn 4mULOoW7hklszUrswZvF0xaHWz1WklKzSMfbm0D4gikF+WKEYtUMhzwdnOopYODknF0J DRMbP8k93HEyDgDa0QvDXVrurjlq0C9ZWjgQDTAca2Z5rZWQ9GFdgpos/KhgXIcgJOjv dQtQ== X-Gm-Message-State: ALQs6tCngloMTvT5SNlGKYAiGs4YzeSYy9mD3NSi8LSBMwv2l0pIrZIU 91wm7k9n0GuK2fyxjae71+A= X-Google-Smtp-Source: AB8JxZrIOb5887rhn379LwAlyqP0ohTsamhOi9tXZemXcIc+AvSZdPRQDw2JPdM9M7DIasuKRj2o/w== X-Received: by 10.98.237.18 with SMTP id u18mr37539263pfh.127.1525870827714; Wed, 09 May 2018 06:00:27 -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 u4-v6sm4271184pgn.10.2018.05.09.06.00.24 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 09 May 2018 06:00:26 -0700 (PDT) From: Nicholas Piggin To: Masahiro Yamada Cc: Nicholas Piggin , linux-arch@vger.kernel.org, linux-kbuild@vger.kernel.org, linuxppc-dev@lists.ozlabs.org Subject: [PATCH v2 4/4] powerpc: Allow LD_DEAD_CODE_DATA_ELIMINATION to be selected Date: Wed, 9 May 2018 23:00:01 +1000 Message-Id: <20180509130001.24276-5-npiggin@gmail.com> X-Mailer: git-send-email 2.17.0 In-Reply-To: <20180509130001.24276-1-npiggin@gmail.com> References: <20180509130001.24276-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, the resulting kernel is almost 400kB smaller (and still boots): text data bss dec filename 11827621 4810490 1341080 17979191 vmlinux 11752437 4598858 1338776 17690071 vmlinux.dcde Mathieu's numbers for custom Mac Mini G4 config has almost 200kB saving. It also had some increase in vmlinux size for as-yet unknown reasons. text data bss dec filename 7461457 2475122 1428064 11364643 vmlinux 7386425 2364370 1425432 11176227 vmlinux.dcde Tested-by: Christophe Leroy [8xx] Tested-by: Mathieu Malaterre [32-bit powermac] Signed-off-by: Nicholas Piggin Acked-by: Michael Ellerman --- 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..52a93cdd04bc 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_MAIN .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 = .; }