Linux-parisc archive on lore.kernel.org
 help / color / Atom feed
* [PATCH] parisc: strip debug information when building compressed images
@ 2019-07-31 17:19 Sven Schnelle
  2019-07-31 19:28 ` Helge Deller
  0 siblings, 1 reply; 9+ messages in thread
From: Sven Schnelle @ 2019-07-31 17:19 UTC (permalink / raw)
  To: deller; +Cc: linux-parisc, Sven Schnelle

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.

Signed-off-by: Sven Schnelle <svens@stackframe.org>
---
 arch/parisc/boot/compressed/Makefile | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/arch/parisc/boot/compressed/Makefile b/arch/parisc/boot/compressed/Makefile
index 2da8624e5cf6..2a81997b1079 100644
--- a/arch/parisc/boot/compressed/Makefile
+++ b/arch/parisc/boot/compressed/Makefile
@@ -55,8 +55,11 @@ $(obj)/misc.o: $(obj)/sizes.h
 CPPFLAGS_vmlinux.lds += -I$(objtree)/$(obj) -DBOOTLOADER
 $(obj)/vmlinux.lds: $(obj)/sizes.h
 
+quiet_cmd_objcopy_strip_debug = OBJCOPY_STRIP_DEBUG $@
+      cmd_objcopy_strip_debug = $(OBJCOPY) --strip-debug $< $@
+
 $(obj)/vmlinux.bin: vmlinux
-	$(call if_changed,objcopy)
+	$(call if_changed,objcopy_strip_debug)
 
 vmlinux.bin.all-y := $(obj)/vmlinux.bin
 
-- 
2.20.1


^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH] parisc: strip debug information when building compressed images
  2019-07-31 17:19 [PATCH] parisc: strip debug information when building compressed images Sven Schnelle
@ 2019-07-31 19:28 ` Helge Deller
  2019-07-31 19:36   ` Helge Deller
  2019-07-31 19:37   ` James Bottomley
  0 siblings, 2 replies; 9+ messages in thread
From: Helge Deller @ 2019-07-31 19:28 UTC (permalink / raw)
  To: Sven Schnelle; +Cc: linux-parisc

* Sven Schnelle <svens@stackframe.org>:
> 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@gmx.de>

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

 	/* align on next page boundary */
 	. = ALIGN(4096);

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH] parisc: strip debug information when building compressed images
  2019-07-31 19:28 ` Helge Deller
@ 2019-07-31 19:36   ` Helge Deller
  2019-07-31 19:55     ` Sven Schnelle
  2019-07-31 19:37   ` James Bottomley
  1 sibling, 1 reply; 9+ messages in thread
From: Helge Deller @ 2019-07-31 19:36 UTC (permalink / raw)
  To: Sven Schnelle; +Cc: linux-parisc

* Helge Deller <deller@gmx.de>:
> * Sven Schnelle <svens@stackframe.org>:
> > 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...

Here is an updated patch without ifdefs:
Helge

diff --git a/arch/parisc/boot/compressed/vmlinux.lds.S b/arch/parisc/boot/compressed/vmlinux.lds.S
index bfd7872739a3..2ac3a643f2eb 100644
--- a/arch/parisc/boot/compressed/vmlinux.lds.S
+++ b/arch/parisc/boot/compressed/vmlinux.lds.S
@@ -48,8 +48,8 @@ SECTIONS
 		*(.rodata.compressed)
 	}

-	/* bootloader code and data starts behind area of extracted kernel */
-	. = (SZ_end - SZparisc_kernel_start + KERNEL_BINARY_TEXT_START);
+	/* bootloader code and data starts at least behind area of extracted kernel */
+	. = MAX(ABSOLUTE(.), (SZ_end - SZparisc_kernel_start + KERNEL_BINARY_TEXT_START));

 	/* align on next page boundary */
 	. = ALIGN(4096);

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH] parisc: strip debug information when building compressed images
  2019-07-31 19:28 ` Helge Deller
  2019-07-31 19:36   ` Helge Deller
@ 2019-07-31 19:37   ` James Bottomley
  2019-07-31 19:40     ` Helge Deller
  1 sibling, 1 reply; 9+ messages in thread
From: James Bottomley @ 2019-07-31 19:37 UTC (permalink / raw)
  To: Helge Deller, Sven Schnelle; +Cc: linux-parisc

On Wed, 2019-07-31 at 21:28 +0200, Helge Deller wrote:
> * Sven Schnelle <svens@stackframe.org>:
> > 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@gmx.de>
> 
> 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 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.

James


^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH] parisc: strip debug information when building compressed images
  2019-07-31 19:37   ` James Bottomley
@ 2019-07-31 19:40     ` Helge Deller
  2019-07-31 19:45       ` James Bottomley
  0 siblings, 1 reply; 9+ messages in thread
From: Helge Deller @ 2019-07-31 19:40 UTC (permalink / raw)
  To: James Bottomley, Sven Schnelle; +Cc: linux-parisc

On 31.07.19 21:37, James Bottomley wrote:
> On Wed, 2019-07-31 at 21:28 +0200, Helge Deller wrote:
>> * Sven Schnelle <svens@stackframe.org>:
>>> 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@gmx.de>
>>
>> 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.
But the second patch I just sent is better anyway.

Helge

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH] parisc: strip debug information when building compressed images
  2019-07-31 19:40     ` Helge Deller
@ 2019-07-31 19:45       ` James Bottomley
  0 siblings, 0 replies; 9+ messages in thread
From: James Bottomley @ 2019-07-31 19:45 UTC (permalink / raw)
  To: Helge Deller, Sven Schnelle; +Cc: linux-parisc

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@stackframe.org>:
> > > > 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@gmx.de>
> > > 
> > > 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
> 


^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH] parisc: strip debug information when building compressed images
  2019-07-31 19:36   ` Helge Deller
@ 2019-07-31 19:55     ` Sven Schnelle
  2019-07-31 20:07       ` Helge Deller
  0 siblings, 1 reply; 9+ messages in thread
From: Sven Schnelle @ 2019-07-31 19:55 UTC (permalink / raw)
  To: Helge Deller; +Cc: linux-parisc

Hi Helge,

On Wed, Jul 31, 2019 at 09:36:01PM +0200, Helge Deller wrote:
> * Helge Deller <deller@gmx.de>:
> > * Sven Schnelle <svens@stackframe.org>:
> > > 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...
> 
> Here is an updated patch without ifdefs:
> Helge
> 
> diff --git a/arch/parisc/boot/compressed/vmlinux.lds.S b/arch/parisc/boot/compressed/vmlinux.lds.S
> index bfd7872739a3..2ac3a643f2eb 100644
> --- a/arch/parisc/boot/compressed/vmlinux.lds.S
> +++ b/arch/parisc/boot/compressed/vmlinux.lds.S
> @@ -48,8 +48,8 @@ SECTIONS
>  		*(.rodata.compressed)
>  	}
> 
> -	/* bootloader code and data starts behind area of extracted kernel */
> -	. = (SZ_end - SZparisc_kernel_start + KERNEL_BINARY_TEXT_START);
> +	/* bootloader code and data starts at least behind area of extracted kernel */
> +	. = MAX(ABSOLUTE(.), (SZ_end - SZparisc_kernel_start + KERNEL_BINARY_TEXT_START));
> 
>  	/* align on next page boundary */
>  	. = ALIGN(4096);

With full debug and a 64 Bit Build i get now (vmlinux is 128M):

  LD      vmlinux
  SORTEX  vmlinux
  SYSMAP  System.map
/sbin/palo -f ./palo.conf
palo version 2.00 http://www.parisc-linux.org - Mon, 01 Jan 2018 21:07:58 +0100
uncompressing Linux kernel................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................
Decompression error: 
uncompressed image too long - wouldn't fit into destination
vmlinuz is not a recognizable executable (ELF32 or ELF64)
make[1]: *** [arch/parisc/Makefile:130: lifimage] Error 2
make[1]: Leaving directory '/home/svens/parisc-linux/build64'
make: *** [Makefile:179: sub-make] Error 2


^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH] parisc: strip debug information when building compressed images
  2019-07-31 19:55     ` Sven Schnelle
@ 2019-07-31 20:07       ` Helge Deller
  2019-07-31 20:19         ` Sven Schnelle
  0 siblings, 1 reply; 9+ messages in thread
From: Helge Deller @ 2019-07-31 20:07 UTC (permalink / raw)
  To: Sven Schnelle; +Cc: linux-parisc

On 31.07.19 21:55, Sven Schnelle wrote:
> Hi Helge,
> 
> On Wed, Jul 31, 2019 at 09:36:01PM +0200, Helge Deller wrote:
>> * Helge Deller <deller@gmx.de>:
>>> * Sven Schnelle <svens@stackframe.org>:
>>>> 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...
>>
>> Here is an updated patch without ifdefs:
>> Helge
>>
>> diff --git a/arch/parisc/boot/compressed/vmlinux.lds.S b/arch/parisc/boot/compressed/vmlinux.lds.S
>> index bfd7872739a3..2ac3a643f2eb 100644
>> --- a/arch/parisc/boot/compressed/vmlinux.lds.S
>> +++ b/arch/parisc/boot/compressed/vmlinux.lds.S
>> @@ -48,8 +48,8 @@ SECTIONS
>>   		*(.rodata.compressed)
>>   	}
>>
>> -	/* bootloader code and data starts behind area of extracted kernel */
>> -	. = (SZ_end - SZparisc_kernel_start + KERNEL_BINARY_TEXT_START);
>> +	/* bootloader code and data starts at least behind area of extracted kernel */
>> +	. = MAX(ABSOLUTE(.), (SZ_end - SZparisc_kernel_start + KERNEL_BINARY_TEXT_START));
>>
>>   	/* align on next page boundary */
>>   	. = ALIGN(4096);
> 
> With full debug and a 64 Bit Build i get now (vmlinux is 128M):
> 
>    LD      vmlinux
>    SORTEX  vmlinux
>    SYSMAP  System.map
> /sbin/palo -f ./palo.conf
> palo version 2.00 http://www.parisc-linux.org - Mon, 01 Jan 2018 21:07:58 +0100
> uncompressing Linux kernel................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................
> Decompression error:
> uncompressed image too long - wouldn't fit into destination

You are using the built-in palo gzip decompression function.
Please don't use it, it is an old (not bug-free) implementation which got replaced
by the kernel self-decompressor.
My palo.conf in the build dir has:
--init-tape=lifimage
--recoverykernel=vmlinuz

and set
CONFIG_PARISC_SELF_EXTRACT=y
in .config.

Helge

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH] parisc: strip debug information when building compressed images
  2019-07-31 20:07       ` Helge Deller
@ 2019-07-31 20:19         ` Sven Schnelle
  0 siblings, 0 replies; 9+ messages in thread
From: Sven Schnelle @ 2019-07-31 20:19 UTC (permalink / raw)
  To: Helge Deller; +Cc: linux-parisc

Hi Helge,

On Wed, Jul 31, 2019 at 10:07:57PM +0200, Helge Deller wrote:
> On 31.07.19 21:55, Sven Schnelle wrote:
> > uncompressed image too long - wouldn't fit into destination
> 
> You are using the built-in palo gzip decompression function.
> Please don't use it, it is an old (not bug-free) implementation which got replaced
> by the kernel self-decompressor.
> My palo.conf in the build dir has:
> --init-tape=lifimage
> --recoverykernel=vmlinuz
> 
> and set
> CONFIG_PARISC_SELF_EXTRACT=y
> in .config.

Thanks. I had the palo option (probably because they are default), but missed the
Kernel option. The lifimage is now 28MB in size, and your patch works for me.

Thanks!
Sven

^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, back to index

Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-07-31 17:19 [PATCH] parisc: strip debug information when building compressed images Sven Schnelle
2019-07-31 19:28 ` Helge Deller
2019-07-31 19:36   ` Helge Deller
2019-07-31 19:55     ` Sven Schnelle
2019-07-31 20:07       ` Helge Deller
2019-07-31 20:19         ` Sven Schnelle
2019-07-31 19:37   ` James Bottomley
2019-07-31 19:40     ` Helge Deller
2019-07-31 19:45       ` James Bottomley

Linux-parisc archive on lore.kernel.org

Archives are clonable:
	git clone --mirror https://lore.kernel.org/linux-parisc/0 linux-parisc/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 linux-parisc linux-parisc/ https://lore.kernel.org/linux-parisc \
		linux-parisc@vger.kernel.org linux-parisc@archiver.kernel.org
	public-inbox-index linux-parisc


Newsgroup available over NNTP:
	nntp://nntp.lore.kernel.org/org.kernel.vger.linux-parisc


AGPL code for this site: git clone https://public-inbox.org/ public-inbox