All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v2 0/3] powerpc: Add to linker script discards
@ 2018-12-04  0:54 Joel Stanley
  2018-12-04  0:54 ` [PATCH v2 1/3] powerpc: Discard more sections in linker script Joel Stanley
                   ` (2 more replies)
  0 siblings, 3 replies; 6+ messages in thread
From: Joel Stanley @ 2018-12-04  0:54 UTC (permalink / raw)
  To: linuxppc-dev; +Cc: Stephen Rothwell, Alan Modra

v2 pulls in the branch_lt patch too. No changes to the first two
patches.

Joel Stanley (3):
  powerpc: Discard more sections in linker script
  powerpc: Discard dynsym section for !PPC32
  powerpc: Discard .branch_lt section

 arch/powerpc/kernel/vmlinux.lds.S | 15 +++++++++------
 1 file changed, 9 insertions(+), 6 deletions(-)

-- 
2.19.1


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

* [PATCH v2 1/3] powerpc: Discard more sections in linker script
  2018-12-04  0:54 [PATCH v2 0/3] powerpc: Add to linker script discards Joel Stanley
@ 2018-12-04  0:54 ` Joel Stanley
  2018-12-04  0:54 ` [PATCH v2 2/3] powerpc: Discard dynsym section for !PPC32 Joel Stanley
  2018-12-04  0:54 ` [PATCH v2 3/3] powerpc: Discard .branch_lt section Joel Stanley
  2 siblings, 0 replies; 6+ messages in thread
From: Joel Stanley @ 2018-12-04  0:54 UTC (permalink / raw)
  To: linuxppc-dev; +Cc: Stephen Rothwell, Alan Modra

Building the ppc64 kernel with a modern binutils results in this
warning:

 powerpc64le-linux-gnu-ld: warning: orphan section `.gnu.hash' from
 `linker stubs' being placed in section `.gnu.hash'

Alan Modra <amodra@gmail.com> explains:

 > .gnu.hash, like .hash, is used by glibc ld.so for dynamic symbol
 > lookup.  I imagine you don't need either section in a kernel, so
 > discarding both sounds reasonable.  Likely you could discard .interp
 > and .dynstr too, and .dynsym when !CONFIG_PPC32.

Reported-by: Stephen Rothwell <sfr@canb.auug.org.au>
Signed-off-by: Joel Stanley <joel@jms.id.au>
---
See https://lore.kernel.org/lkml/CACPK8Xft3n5KkpTjN3=7_VUCXHFcK7mxvZm2Rrqu7tppcBoyOg@mail.gmail.com/T/#m58532c86cf0c7b4fb01cc1fe724e48d4c7d8e4a7
---
 arch/powerpc/kernel/vmlinux.lds.S | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/arch/powerpc/kernel/vmlinux.lds.S b/arch/powerpc/kernel/vmlinux.lds.S
index 434581bcd5b4..6570209b0671 100644
--- a/arch/powerpc/kernel/vmlinux.lds.S
+++ b/arch/powerpc/kernel/vmlinux.lds.S
@@ -279,8 +279,6 @@ SECTIONS
 		__dynamic_start = .;
 		*(.dynamic)
 	}
-	.hash : AT(ADDR(.hash) - LOAD_OFFSET) { *(.hash) }
-	.interp : AT(ADDR(.interp) - LOAD_OFFSET) { *(.interp) }
 	.rela.dyn : AT(ADDR(.rela.dyn) - LOAD_OFFSET)
 	{
 		__rela_dyn_start = .;
@@ -388,5 +386,8 @@ SECTIONS
 		*(.gnu.version*)
 		*(.gnu.attributes)
 		*(.eh_frame)
+		*(.hash .gnu.hash)
+		*(.interp)
+		*(.dynstr)
 	}
 }
-- 
2.19.1


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

* [PATCH v2 2/3] powerpc: Discard dynsym section for !PPC32
  2018-12-04  0:54 [PATCH v2 0/3] powerpc: Add to linker script discards Joel Stanley
  2018-12-04  0:54 ` [PATCH v2 1/3] powerpc: Discard more sections in linker script Joel Stanley
@ 2018-12-04  0:54 ` Joel Stanley
  2018-12-04 17:40   ` Segher Boessenkool
  2018-12-04  0:54 ` [PATCH v2 3/3] powerpc: Discard .branch_lt section Joel Stanley
  2 siblings, 1 reply; 6+ messages in thread
From: Joel Stanley @ 2018-12-04  0:54 UTC (permalink / raw)
  To: linuxppc-dev; +Cc: Stephen Rothwell, Alan Modra

Alan Modra <amodra@gmail.com> explains:

 > Likely you could discard .interp > and .dynstr too, and .dynsym when
 > !CONFIG_PPC32.

Discarding of interp and dynstr happened in a previous patch. The dynsym
cleanup was a bit less straightforward, so it gets it's own patch.

Signed-off-by: Joel Stanley <joel@jms.id.au>
---
See https://lore.kernel.org/lkml/CACPK8Xft3n5KkpTjN3=7_VUCXHFcK7mxvZm2Rrqu7tppcBoyOg@mail.gmail.com/T/#m58532c86cf0c7b4fb01cc1fe724e48d4c7d8e4a7
---
 arch/powerpc/kernel/vmlinux.lds.S | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)

diff --git a/arch/powerpc/kernel/vmlinux.lds.S b/arch/powerpc/kernel/vmlinux.lds.S
index 6570209b0671..2c93a420f456 100644
--- a/arch/powerpc/kernel/vmlinux.lds.S
+++ b/arch/powerpc/kernel/vmlinux.lds.S
@@ -266,14 +266,13 @@ SECTIONS
 	}
 #ifdef CONFIG_RELOCATABLE
 	. = ALIGN(8);
+#ifdef CONFIG_PPC32
 	.dynsym : AT(ADDR(.dynsym) - LOAD_OFFSET)
 	{
-#ifdef CONFIG_PPC32
 		__dynamic_symtab = .;
-#endif
 		*(.dynsym)
 	}
-	.dynstr : AT(ADDR(.dynstr) - LOAD_OFFSET) { *(.dynstr) }
+#endif
 	.dynamic : AT(ADDR(.dynamic) - LOAD_OFFSET)
 	{
 		__dynamic_start = .;
@@ -389,5 +388,8 @@ SECTIONS
 		*(.hash .gnu.hash)
 		*(.interp)
 		*(.dynstr)
+#ifndef CONFIG_PPC32
+		*(.dynsym)
+#endif
 	}
 }
-- 
2.19.1


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

* [PATCH v2 3/3] powerpc: Discard .branch_lt section
  2018-12-04  0:54 [PATCH v2 0/3] powerpc: Add to linker script discards Joel Stanley
  2018-12-04  0:54 ` [PATCH v2 1/3] powerpc: Discard more sections in linker script Joel Stanley
  2018-12-04  0:54 ` [PATCH v2 2/3] powerpc: Discard dynsym section for !PPC32 Joel Stanley
@ 2018-12-04  0:54 ` Joel Stanley
  2 siblings, 0 replies; 6+ messages in thread
From: Joel Stanley @ 2018-12-04  0:54 UTC (permalink / raw)
  To: linuxppc-dev; +Cc: Stephen Rothwell, Alan Modra

When building a 32 bit powerpc kernel with Binutils 2.31.1 this warning
is emitted:

 powerpc-linux-gnu-ld: warning: orphan section `.branch_lt' from
 `arch/powerpc/kernel/head_44x.o' being placed in section `.branch_lt'

As of binutils commit 2d7ad24e8726 ("Support PLT16 relocs against local
symbols")[1], 32 bit targets can produce .branch_lt sections in their
output.

These sections should be empty for the kernel build so discard them for
both PPC64 and PPC32.

[1] https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;a=commitdiff;h=2d7ad24e8726ba4c45c9e67be08223a146a837ce
Signed-off-by: Joel Stanley <joel@jms.id.au>
---
v2: Discard instead of keep. Alan said "[discarding] can be a recipe for
finding linker bugs", so lets go with that.
---
 arch/powerpc/kernel/vmlinux.lds.S | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/arch/powerpc/kernel/vmlinux.lds.S b/arch/powerpc/kernel/vmlinux.lds.S
index 2c93a420f456..af0f81df8bb9 100644
--- a/arch/powerpc/kernel/vmlinux.lds.S
+++ b/arch/powerpc/kernel/vmlinux.lds.S
@@ -316,7 +316,6 @@ SECTIONS
 		DATA_DATA
 		*(.data.rel*)
 		*(.toc1)
-		*(.branch_lt)
 	}
 
 	.opd : AT(ADDR(.opd) - LOAD_OFFSET) {
@@ -388,6 +387,7 @@ SECTIONS
 		*(.hash .gnu.hash)
 		*(.interp)
 		*(.dynstr)
+		*(.branch_lt)
 #ifndef CONFIG_PPC32
 		*(.dynsym)
 #endif
-- 
2.19.1


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

* Re: [PATCH v2 2/3] powerpc: Discard dynsym section for !PPC32
  2018-12-04  0:54 ` [PATCH v2 2/3] powerpc: Discard dynsym section for !PPC32 Joel Stanley
@ 2018-12-04 17:40   ` Segher Boessenkool
  2018-12-10 21:50     ` Joel Stanley
  0 siblings, 1 reply; 6+ messages in thread
From: Segher Boessenkool @ 2018-12-04 17:40 UTC (permalink / raw)
  To: Joel Stanley; +Cc: Stephen Rothwell, linuxppc-dev, Alan Modra

On Tue, Dec 04, 2018 at 11:24:28AM +1030, Joel Stanley wrote:
> Alan Modra <amodra@gmail.com> explains:
> 
>  > Likely you could discard .interp > and .dynstr too, and .dynsym when
>  > !CONFIG_PPC32.
> 
> Discarding of interp and dynstr happened in a previous patch. The dynsym
> cleanup was a bit less straightforward, so it gets it's own patch.

> diff --git a/arch/powerpc/kernel/vmlinux.lds.S b/arch/powerpc/kernel/vmlinux.lds.S
> index 6570209b0671..2c93a420f456 100644
> --- a/arch/powerpc/kernel/vmlinux.lds.S
> +++ b/arch/powerpc/kernel/vmlinux.lds.S
> @@ -266,14 +266,13 @@ SECTIONS
>  	}
>  #ifdef CONFIG_RELOCATABLE
>  	. = ALIGN(8);
> +#ifdef CONFIG_PPC32
>  	.dynsym : AT(ADDR(.dynsym) - LOAD_OFFSET)
>  	{
> -#ifdef CONFIG_PPC32
>  		__dynamic_symtab = .;
> -#endif
>  		*(.dynsym)
>  	}
> -	.dynstr : AT(ADDR(.dynstr) - LOAD_OFFSET) { *(.dynstr) }

So this last line belongs in the previous patch then, right?


Segher

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

* Re: [PATCH v2 2/3] powerpc: Discard dynsym section for !PPC32
  2018-12-04 17:40   ` Segher Boessenkool
@ 2018-12-10 21:50     ` Joel Stanley
  0 siblings, 0 replies; 6+ messages in thread
From: Joel Stanley @ 2018-12-10 21:50 UTC (permalink / raw)
  To: Segher Boessenkool; +Cc: Stephen Rothwell, linuxppc-dev, Alan Modra

On Wed, 5 Dec 2018 at 04:11, Segher Boessenkool
<segher@kernel.crashing.org> wrote:
>
> On Tue, Dec 04, 2018 at 11:24:28AM +1030, Joel Stanley wrote:
> > Alan Modra <amodra@gmail.com> explains:
> >
> >  > Likely you could discard .interp > and .dynstr too, and .dynsym when
> >  > !CONFIG_PPC32.
> >
> > Discarding of interp and dynstr happened in a previous patch. The dynsym
> > cleanup was a bit less straightforward, so it gets it's own patch.
>
> > diff --git a/arch/powerpc/kernel/vmlinux.lds.S b/arch/powerpc/kernel/vmlinux.lds.S
> > index 6570209b0671..2c93a420f456 100644
> > --- a/arch/powerpc/kernel/vmlinux.lds.S
> > +++ b/arch/powerpc/kernel/vmlinux.lds.S
> > @@ -266,14 +266,13 @@ SECTIONS
> >       }
> >  #ifdef CONFIG_RELOCATABLE
> >       . = ALIGN(8);
> > +#ifdef CONFIG_PPC32
> >       .dynsym : AT(ADDR(.dynsym) - LOAD_OFFSET)
> >       {
> > -#ifdef CONFIG_PPC32
> >               __dynamic_symtab = .;
> > -#endif
> >               *(.dynsym)
> >       }
> > -     .dynstr : AT(ADDR(.dynstr) - LOAD_OFFSET) { *(.dynstr) }
>
> So this last line belongs in the previous patch then, right?

Correct. Good catch.

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

end of thread, other threads:[~2018-12-10 21:53 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-12-04  0:54 [PATCH v2 0/3] powerpc: Add to linker script discards Joel Stanley
2018-12-04  0:54 ` [PATCH v2 1/3] powerpc: Discard more sections in linker script Joel Stanley
2018-12-04  0:54 ` [PATCH v2 2/3] powerpc: Discard dynsym section for !PPC32 Joel Stanley
2018-12-04 17:40   ` Segher Boessenkool
2018-12-10 21:50     ` Joel Stanley
2018-12-04  0:54 ` [PATCH v2 3/3] powerpc: Discard .branch_lt section Joel Stanley

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.