From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753303AbeDSFK2 (ORCPT ); Thu, 19 Apr 2018 01:10:28 -0400 Received: from mail-pl0-f66.google.com ([209.85.160.66]:33963 "EHLO mail-pl0-f66.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750953AbeDSFK1 (ORCPT ); Thu, 19 Apr 2018 01:10:27 -0400 X-Google-Smtp-Source: AIpwx49LA9ZNeIb+s0mDlc2eTUS8h5rG0VrVJk2GPEcGbvptcEyUi7I3m8xWyI9+AfCLqms235LRPg== Date: Thu, 19 Apr 2018 15:10:08 +1000 From: Nicholas Piggin To: Christophe LEROY Cc: Mathieu Malaterre , Paul Mackerras , linuxppc-dev , LKML Subject: Re: [PATCH] powerpc: Allow selection of CONFIG_LD_DEAD_CODE_DATA_ELIMINATION Message-ID: <20180419150955.6c2ae486@roar.ozlabs.ibm.com> In-Reply-To: References: <20180417104909.22D416C07D@po15720vm.idsi0.si.c-s.fr> <48cdb73c-f0c4-0c8a-19f5-8fce000e7050@c-s.fr> Organization: IBM X-Mailer: Claws Mail 3.16.0 (GTK+ 2.24.32; x86_64-pc-linux-gnu) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Wed, 18 Apr 2018 15:11:24 +0200 Christophe LEROY wrote: > Le 18/04/2018 à 10:36, Mathieu Malaterre a écrit : > > Christophe, > > > > On Wed, Apr 18, 2018 at 8:34 AM, Christophe LEROY > > wrote: > >> > >> > >> Le 17/04/2018 à 19:10, Mathieu Malaterre a écrit : > >>> > >>> On Tue, Apr 17, 2018 at 6:49 PM, Christophe LEROY > >>> wrote: > >>>> > >>>> > >>>> > >>>> Le 17/04/2018 à 18:45, Mathieu Malaterre a écrit : > >>>>> > >>>>> > >>>>> On Tue, Apr 17, 2018 at 12:49 PM, Christophe Leroy > >>>>> wrote: > >>>>>> > >>>>>> > >>>>>> This option does dead code and data elimination with the linker by > >>>>>> compiling with -ffunction-sections -fdata-sections and linking with > >>>>>> --gc-sections. > >>>>>> > >>>>>> By selecting this option on mpc885_ads_defconfig, > >>>>>> vmlinux LOAD segment size gets reduced by 10% > >>>>>> > >>>>>> Program Header before the patch: > >>>>>> LOAD off 0x00010000 vaddr 0xc0000000 paddr 0x00000000 align > >>>>>> 2**16 > >>>>>> filesz 0x0036eda4 memsz 0x0038de04 flags rwx > >>>>>> > >>>>>> Program Header after the patch: > >>>>>> LOAD off 0x00010000 vaddr 0xc0000000 paddr 0x00000000 align > >>>>>> 2**16 > >>>>>> filesz 0x00316da4 memsz 0x00334268 flags rwx > >>>>>> > >>>>>> Signed-off-by: Christophe Leroy > >>>>>> --- > >>>>>> arch/powerpc/Kconfig | 8 ++++++++ > >>>>>> 1 file changed, 8 insertions(+) > >>>>>> > >>>>>> diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig > >>>>>> index 8fe4353be5e3..e1fac49cf465 100644 > >>>>>> --- a/arch/powerpc/Kconfig > >>>>>> +++ b/arch/powerpc/Kconfig > >>>>>> @@ -888,6 +888,14 @@ config PPC_MEM_KEYS > >>>>>> > >>>>>> If unsure, say y. > >>>>>> > >>>>>> +config PPC_UNUSED_ELIMINATION > >>>>>> + bool "Eliminate unused functions and data from vmlinux" > >>>>>> + default n > >>>>>> + select LD_DEAD_CODE_DATA_ELIMINATION > >>>>>> + help > >>>>>> + Select this to do dead code and data elimination with the > >>>>>> linker > >>>>>> + by compiling with -ffunction-sections -fdata-sections and > >>>>>> linking > >>>>>> + with --gc-sections. > >>>>>> endmenu > >>>>>> > >>>>> > >>>>> Just for reference, I cannot boot my Mac Mini G4 anymore (yaboot). The > >>>>> messages I can see (prom_init) are: > >>>> > >>>> > >>>> > >>>> Which version of GCC do you use ? > >>> > >>> > >>> $ powerpc-linux-gnu-gcc --version > >>> powerpc-linux-gnu-gcc (Debian 6.3.0-18) 6.3.0 20170516 > >>> Copyright (C) 2016 Free Software Foundation, Inc. > >>> This is free software; see the source for copying conditions. There is NO > >>> warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR > >>> PURPOSE. > >>> > >>> this is simply coming from: > >>> > >>> $ apt-cache policy crossbuild-essential-powerpc > >>> crossbuild-essential-powerpc: > >>> Installed: 12.3 > >>> Candidate: 12.3 > >>> Version table: > >>> *** 12.3 500 > >>> 500 http://ftp.fr.debian.org/debian stretch/main amd64 Packages > >>> 500 http://ftp.fr.debian.org/debian stretch/main i386 Packages > >>> 100 /var/lib/dpkg/status > >>> > >>> > >>>> Can you provide the generated System.map with and without that option > >>>> active > >>>> ? > >>> > >>> > >>> $ du -sh g4/System.map.* > >>> 1.7M g4/System.map.with > >>> 1.8M g4/System.map.without > >> > >> > >> Here below is the list of objects removed with the option selected. I can't > >> see anything suspect at first. > > > > Does this help: > > > > $ grep orphan /tmp/g4.log|grep prom_init > > powerpc-linux-gnu-ld: warning: orphan section `.sbss.of_workarounds' > > from `arch/powerpc/kernel/prom_init.o' being placed in section > > `.sbss.of_workarounds'. > > powerpc-linux-gnu-ld: warning: orphan section `.sbss.of_workarounds' > > from `arch/powerpc/kernel/prom_init.o' being placed in section > > `.sbss.of_workarounds'. > > powerpc-linux-gnu-ld: warning: orphan section `.sbss.of_workarounds' > > from `arch/powerpc/kernel/prom_init.o' being placed in section > > `.sbss.of_workarounds'. > > Well, in a way yes. I initially thought that all those warnings where > normal, but indeed not. We were missing some things in powerpc linker > script, and most likely some sections ended up in the wrong place. > > Last week I tested on an 8xx and it was booting without any issue. > I tested today on an 83xx and it was not booting. > > I will soon send new patches with the fixes in the linker scripts. Yeah there needs to be a bit more work for powerpc before we can enable this. I have some old patches I will dust off and re-send. I never got modules working properly, I'll see if I can figure it out. Thanks, Nick