* [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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).