All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] powerpc: fix dedotify for binutils >= 2.26
@ 2016-02-05 18:50 Andreas Schwab
  2016-02-06 23:45 ` Anton Blanchard
  2016-02-09 12:16 ` Michael Ellerman
  0 siblings, 2 replies; 5+ messages in thread
From: Andreas Schwab @ 2016-02-05 18:50 UTC (permalink / raw)
  To: linuxppc-dev; +Cc: linux-kernel

Since binutils 2.26 BFD is doing suffix merging on STRTAB sections.  But
dedotify modifies the symbol names in place, which can also modify
unrelated symbols with a name that matches a suffix of a dotted name.  To
remove the leading dot of a symbol name we can just increment the pointer
into the STRTAB section instead.

Signed-off-by: Andreas Schwab <schwab@linux-m68k.org>
---
 arch/powerpc/kernel/module_64.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/arch/powerpc/kernel/module_64.c b/arch/powerpc/kernel/module_64.c
index ac64ffd..08b7a40 100644
--- a/arch/powerpc/kernel/module_64.c
+++ b/arch/powerpc/kernel/module_64.c
@@ -340,7 +340,7 @@ static void dedotify(Elf64_Sym *syms, unsigned int numsyms, char *strtab)
 			if (name[0] == '.') {
 				if (strcmp(name+1, "TOC.") == 0)
 					syms[i].st_shndx = SHN_ABS;
-				memmove(name, name+1, strlen(name));
+				syms[i].st_name++;
 			}
 		}
 	}
-- 
2.7.0


-- 
Andreas Schwab, schwab@linux-m68k.org
GPG Key fingerprint = 58CA 54C7 6D53 942B 1756  01D3 44D5 214B 8276 4ED5
"And now for something completely different."

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

* Re: [PATCH] powerpc: fix dedotify for binutils >= 2.26
  2016-02-05 18:50 [PATCH] powerpc: fix dedotify for binutils >= 2.26 Andreas Schwab
@ 2016-02-06 23:45 ` Anton Blanchard
  2016-02-09 12:16 ` Michael Ellerman
  1 sibling, 0 replies; 5+ messages in thread
From: Anton Blanchard @ 2016-02-06 23:45 UTC (permalink / raw)
  To: Andreas Schwab; +Cc: linuxppc-dev, linux-kernel, Alan Modra


> Since binutils 2.26 BFD is doing suffix merging on STRTAB sections.
> But dedotify modifies the symbol names in place, which can also modify
> unrelated symbols with a name that matches a suffix of a dotted
> name.  To remove the leading dot of a symbol name we can just
> increment the pointer into the STRTAB section instead.

Thanks Andreas.

> Signed-off-by: Andreas Schwab <schwab@linux-m68k.org>

I think we should get it into stable too.

Anton

> ---
>  arch/powerpc/kernel/module_64.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/arch/powerpc/kernel/module_64.c
> b/arch/powerpc/kernel/module_64.c index ac64ffd..08b7a40 100644
> --- a/arch/powerpc/kernel/module_64.c
> +++ b/arch/powerpc/kernel/module_64.c
> @@ -340,7 +340,7 @@ static void dedotify(Elf64_Sym *syms, unsigned
> int numsyms, char *strtab) if (name[0] == '.') {
>  				if (strcmp(name+1, "TOC.") == 0)
>  					syms[i].st_shndx = SHN_ABS;
> -				memmove(name, name+1, strlen(name));
> +				syms[i].st_name++;
>  			}
>  		}
>  	}

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

* Re: powerpc: fix dedotify for binutils >= 2.26
  2016-02-05 18:50 [PATCH] powerpc: fix dedotify for binutils >= 2.26 Andreas Schwab
  2016-02-06 23:45 ` Anton Blanchard
@ 2016-02-09 12:16 ` Michael Ellerman
  1 sibling, 0 replies; 5+ messages in thread
From: Michael Ellerman @ 2016-02-09 12:16 UTC (permalink / raw)
  To: Andreas Schwab, linuxppc-dev; +Cc: linux-kernel

On Fri, 2016-05-02 at 18:50:03 UTC, Andreas Schwab wrote:
> Since binutils 2.26 BFD is doing suffix merging on STRTAB sections.  But
> dedotify modifies the symbol names in place, which can also modify
> unrelated symbols with a name that matches a suffix of a dotted name.  To
> remove the leading dot of a symbol name we can just increment the pointer
> into the STRTAB section instead.
> 
> Signed-off-by: Andreas Schwab <schwab@linux-m68k.org>

Applied to powerpc fixes, thanks.

https://git.kernel.org/powerpc/c/f15838e9cac8f78f0cc506529b

cheers

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

* Re: [PATCH] powerpc: Fix dedotify for binutils >= 2.26
  2016-03-09 12:13 [PATCH] powerpc: Fix " Michael Ellerman
@ 2016-03-09 16:14 ` Ben Hutchings
  0 siblings, 0 replies; 5+ messages in thread
From: Ben Hutchings @ 2016-03-09 16:14 UTC (permalink / raw)
  To: Michael Ellerman, stable; +Cc: amodra

[-- Attachment #1: Type: text/plain, Size: 1614 bytes --]

On Wed, 2016-03-09 at 23:13 +1100, Michael Ellerman wrote:
> From: Andreas Schwab <schwab@linux-m68k.org>
> 
> commit f15838e9cac8f78f0cc506529bb9d3b9fa589c1f upstream.
> 
> Since binutils 2.26 BFD is doing suffix merging on STRTAB sections.  But
> dedotify modifies the symbol names in place, which can also modify
> unrelated symbols with a name that matches a suffix of a dotted name.  To
> remove the leading dot of a symbol name we can just increment the pointer
> into the STRTAB section instead.
> 
> Backport to all stables to avoid breakage when people update their
> binutils - mpe.
> 
> Signed-off-by: Andreas Schwab <schwab@linux-m68k.org>
> Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
> ---
>  arch/powerpc/kernel/module_64.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> Backport to v4.4.y

Thanks.  I included the same patch in Debians's package version
4.4.4-2, and the ppc64 big-endian and little-endian kernels built from
that both work for me.

Ben.

> diff --git a/arch/powerpc/kernel/module_64.c b/arch/powerpc/kernel/module_64.c
> index 59663af9315f..e4f7d4eed20c 100644
> --- a/arch/powerpc/kernel/module_64.c
> +++ b/arch/powerpc/kernel/module_64.c
> @@ -335,7 +335,7 @@ static void dedotify(Elf64_Sym *syms, unsigned int numsyms, char *strtab)
>  		if (syms[i].st_shndx == SHN_UNDEF) {
>  			char *name = strtab + syms[i].st_name;
>  			if (name[0] == '.')
> -				memmove(name, name+1, strlen(name));
> +				syms[i].st_name++;
>  		}
>  	}
>  }
-- 
Ben Hutchings
When in doubt, use brute force. - Ken Thompson

[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 819 bytes --]

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

* [PATCH] powerpc: Fix dedotify for binutils >= 2.26
@ 2016-03-09 12:13 Michael Ellerman
  2016-03-09 16:14 ` Ben Hutchings
  0 siblings, 1 reply; 5+ messages in thread
From: Michael Ellerman @ 2016-03-09 12:13 UTC (permalink / raw)
  To: stable; +Cc: ben, amodra

From: Andreas Schwab <schwab@linux-m68k.org>

commit f15838e9cac8f78f0cc506529bb9d3b9fa589c1f upstream.

Since binutils 2.26 BFD is doing suffix merging on STRTAB sections.  But
dedotify modifies the symbol names in place, which can also modify
unrelated symbols with a name that matches a suffix of a dotted name.  To
remove the leading dot of a symbol name we can just increment the pointer
into the STRTAB section instead.

Backport to all stables to avoid breakage when people update their
binutils - mpe.

Signed-off-by: Andreas Schwab <schwab@linux-m68k.org>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
---
 arch/powerpc/kernel/module_64.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Backport to v4.4.y

diff --git a/arch/powerpc/kernel/module_64.c b/arch/powerpc/kernel/module_64.c
index 59663af9315f..e4f7d4eed20c 100644
--- a/arch/powerpc/kernel/module_64.c
+++ b/arch/powerpc/kernel/module_64.c
@@ -335,7 +335,7 @@ static void dedotify(Elf64_Sym *syms, unsigned int numsyms, char *strtab)
 		if (syms[i].st_shndx == SHN_UNDEF) {
 			char *name = strtab + syms[i].st_name;
 			if (name[0] == '.')
-				memmove(name, name+1, strlen(name));
+				syms[i].st_name++;
 		}
 	}
 }
-- 
2.5.0


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

end of thread, other threads:[~2016-03-09 16:15 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-02-05 18:50 [PATCH] powerpc: fix dedotify for binutils >= 2.26 Andreas Schwab
2016-02-06 23:45 ` Anton Blanchard
2016-02-09 12:16 ` Michael Ellerman
2016-03-09 12:13 [PATCH] powerpc: Fix " Michael Ellerman
2016-03-09 16:14 ` Ben Hutchings

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.