From: Nick Desaulniers <nick.desaulniers@gmail.com>
To: Masahiro Yamada <masahiroy@kernel.org>
Cc: Nick Desaulniers <nick.desaulniers@gmail.com>,
Michal Marek <michal.lkml@markovi.net>,
Andrew Morton <akpm@linux-foundation.org>,
Changbin Du <changbin.du@intel.com>,
Randy Dunlap <rdunlap@infradead.org>,
Krzysztof Kozlowski <krzk@kernel.org>,
linux-kbuild@vger.kernel.org, linux-kernel@vger.kernel.org,
clang-built-linux@googlegroups.com
Subject: [PATCH] Makefile: support compressed debug info
Date: Sun, 3 May 2020 20:13:39 -0700 [thread overview]
Message-ID: <20200504031340.7103-1-nick.desaulniers@gmail.com> (raw)
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 <object file>
$ 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
Suggested-by: David Blaikie <blakie@google.com>
Signed-off-by: Nick Desaulniers <nick.desaulniers@gmail.com>
---
Makefile | 5 +++++
lib/Kconfig.debug | 9 +++++++++
2 files changed, 14 insertions(+)
diff --git a/Makefile b/Makefile
index 981eb902384b..313a054e5dc6 100644
--- a/Makefile
+++ b/Makefile
@@ -825,6 +825,11 @@ ifdef CONFIG_DEBUG_INFO_REDUCED
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_LDFLAGS += --compress-debug-sections=zlib
+endif
endif
KBUILD_CFLAGS += $(DEBUG_CFLAGS)
diff --git a/lib/Kconfig.debug b/lib/Kconfig.debug
index f6f9a039f736..1f4a47ba6c1b 100644
--- a/lib/Kconfig.debug
+++ b/lib/Kconfig.debug
@@ -213,6 +213,15 @@ 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 $(ld-option,--compress-debug-sections=zlib)
+ help
+ Compress the debug information using zlib. Requires GCC 5.0+ or Clang
+ 5.0+.
+
config DEBUG_INFO_SPLIT
bool "Produce split debuginfo in .dwo files"
depends on DEBUG_INFO
--
2.17.1
next reply other threads:[~2020-05-04 3:13 UTC|newest]
Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-05-04 3:13 Nick Desaulniers [this message]
2020-05-04 16:25 ` [PATCH] Makefile: support compressed debug info Sedat Dilek
2020-05-05 0:47 ` Fangrui Song
2020-05-12 5:53 ` Masahiro Yamada
2020-05-12 19:23 ` Nick Desaulniers
2020-05-12 20:01 ` Fangrui Song
2020-05-12 20:06 ` Sedat Dilek
2020-05-13 19:00 ` Nick Desaulniers
2020-05-14 11:34 ` Nick Clifton
2020-05-20 19:36 ` [PATCH v2] " Nick Desaulniers
2020-05-20 23:21 ` Nick Desaulniers
2020-05-20 23:22 ` Andrew Morton
2020-05-21 2:47 ` Masahiro Yamada
2020-05-21 21:57 ` Nick Desaulniers
2020-05-21 22:00 ` [PATCH v3] " Nick Desaulniers
2020-05-22 11:56 ` Sedat Dilek
2020-05-26 10:26 ` Masahiro Yamada
2020-05-26 15:53 ` Nick Desaulniers
2020-05-26 16:15 ` Masahiro Yamada
2020-05-26 17:03 ` [PATCH v4] " Nick Desaulniers
2020-05-26 17:06 ` Nick Desaulniers
2020-05-26 17:18 ` [PATCH v5] " Nick Desaulniers
2020-05-24 3:56 ` [PATCH v2] " Masahiro Yamada
2020-05-24 7:48 ` Sedat Dilek
2020-05-26 15:58 ` Nick Desaulniers
2020-05-12 20:02 ` [PATCH] " Sedat Dilek
2020-05-13 2:51 ` Masahiro Yamada
2020-05-13 16:33 ` Sedat Dilek
2020-05-12 5:46 ` Masahiro Yamada
2020-05-12 8:59 ` Sedat Dilek
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20200504031340.7103-1-nick.desaulniers@gmail.com \
--to=nick.desaulniers@gmail.com \
--cc=akpm@linux-foundation.org \
--cc=changbin.du@intel.com \
--cc=clang-built-linux@googlegroups.com \
--cc=krzk@kernel.org \
--cc=linux-kbuild@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=masahiroy@kernel.org \
--cc=michal.lkml@markovi.net \
--cc=rdunlap@infradead.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).