Received: by 2002:a25:7ec1:0:0:0:0:0 with SMTP id z184csp3430057ybc; Thu, 21 Nov 2019 08:13:54 -0800 (PST) X-Google-Smtp-Source: APXvYqxL0zGS/uH4qcWWKCn+ilcpIdCQA//eZ6HeNbYp883eLRv6vh/awRPyWj3AXutTKy+EYRyN X-Received: by 2002:adf:d083:: with SMTP id y3mr11243039wrh.53.1574352834698; Thu, 21 Nov 2019 08:13:54 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1574352834; cv=none; d=google.com; s=arc-20160816; b=Qco2ux1fUFwsnQqAKome+qDAMq+aEJJjz+xxYMu9F6XLpJ8A5XWd5VSBPRmY8Ymmgw rTYmNIso/Nk1vuH6OXnT+2kS4A7PdCRfNCuY+dD94bXLUoOL9kzxUqfH49yn7hr6mm73 XHcUdRAUJDxzLLxK2JjiM2jii7vftGxsShUb5t6w30H2LgPXyZ1K2RUtZeW5YcwC7C4n DBG3bOtkjVYiEFYZFN4Qrj6jHB6+QKXgY2fIhMVcYr+tPisfiMagzKLdxuK3kObGmWxW 1sgS7S6WJDEoGcrR4+Z3Yug2IAMMB09GkPW16iVofLP8DX2gKzO9PScrZEAoaImD5hlF POkQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:user-agent:in-reply-to :content-disposition:mime-version:references:message-id:subject:cc :to:from:date:dkim-signature; bh=KBppxeDIe3rtfu8Bu2T0iXCrBA873boCqZTba6T53As=; b=VDn4cANEQ60YpRTaM5I7vNFFAL2L84t3tH8hw6GY7MI0Sh87XK56iaPQuivlaDmFwY jo/PdwRGNa9VdiWKTXmiyYde4kI802ZHU4MicD2+/tcr7C3SgVlyKYG+af3YSct6Azo5 Pm2et6zR4zF7C1SE/7wZ2gkbmAddLZCVay7N2TnmRBZI/kUuwIUxos/5GnydeO0c+6rs Wx/rkHt3VM7xhZZAPZjmLCLWqOJ/QYrieq6pynTnuvaQKu1jNf1UDKutk5uHOH2JwL20 bZk0x5UVtVnODrj2SCPMDCOJFgoRrIv+tkGvAsF7T0jp36S/nvjLAV9ic6P2vie/RL6R zu+g== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=axuEVukI; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id f7si2546984edy.92.2019.11.21.08.13.20; Thu, 21 Nov 2019 08:13:54 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=axuEVukI; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727141AbfKUQJ2 (ORCPT + 99 others); Thu, 21 Nov 2019 11:09:28 -0500 Received: from mail.kernel.org ([198.145.29.99]:59660 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726983AbfKUQJ2 (ORCPT ); Thu, 21 Nov 2019 11:09:28 -0500 Received: from linux-8ccs (x2f7fc2f.dyn.telefonica.de [2.247.252.47]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id B27D720637; Thu, 21 Nov 2019 16:09:24 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1574352567; bh=qtUc667Q7wg3zPw/QS2ID8HQ0EtL7AIUIqStkjbd7cA=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=axuEVukImzj09aDRfgD0HEvDjkLBonuEsdqPIqsk/jzxmUCSf3WwcM4T9k6PSIHZ/ aYSMIAn0RNztBzBqJL9iwr0ncM4mHN5OLlF+r3q5QxHMBq7wc1TwubSDmpjc1oKySF Va2bMW6iBG85yVmbUa7rFzwXzaV+U6Qz639NYiOM= Date: Thu, 21 Nov 2019 17:09:20 +0100 From: Jessica Yu To: Rasmus Villemoes Cc: linux-kernel@vger.kernel.org, Matthias Maennich , Masahiro Yamada , Arnd Bergmann , Greg Kroah-Hartman , Will Deacon , Catalin Marinas Subject: Re: [PATCH] export.h: reduce __ksymtab_strings string duplication by using "MS" section flags Message-ID: <20191121160919.GB22213@linux-8ccs> References: <20191120145110.8397-1-jeyu@kernel.org> <93d3936d-0bc4-9639-7544-42a324f01ac1@rasmusvillemoes.dk> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii; format=flowed Content-Disposition: inline In-Reply-To: <93d3936d-0bc4-9639-7544-42a324f01ac1@rasmusvillemoes.dk> X-OS: Linux linux-8ccs 5.4.0-rc5-lp150.12.61-default+ x86_64 User-Agent: Mutt/1.10.1 (2018-07-13) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org +++ Rasmus Villemoes [21/11/19 11:51 +0100]: >On 20/11/2019 15.51, Jessica Yu wrote: >> >> We can alleviate this situation by utilizing the SHF_MERGE and >> SHF_STRING section flags. SHF_MERGE|SHF_STRING indicate to the linker >> that the data in the section are null-terminated strings > >[pet peeve: nul, not null.] Ah, right you are! >> As of v5.4-rc5, the following statistics were gathered with x86 >> defconfig with approximately 10.7k exported symbols. >> >> Size of __ksymtab_strings in vmlinux: >> ------------------------------------- >> v5.4-rc5: 213834 bytes >> v5.4-rc5 with commit c3a6cf19e695: 224455 bytes >> v5.4-rc5 with this patch: 205759 bytes >> >> So, we already see memory savings of ~8kB compared to vanilla -rc5 and >> savings of nearly 18.7kB compared to -rc5 with commit c3a6cf19e695 on top. > >Yippee :) Thanks for picking up the ball and sending this. And thanks for the idea in the first place :-) >> /* >> - * note on .section use: @progbits vs %progbits nastiness doesn't matter, >> - * since we immediately emit into those sections anyway. >> + * note on .section use: we specify @progbits vs %progbits since usage of >> + * "M" (SHF_MERGE) section flag requires it. >> */ >> + >> +#ifdef CONFIG_ARM >> +#define ARCH_PROGBITS %progbits >> +#else >> +#define ARCH_PROGBITS @progbits >> +#endif > >Did you figure out a way to determine if ARM is the only odd one? I was >just going by gas' documentation which mentions ARM as an example, but >doesn't really provide a way to know what each arch uses. I suppose 0day >will tell us shortly. I *think* so. At least, I was going off of drivers/base/firmware_loader/builtin/Makefile and scripts/recordmcount.pl, which were the only other places that I found that reference the %progbits vs @progbits oddity. They only use %progbits in the case of CONFIG_ARM and @progbits for other arches. I wasn't sure about arm64, but I looked at the assembly files gcc produced and it looked like @progbits was used there. Added some arm64 people to CC since they would know :-) >If we want to avoid arch-ifdefs in these headers (and that could become >unwieldy if ARM is not the only one) I think one could add a >asm-generic/progbits.h, add progbits.h to mandatory-y in >include/asm-generic/Kbuild, and then just provide a progbits.h on ARM >(and the other exceptions) - then I think the kbuild logic automatically >makes "#include " pick up the right one. And the header >could define ARCH_PROGBITS with or without the double quotes depending >on __ASSEMBLY__. I think this would work, and it feels like the more correct solution especially if arm isn't the only one with the odd progbits char. It might be overkill if it's just arm that's affected though. I leave it to Masahiro to see what he prefers. Thanks! Jessica