Re: [PATCH] parisc: strip debug information when building compressed images

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wed, 2019-07-31 at 21:40 +0200, Helge Deller wrote:
> On 31.07.19 21:37, James Bottomley wrote:
> > On Wed, 2019-07-31 at 21:28 +0200, Helge Deller wrote:
> > > * Sven Schnelle <svens@xxxxxxxxxxxxxx>:
> > > > When compiling the kernel with debug information i got the
> > > > following error:
> > > > 
> > > > hppa-linux-gnu-ld: section .text LMA
> > > > [0000000000e78000,0000000000e7b41f] overlaps section
> > > > .rodata.compressed LMA [00000000000e0078,00000000015ad43d]
> > > > make[3]: *** [/home/svens/parisc-
> > > > linux/src/arch/parisc/boot/compressed/Makefile:28:
> > > > arch/parisc/boot/compressed/vmlinux] Error 1
> > > > make[2]: *** [/home/svens/parisc-
> > > > linux/src/arch/parisc/boot/Makefile:17:
> > > > arch/parisc/boot/compressed/vmlinux] Error 2
> > > > make[2]: Target 'arch/parisc/boot/bzImage' not remade because
> > > > of
> > > > errors.
> > > > 
> > > > While this might also be fixed by adjusting the linker script,
> > > > i
> > > > think we
> > > > should strip the debug information when generating the
> > > > compressed
> > > > image. This
> > > > reduces the size of vmlinuz/lifimage from ~69MB to 6.6MB when
> > > > full
> > > > debug
> > > > information is enabled.
> > > 
> > > I think keeping debug info is good.
> > > Can you test this patch instead?
> > > It converts a 141MB vmlinux boot file (with debug info) to a 32M
> > > vmlinuz for me.
> > > 
> > > Ideally I would prefer something like
> > >    . = MIN_OR_HIGHER_THAN_CURRENT_ADDR((SZ_end -
> > > SZparisc_kernel_start
> > > + KERNEL_BINARY_TEXT_START));
> > > to avoid the ifdef, but I'm missing the linker script expert
> > > knowledge...
> > > 
> > > Helge
> > > 
> > > ------------------------
> > > [PATCH] parisc: Allow building a compressed vmlinuz with
> > > CONFIG_DEBUG_INFO enabled.
> > > 
> > > Signed-off-by: Helge Deller <deller@xxxxxx>
> > > 
> > > diff --git a/arch/parisc/boot/compressed/vmlinux.lds.S
> > > b/arch/parisc/boot/compressed/vmlinux.lds.S
> > > index bfd7872739a3..dac000ec3861 100644
> > > --- a/arch/parisc/boot/compressed/vmlinux.lds.S
> > > +++ b/arch/parisc/boot/compressed/vmlinux.lds.S
> > > @@ -49,7 +49,10 @@ SECTIONS
> > >   	}
> > > 
> > >   	/* bootloader code and data starts behind area of
> > > extracted
> > > kernel */
> > > +#if !defined(CONFIG_DEBUG_INFO)
> > > +	/* ensure at least max address when compiled without
> > > debug
> > > info: */
> > >   	. = (SZ_end - SZparisc_kernel_start +
> > > KERNEL_BINARY_TEXT_START);
> > > +#endif
> > 
> > This would cause the kernel to be built in a single section
> 
> Yes.
> 
> > for the !defined(CONFIG_DEBUG_INFO) case, meaning we'd always blow
> > through the 0x00100000-end text hole we need to leave for the
> > compressed kernel to decompress into.
> 
> The debug info occupied the memory (and more) in the 0x00100000-end
> text area, so we have the room to decompress to.

Only if the end of text in the compressed section occurs before
0x00100000.  That was the bug that caused my decompression to fail. 
Even for a moderately configured kernel, the compressed text size is
often bigger than the 128kb we have available between 0x000e0000 and
0x00100000.

James

> But the second patch I just sent is better anyway.
> 
> Helge
> 




[Index of Archives]     [Linux SoC]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux