All of lore.kernel.org
 help / color / mirror / Atom feed
From: Nicolas Pitre <nicolas.pitre@linaro.org>
To: Arnd Bergmann <arnd@arndb.de>
Cc: Nicholas Piggin <npiggin@gmail.com>,
	linux-kbuild@vger.kernel.org, linux-arch@vger.kernel.org,
	Michal Marek <mmarek@suse.com>, Sam Ravnborg <sam@ravnborg.org>,
	Stephen Rothwell <sfr@canb.auug.org.au>,
	Segher Boessenkool <segher@kernel.crashing.org>,
	Alan Modra <amodra@gmail.com>
Subject: Re: [EXPERIMENTAL] enable thin archives and --gc-sections on ARM
Date: Thu, 11 Aug 2016 16:01:33 -0400 (EDT)	[thread overview]
Message-ID: <alpine.LFD.2.20.1608111536290.17623@knanqh.ubzr> (raw)
In-Reply-To: <3116731.ej669o70yG@wuerfel>

On Thu, 11 Aug 2016, Arnd Bergmann wrote:

> This goes on top of Nick's latest version of "[PATCH 0/6 v2] kbuild changes,
> thin archives, --gc-sections" and enables both features on ARM.
> 
[...]
> 
> - I mark a ton of sections as KEEP() in vmlinux.lds.S. Some of
>   them might not actually be needed, and I have not spent much
>   time checking what they actually are. However, I did build
>   a few hundred randconfigs without new issues.
> 
> index 7396a5f00c5f..61b9b8784036 100644
> --- a/arch/arm/kernel/vmlinux.lds.S
> +++ b/arch/arm/kernel/vmlinux.lds.S
> @@ -17,7 +17,7 @@
>  #define PROC_INFO							\
>  	. = ALIGN(4);							\
>  	VMLINUX_SYMBOL(__proc_info_begin) = .;				\
> -	*(.proc.info.init)						\
> +	KEEP(*(.proc.info.init))					\

OK.

>  	VMLINUX_SYMBOL(__proc_info_end) = .;
>  
>  #define HYPERVISOR_TEXT							\
> @@ -104,7 +104,7 @@ SECTIONS
>  		_stext = .;		/* Text and read-only data	*/
>  			IDMAP_TEXT
>  			__exception_text_start = .;
> -			*(.exception.text)
> +			KEEP(*(.exception.text))

No need here. The code there has to be referenced from somewhere. If not 
it should not be kept.

>  			__exception_text_end = .;
>  			IRQENTRY_TEXT
>  			SOFTIRQENTRY_TEXT
> @@ -169,14 +169,14 @@ SECTIONS
>  	 */
>  	__vectors_start = .;
>  	.vectors 0xffff0000 : AT(__vectors_start) {
> -		*(.vectors)
> +		KEEP(*(.vectors))

OK.

>  	}
>  	. = __vectors_start + SIZEOF(.vectors);
>  	__vectors_end = .;
>  
>  	__stubs_start = .;
>  	.stubs ADDR(.vectors) + 0x1000 : AT(__stubs_start) {
> -		*(.stubs)
> +		KEEP(*(.stubs))

This is referenced from .vectors entries and therefore the KEEP() is not 
needed.  There is nothing to be saved either ways though.

>  	}
>  	. = __stubs_start + SIZEOF(.stubs);
>  	__stubs_end = .;
> @@ -192,24 +192,24 @@ SECTIONS
>  	}
>  	.init.arch.info : {
>  		__arch_info_begin = .;
> -		*(.arch.info.init)
> +		KEEP(*(.arch.info.init))

OK.

>  		__arch_info_end = .;
>  	}
>  	.init.tagtable : {
>  		__tagtable_begin = .;
> -		*(.taglist.init)
> +		KEEP(*(.taglist.init))

OK.

>  		__tagtable_end = .;
>  	}
>  #ifdef CONFIG_SMP_ON_UP
>  	.init.smpalt : {
>  		__smpalt_begin = .;
> -		*(.alt.smp.init)
> +		KEEP(*(.alt.smp.init))

Yes unfortunately this needs a KEEP() right now as there is no explicit 
references to those entries. But by doing so you force a reference from 
those entries to all functions they annotate, preventing those functions 
from being discarded if there isn't any reference to that code 
otherwise. That's a case that falls into the "missing forward reference" 
category in my slides.

>  		__smpalt_end = .;
>  	}
>  #endif
>  	.init.pv_table : {
>  		__pv_table_begin = .;
> -		*(.pv_table)
> +		KEEP(*(.pv_table))

Ditto here.


Nicolas

  reply	other threads:[~2016-08-11 20:02 UTC|newest]

Thread overview: 28+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-08-11 10:16 [PATCH 0/6 v2] kbuild changes, thin archives, --gc-sections Nicholas Piggin
2016-08-11 10:16 ` [PATCH 1/6] kbuild: allow architectures to use thin archives instead of ld -r Nicholas Piggin
2016-08-11 10:16 ` [PATCH 2/6] kbuild: allow archs to select link dead code/data elimination Nicholas Piggin
2016-08-11 10:16 ` [PATCH 3/6] kbuild: add arch specific post-link pass Nicholas Piggin
2016-08-16  9:23   ` Michal Marek
2016-08-17  4:43     ` Nicholas Piggin
2016-08-17  9:05       ` Michal Marek
2016-08-17  9:56       ` Sam Ravnborg
2016-08-18  0:17         ` Nicholas Piggin
2016-08-11 10:16 ` [PATCH 4/6] powerpc: switch to using thin archives Nicholas Piggin
2016-08-11 10:16 ` [PATCH 5/6] powerpc/64: use linker dead code elimination Nicholas Piggin
2016-08-11 10:16 ` [PATCH 6/6] powerpc: use the new post-link pass to check relocations Nicholas Piggin
2016-08-11 12:31 ` [PATCH 0/6 v2] kbuild changes, thin archives, --gc-sections Stephen Rothwell
2016-08-11 12:39 ` [PATCH] Xen: remove -fshort-wchar gcc flag Arnd Bergmann
2016-08-11 12:51   ` Jan Beulich
2016-08-11 12:51   ` [Xen-devel] " Jan Beulich
2016-08-11 14:01     ` Arnd Bergmann
2016-08-11 14:06       ` Jan Beulich
2016-08-11 14:06       ` Jan Beulich
2016-08-11 14:01     ` Arnd Bergmann
2016-08-24 17:18   ` [Xen-devel] " David Vrabel
2016-08-24 17:18   ` David Vrabel
2016-08-11 12:39 ` Arnd Bergmann
2016-08-11 13:55 ` [EXPERIMENTAL] enable thin archives and --gc-sections on ARM Arnd Bergmann
2016-08-11 20:01   ` Nicolas Pitre [this message]
2016-08-11 20:37     ` Arnd Bergmann
2016-08-11 21:05       ` Nicolas Pitre
2016-08-23  6:17 ` [PATCH 0/6 v2] kbuild changes, thin archives, --gc-sections Nicholas Piggin

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=alpine.LFD.2.20.1608111536290.17623@knanqh.ubzr \
    --to=nicolas.pitre@linaro.org \
    --cc=amodra@gmail.com \
    --cc=arnd@arndb.de \
    --cc=linux-arch@vger.kernel.org \
    --cc=linux-kbuild@vger.kernel.org \
    --cc=mmarek@suse.com \
    --cc=npiggin@gmail.com \
    --cc=sam@ravnborg.org \
    --cc=segher@kernel.crashing.org \
    --cc=sfr@canb.auug.org.au \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.