[PATCH, ppc64] improve dedotify()

From: Jan Beulich <hidden>
Date: 2008-01-11 09:14:08
Also in: lkml

This completely untested patch is intended to be a suggestion only:
Code inspection for an entirely different purpose made me stumble
across this, and I think that modifying the string table of an ELF
object is a bad idea, since there's nothing disallowing a linker to
merge strings inside the table, which would result in this code
possibly, but unintentionally screwing up other symbol names.
Besides that, the presented alternative is both smaller and faster.

Signed-off-by: Jan Beulich <redacted>

---
 arch/powerpc/kernel/module_64.c |   10 ++++------
 1 file changed, 4 insertions(+), 6 deletions(-)
--- linux-2.6.24-rc7/arch/powerpc/kernel/module_64.c	2007-02-04 =
19:44:54.000000000 +0100
+++ 2.6.24-rc7-ppc64-dedotify/arch/powerpc/kernel/module_64.c	2008-01-08 =
13:32:33.000000000 +0100
@@ -154,16 +154,14 @@ static void dedotify_versions(struct mod
 }
=20
 /* Undefined symbols which refer to .funcname, hack to funcname */
-static void dedotify(Elf64_Sym *syms, unsigned int numsyms, char *strtab)
+static void dedotify(Elf64_Sym *syms, unsigned int numsyms, const char =
*strtab)
 {
 	unsigned int i;
=20
 	for (i =3D 1; i < numsyms; i++) {
-		if (syms[i].st_shndx =3D=3D SHN_UNDEF) {
-			char *name =3D strtab + syms[i].st_name;
-			if (name[0] =3D=3D '.')
-				memmove(name, name+1, strlen(name));
-		}
+		if (syms[i].st_shndx =3D=3D SHN_UNDEF
+		    && strtab[syms[i].st_name] =3D=3D '.')
+			syms[i].st_name++;
 	}
 }
=20
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help