Received: by 2002:a25:868d:0:0:0:0:0 with SMTP id z13csp940984ybk; Wed, 20 May 2020 16:23:28 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzUWLWbLA9qbgy7Y9XqNOx8ZolHyK+uFCsNs2p0+dDTAh0UYxi23m2UZEkogjfqNL9JF29s X-Received: by 2002:aa7:ca13:: with SMTP id y19mr5480146eds.30.1590017007932; Wed, 20 May 2020 16:23:27 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1590017007; cv=none; d=google.com; s=arc-20160816; b=oE+FsV/7IC9iAP/xVujh/pEsOeU8xvzGHV8v7HKf3JJpNmxsUxj54fjgB2+mxC9lzY erhI4SKeYRQOAiR+gMaS7G+J/nfWgRUW2Alauyau2xBugr4H6k+7Zs+1e8/03n1bicnA 7cr42M4Iz+eHNnyfOao7xW9m0oGpqelZx6Di2lrcp1ObX4lUkg7JlcUbJbjrr1Wv0Tc/ PaeDvnjVo1uHjY8WP1Jr/freD7b/MtnJIjAuaKp/W/XOPToshg9F+sU+Z7JXR54oU/eS W3KExQi88S7wg6KrGCyHRtFdtauYCKPBHRQMiBoY5HhW0iyan5jTCiQb9ceeWRr8FgFM RybA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:dkim-signature; bh=d9DQ+P49I61QAM9lR3N7+GDsq5XLFYN6aPsU2WBNwdA=; b=PKVaJ2hnKn2l4IoawKP98pBrC2ziT63dkG7UFvDBPgXith0oZqi5EVA/6NmBaoxWzB rIcTeAu+Pp4XRWM9JGQhtbnLn8IkXgzE5DsPecL3yYVwjsIN8OHnLIH8ZHDB2AKV/PuI Obrx1fVKeL5mVUGBp09zYkw1YYXanDXSpc3BJinKMNCZL7fDGvsyHu9LgHiWKOuvJ1WB 1nbQcY/+wUhoRc+5919Cy4bi7ERlOjmM1sSsi5d2QklS3FOzcypABSvMTAFhMJcrCeRd UlHV/fvKADcs5odpVid3rARF6GYrugoHsymGTRGrQ2HJ4gFghOM7AQ47GGgYwT66mFsi GORQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20161025 header.b="bCMe/xuf"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id eb11si2250493edb.302.2020.05.20.16.23.04; Wed, 20 May 2020 16:23:27 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@google.com header.s=20161025 header.b="bCMe/xuf"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728664AbgETXVa (ORCPT + 99 others); Wed, 20 May 2020 19:21:30 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:54936 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728573AbgETXVa (ORCPT ); Wed, 20 May 2020 19:21:30 -0400 Received: from mail-pj1-x1041.google.com (mail-pj1-x1041.google.com [IPv6:2607:f8b0:4864:20::1041]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id F384DC061A0E for ; Wed, 20 May 2020 16:21:29 -0700 (PDT) Received: by mail-pj1-x1041.google.com with SMTP id t40so2095240pjb.3 for ; Wed, 20 May 2020 16:21:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=d9DQ+P49I61QAM9lR3N7+GDsq5XLFYN6aPsU2WBNwdA=; b=bCMe/xufpajCZo6YgMImSf+lTdCreI01DMnL4oJeCB9u0gQLrDRGQXxGTumbBbuvzh VcDJZT4Ny6BwS+JLq9FHho1IX9jfdQ5sOuExaKvGL2AH4X9KmCptFgKjxP7aRYaoUPhQ MvhYfmWH85jfcUsMu6h5WaoUBoQDcA5Xz5PjP4SSNumiMXRgBSoFPNgKFJXJAXaFSF7W Dj68ICN+nMquOckHkYDdNE2pkCqZco9LR5I/Z9OxvsAygMVao2Igz+p8fVdBRnQFah+G VJRV3RSxoanGFJDrODq6TgaQU6H2uRSdyfPYRmr1/x6IfXd439j6kC5Q1wyfsFdAE7Vi GUEw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=d9DQ+P49I61QAM9lR3N7+GDsq5XLFYN6aPsU2WBNwdA=; b=m7Y4S4oDe7UlzWVobdul0lgj48g9UG9WoRreYVicahvknMMkwg8i+ejn4v6XIWqd+y 67PSNAibmANAeXenU9vv/LvIvq4OjVp9nNNYJCZgORSBuITVWf8ySeKYD4CfuhGzBLGo /9MkAZNdLDi4mZSPhsjuvyhlM0QVbPg0xAeoutC2MeudbF0U8uLPA5lraxS1tFyqDHOe SrS7uPUv3ezH93haZ5EI0LYSuXdKsJ9pPZggXPP27JY7eD7f6mnSB93sAbzQzckwf4pV 02KaTuXuwRGyzsKdZo04o9/MFmEYJJdutW32YPYLfXYYyiSIzgghHKuLg/PGZbYx216I tn0A== X-Gm-Message-State: AOAM5318RFNC1pII95j+49bXml7umWHD9EhwpB+fNsD0bpLUs4OWKoCB 8oWHzvjj6bLMYKZP6ZQ6eL9yD+bxtpflec8ZOEaGkQ== X-Received: by 2002:a17:90b:19cc:: with SMTP id nm12mr7431934pjb.25.1590016889009; Wed, 20 May 2020 16:21:29 -0700 (PDT) MIME-Version: 1.0 References: <10f4fb0b-1012-b0e6-af05-0aa5a906de21@redhat.com> <20200520193637.6015-1-ndesaulniers@google.com> In-Reply-To: <20200520193637.6015-1-ndesaulniers@google.com> From: Nick Desaulniers Date: Wed, 20 May 2020 16:21:17 -0700 Message-ID: Subject: Re: [PATCH v2] Makefile: support compressed debug info To: Masahiro Yamada Cc: Sedat Dilek , Fangrui Song , Nick Clifton , Michal Marek , Andrew Morton , Changbin Du , Randy Dunlap , Stephen Rothwell , Mauro Carvalho Chehab , Anshuman Khandual , Krzysztof Kozlowski , Linux Kbuild mailing list , LKML , clang-built-linux , David Blaikie Content-Type: text/plain; charset="UTF-8" Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Wed, May 20, 2020 at 12:36 PM Nick Desaulniers wrote: > > As debug information gets larger and larger, it helps significantly save > the size of vmlinux images to compress the information in the debug > information sections. Note: this debug info is typically split off from > the final compressed kernel image, which is why vmlinux is what's used > in conjunction with GDB. Minimizing the debug info size should have no > impact on boot times, or final compressed kernel image size. > > All of the debug sections will have a `C` flag set. > $ readelf -S > > $ bloaty vmlinux.gcc75.compressed.dwarf4 -- \ > vmlinux.gcc75.uncompressed.dwarf4 > > FILE SIZE VM SIZE > -------------- -------------- > +0.0% +18 [ = ] 0 [Unmapped] > -73.3% -114Ki [ = ] 0 .debug_aranges > -76.2% -2.01Mi [ = ] 0 .debug_frame > -73.6% -2.89Mi [ = ] 0 .debug_str > -80.7% -4.66Mi [ = ] 0 .debug_abbrev > -82.9% -4.88Mi [ = ] 0 .debug_ranges > -70.5% -9.04Mi [ = ] 0 .debug_line > -79.3% -10.9Mi [ = ] 0 .debug_loc > -39.5% -88.6Mi [ = ] 0 .debug_info > -18.2% -123Mi [ = ] 0 TOTAL > > $ bloaty vmlinux.clang11.compressed.dwarf4 -- \ > vmlinux.clang11.uncompressed.dwarf4 > > FILE SIZE VM SIZE > -------------- -------------- > +0.0% +23 [ = ] 0 [Unmapped] > -65.6% -871 [ = ] 0 .debug_aranges > -77.4% -1.84Mi [ = ] 0 .debug_frame > -82.9% -2.33Mi [ = ] 0 .debug_abbrev > -73.1% -2.43Mi [ = ] 0 .debug_str > -84.8% -3.07Mi [ = ] 0 .debug_ranges > -65.9% -8.62Mi [ = ] 0 .debug_line > -86.2% -40.0Mi [ = ] 0 .debug_loc > -42.0% -64.1Mi [ = ] 0 .debug_info > -22.1% -122Mi [ = ] 0 TOTAL > > For x86_64 defconfig + LLVM=1 (before): > Elapsed (wall clock) time (h:mm:ss or m:ss): 3:22.03 > Maximum resident set size (kbytes): 43856 > > For x86_64 defconfig + LLVM=1 (after): > Elapsed (wall clock) time (h:mm:ss or m:ss): 3:32.52 > Maximum resident set size (kbytes): 1566776 > > Suggested-by: David Blaikie Sorry, I have mistyped David's email, it should be: Suggested-by: David Blaikie (I missed the first `i` in the last name) > Suggested-by: Fangrui Song > Suggested-by: Nick Clifton > Suggested-by: Sedat Dilek > Tested-by: Sedat Dilek > Signed-off-by: Nick Desaulniers > --- > Changes V1 -> V2: > * rebase on linux-next. > * Add assembler flags as per Fangrui. > * Add note about KDEB_COMPRESS+scripts/package/builddeb > as per Sedat and Masahiro. > * Add note about bintutils version requirements as per Nick C. > * Add note about measured increased build time and max RSS. > > Makefile | 6 ++++++ > lib/Kconfig.debug | 15 +++++++++++++++ > 2 files changed, 21 insertions(+) > > diff --git a/Makefile b/Makefile > index 71687bfe1cd9..be8835296754 100644 > --- a/Makefile > +++ b/Makefile > @@ -822,6 +822,12 @@ DEBUG_CFLAGS += $(call cc-option, -femit-struct-debug-baseonly) \ > $(call cc-option,-fno-var-tracking) > endif > > +ifdef CONFIG_DEBUG_INFO_COMPRESSED > +DEBUG_CFLAGS += -gz=zlib > +KBUILD_AFLAGS += -Wa,--compress-debug-sections=zlib > +KBUILD_LDFLAGS += --compress-debug-sections=zlib > +endif > + > KBUILD_CFLAGS += $(DEBUG_CFLAGS) > export DEBUG_CFLAGS > > diff --git a/lib/Kconfig.debug b/lib/Kconfig.debug > index b8f023e054b9..5a423cbfaea4 100644 > --- a/lib/Kconfig.debug > +++ b/lib/Kconfig.debug > @@ -225,6 +225,21 @@ config DEBUG_INFO_REDUCED > DEBUG_INFO build and compile times are reduced too. > Only works with newer gcc versions. > > +config DEBUG_INFO_COMPRESSED > + bool "Compressed debugging information" > + depends on DEBUG_INFO > + depends on $(cc-option,-gz=zlib) > + depends on $(as-option,-Wa,--compress-debug-sections=zlib) > + depends on $(ld-option,--compress-debug-sections=zlib) > + help > + Compress the debug information using zlib. Requires GCC 5.0+ or Clang > + 5.0+, binutils 2.26+, and zlib. > + > + Users of dpkg-deb via scripts/package/builddeb may > + wish to set the $KDEB_COMPRESS env var to "none" to avoid recompressing > + the debug info again with a different compression scheme, which can > + result in larger binaries. > + > config DEBUG_INFO_SPLIT > bool "Produce split debuginfo in .dwo files" > depends on DEBUG_INFO > -- > 2.26.2.761.g0e0b3e54be-goog > -- Thanks, ~Nick Desaulniers