Messages in this thread | | | From | Pingfan Liu <> | Date | Mon, 3 Aug 2020 12:13:11 +0800 | Subject | Re: [PATCH] x86/purgatory: strip debug info |
| |
On Sat, Aug 1, 2020 at 2:18 AM Nick Desaulniers <ndesaulniers@google.com> wrote: > > On Fri, Jul 31, 2020 at 2:36 AM Pingfan Liu <kernelfans@gmail.com> wrote: > > > > On Fri, Jul 31, 2020 at 7:11 AM Nick Desaulniers > > <ndesaulniers@google.com> wrote: > > > > > > On Thu, Jul 30, 2020 at 1:27 AM Pingfan Liu <kernelfans@gmail.com> wrote: > > > > > > > > It is useless to keep debug info in purgatory. And discarding them saves > > > > about 200K space. > > > > > > > > Original: > > > > 259080 kexec-purgatory.o > > > > Stripped: > > > > 29152 kexec-purgatory.o > > > > > > > > Signed-off-by: Pingfan Liu <kernelfans@gmail.com> > > > > Cc: Thomas Gleixner <tglx@linutronix.de> > > > > Cc: Ingo Molnar <mingo@redhat.com> > > > > Cc: Borislav Petkov <bp@alien8.de> > > > > Cc: "H. Peter Anvin" <hpa@zytor.com> > > > > Cc: Hans de Goede <hdegoede@redhat.com> > > > > Cc: Nick Desaulniers <ndesaulniers@google.com> > > > > Cc: Arvind Sankar <nivedita@alum.mit.edu> > > > > Cc: Steve Wahl <steve.wahl@hpe.com> > > > > Cc: linux-kernel@vger.kernel.org > > > > To: x86@kernel.org > > > > > > I don't see any code in > > > arch/x86/purgatory/ > > > arch/x86/include/asm/purgatory.h > > > include/linux/purgatory.h > > > include/uapi/linux/kexec.h > > > kernel/kexec* > > > include/linux/kexec.h > > > include/linux/crash_dump.h > > > kernel/crash_dump.c > > > arch/x86/kernel/crash* > > > https://github.com/horms/kexec-tools/tree/master/kexec/arch/x86_64 > > > that mentions any kind of debug info section. I'm not sure what you'd > > > do with the debug info anyway for this binary. So I suspect this > > > information should ok to discard. > > > > > > This works, but it might be faster to build to not generate the > > > compile info in the first place via compile flag `-g0`, which could be > > > added `ifdef CONFIG_DEBUG_INFO` or even just unconditionally. That > > > way we're not doing additional work to generate debug info, then > > > additional work to throw it away. > > What about: > > diff --git a/arch/x86/purgatory/Makefile b/arch/x86/purgatory/Makefile > > index 088bd76..7e1ad9e 100644 > > --- a/arch/x86/purgatory/Makefile > > +++ b/arch/x86/purgatory/Makefile > > @@ -32,7 +32,7 @@ KCOV_INSTRUMENT := n > > # make up the standalone purgatory.ro > > > > PURGATORY_CFLAGS_REMOVE := -mcmodel=kernel > > -PURGATORY_CFLAGS := -mcmodel=large -ffreestanding -fno-zero-initialized-in-bss > > +PURGATORY_CFLAGS := -mcmodel=large -ffreestanding > > -fno-zero-initialized-in-bss -g0 > > PURGATORY_CFLAGS += $(DISABLE_STACKLEAK_PLUGIN) -DDISABLE_BRANCH_PROFILING > > PURGATORY_CFLAGS += $(call cc-option,-fno-stack-protector) > > I tested your patch but still see .debug_* sections in the .ro from a few .o. > > At least on > * setup-x86_64.o > * entry64.o > > If you add the following hunk to your diff: > ``` > @@ -64,6 +64,9 @@ CFLAGS_sha256.o += $(PURGATORY_CFLAGS) > CFLAGS_REMOVE_string.o += $(PURGATORY_CFLAGS_REMOVE) > CFLAGS_string.o += $(PURGATORY_CFLAGS) > > +AFLAGS_REMOVE_setup-x86_$(BITS).o += -Wa,-gdwarf-2 > +AFLAGS_REMOVE_entry64.o += -Wa,-gdwarf-2 > + Go through man as and gcc, and can not find a simpler method than your suggestion. > $(obj)/purgatory.ro: $(PURGATORY_OBJS) FORCE > $(call if_changed,ld) > ``` > then that should do it. Then you can verify the .ro file via: > $ llvm-readelf -S arch/x86/purgatory/purgatory.ro | not grep debug_ > (no output, should return zero) Thank you for your good suggestion and I will update V2
Regards, Pingfan
| |