All of lore.kernel.org
 help / color / mirror / Atom feed
* [-mm PATCH] kallsyms should prefer non weak symbols
@ 2007-12-04 20:35 Paulo Marques
  2007-12-04 21:14 ` Mathieu Desnoyers
                   ` (5 more replies)
  0 siblings, 6 replies; 12+ messages in thread
From: Paulo Marques @ 2007-12-04 20:35 UTC (permalink / raw)
  To: Andrew Morton; +Cc: linux-kernel, Mathieu Desnoyers, Rusty Russell

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


When resolving symbol names from addresses with aliased symbol names, 
kallsyms_lookup always returns the first symbol, even if it is a weak 
symbol.

This patch changes this by sorting the symbols with the weak symbols 
last before feeding them to the kernel. This way the kernel runtime 
isn't changed at all, only the kallsyms build system is changed.

Another side effect is that the symbols get sorted by address, too. So, 
even if future binutils version have some bug in "nm" that makes it fail 
to correctly sort symbols by address, the kernel won't be affected by this.


From: Paulo Marques <pmarques@grupopie.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>

-- 
Paulo Marques - www.grupopie.com

"There cannot be a crisis today; my schedule is already full."

[-- Attachment #2: patch --]
[-- Type: text/plain, Size: 1467 bytes --]

--- ./scripts/kallsyms.c.orig	2007-10-30 18:51:28.000000000 +0000
+++ ./scripts/kallsyms.c	2007-10-30 19:07:58.000000000 +0000
@@ -34,7 +34,7 @@
 
 struct sym_entry {
 	unsigned long long addr;
-	unsigned int len;
+	unsigned int len, start_pos;
 	unsigned char *sym;
 };
 
@@ -202,8 +202,10 @@ static void read_map(FILE *in)
 				exit (1);
 			}
 		}
-		if (read_symbol(in, &table[table_cnt]) == 0)
+		if (read_symbol(in, &table[table_cnt]) == 0) {
+			table[table_cnt].start_pos = table_cnt;
 			table_cnt++;
+		}
 	}
 }
 
@@ -507,6 +509,35 @@ static void optimize_token_table(void)
 }
 
 
+static int compare_symbols(const void *a, const void *b)
+{
+	struct sym_entry *sa, *sb;
+	int wa, wb;
+
+	sa = (struct sym_entry *) a;
+	sb = (struct sym_entry *) b;
+
+	// sort by address first
+	if (sa->addr > sb->addr)
+		return 1;
+	if (sa->addr < sb->addr)
+		return -1;
+
+	// sort by "weakness" type
+	wa = (sa->sym[0] == 'w') || (sa->sym[0] == 'W');
+	wb = (sb->sym[0] == 'w') || (sb->sym[0] == 'W');
+	if (wa != wb)
+		return wa - wb;
+
+	// sort by initial order, so that other symbols are left undisturbed
+	return sa->start_pos - sb->start_pos;
+}
+
+static void sort_symbols(void)
+{
+	qsort(table, table_cnt, sizeof(struct sym_entry), compare_symbols);
+}
+
 int main(int argc, char **argv)
 {
 	if (argc >= 2) {
@@ -527,6 +558,7 @@ int main(int argc, char **argv)
 		usage();
 
 	read_map(stdin);
+	sort_symbols();
 	optimize_token_table();
 	write_src();
 


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

* Re: [-mm PATCH] kallsyms should prefer non weak symbols
  2007-12-04 20:35 [-mm PATCH] kallsyms should prefer non weak symbols Paulo Marques
@ 2007-12-04 21:14 ` Mathieu Desnoyers
  2007-12-05 12:07   ` Paulo Marques
  2007-12-04 21:17 ` Andrew Morton
                   ` (4 subsequent siblings)
  5 siblings, 1 reply; 12+ messages in thread
From: Mathieu Desnoyers @ 2007-12-04 21:14 UTC (permalink / raw)
  To: Paulo Marques; +Cc: Andrew Morton, linux-kernel, Rusty Russell

* Paulo Marques (pmarques@grupopie.com) wrote:
>
> When resolving symbol names from addresses with aliased symbol names, 
> kallsyms_lookup always returns the first symbol, even if it is a weak 
> symbol.
>
> This patch changes this by sorting the symbols with the weak symbols last 
> before feeding them to the kernel. This way the kernel runtime isn't 
> changed at all, only the kallsyms build system is changed.
>
> Another side effect is that the symbols get sorted by address, too. So, 
> even if future binutils version have some bug in "nm" that makes it fail to 
> correctly sort symbols by address, the kernel won't be affected by this.
>
>
> From: Paulo Marques <pmarques@grupopie.com>
> Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
>

Please wait for me to accept the changes before adding signed-off-by.

See comment below,

> -- 
> Paulo Marques - www.grupopie.com
>
> "There cannot be a crisis today; my schedule is already full."

> --- ./scripts/kallsyms.c.orig	2007-10-30 18:51:28.000000000 +0000
> +++ ./scripts/kallsyms.c	2007-10-30 19:07:58.000000000 +0000
> @@ -34,7 +34,7 @@
>  
>  struct sym_entry {
>  	unsigned long long addr;
> -	unsigned int len;
> +	unsigned int len, start_pos;
>  	unsigned char *sym;
>  };
>  
> @@ -202,8 +202,10 @@ static void read_map(FILE *in)
>  				exit (1);
>  			}
>  		}
> -		if (read_symbol(in, &table[table_cnt]) == 0)
> +		if (read_symbol(in, &table[table_cnt]) == 0) {
> +			table[table_cnt].start_pos = table_cnt;
>  			table_cnt++;
> +		}
>  	}
>  }
>  
> @@ -507,6 +509,35 @@ static void optimize_token_table(void)
>  }
>  
>  
> +static int compare_symbols(const void *a, const void *b)
> +{
> +	struct sym_entry *sa, *sb;
> +	int wa, wb;
> +
> +	sa = (struct sym_entry *) a;
> +	sb = (struct sym_entry *) b;
> +
> +	// sort by address first

Comments should be /* */ , not //.

Please run through scripts/checkpatch.pl before submitting.

> +	if (sa->addr > sb->addr)
> +		return 1;
> +	if (sa->addr < sb->addr)
> +		return -1;
> +
> +	// sort by "weakness" type
> +	wa = (sa->sym[0] == 'w') || (sa->sym[0] == 'W');
> +	wb = (sb->sym[0] == 'w') || (sb->sym[0] == 'W');
> +	if (wa != wb)
> +		return wa - wb;
> +
> +	// sort by initial order, so that other symbols are left undisturbed
> +	return sa->start_pos - sb->start_pos;
> +}
> +
> +static void sort_symbols(void)
> +{
> +	qsort(table, table_cnt, sizeof(struct sym_entry), compare_symbols);
> +}
> +
>  int main(int argc, char **argv)
>  {
>  	if (argc >= 2) {
> @@ -527,6 +558,7 @@ int main(int argc, char **argv)
>  		usage();
>  
>  	read_map(stdin);
> +	sort_symbols();
>  	optimize_token_table();
>  	write_src();
>  
> 


-- 
Mathieu Desnoyers
Computer Engineering Ph.D. Student, Ecole Polytechnique de Montreal
OpenPGP key fingerprint: 8CD5 52C3 8E3C 4140 715F  BA06 3F25 A8FE 3BAE 9A68

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

* Re: [-mm PATCH] kallsyms should prefer non weak symbols
  2007-12-04 20:35 [-mm PATCH] kallsyms should prefer non weak symbols Paulo Marques
  2007-12-04 21:14 ` Mathieu Desnoyers
@ 2007-12-04 21:17 ` Andrew Morton
  2007-12-04 21:38   ` Mathieu Desnoyers
  2007-12-04 21:34 ` Arjan van de Ven
                   ` (3 subsequent siblings)
  5 siblings, 1 reply; 12+ messages in thread
From: Andrew Morton @ 2007-12-04 21:17 UTC (permalink / raw)
  To: Paulo Marques; +Cc: linux-kernel, compudj, rusty

On Tue, 04 Dec 2007 20:35:32 +0000
Paulo Marques <pmarques@grupopie.com> wrote:

> When resolving symbol names from addresses with aliased symbol names, 
> kallsyms_lookup always returns the first symbol, even if it is a weak 
> symbol.
> 
> This patch changes this by sorting the symbols with the weak symbols 
> last before feeding them to the kernel. This way the kernel runtime 
> isn't changed at all, only the kallsyms build system is changed.
> 
> Another side effect is that the symbols get sorted by address, too. So, 
> even if future binutils version have some bug in "nm" that makes it fail 
> to correctly sort symbols by address, the kernel won't be affected by this.
> 
> 

I don't understand the reason for making this change.

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

* Re: [-mm PATCH] kallsyms should prefer non weak symbols
  2007-12-04 20:35 [-mm PATCH] kallsyms should prefer non weak symbols Paulo Marques
  2007-12-04 21:14 ` Mathieu Desnoyers
  2007-12-04 21:17 ` Andrew Morton
@ 2007-12-04 21:34 ` Arjan van de Ven
  2007-12-04 22:31   ` Mathieu Desnoyers
  2007-12-05  2:05 ` Rusty Russell
                   ` (2 subsequent siblings)
  5 siblings, 1 reply; 12+ messages in thread
From: Arjan van de Ven @ 2007-12-04 21:34 UTC (permalink / raw)
  To: Paulo Marques
  Cc: Andrew Morton, linux-kernel, Mathieu Desnoyers, Rusty Russell

On Tue, 04 Dec 2007 20:35:32 +0000
Paulo Marques <pmarques@grupopie.com> wrote:

> 
> When resolving symbol names from addresses with aliased symbol names, 
> kallsyms_lookup always returns the first symbol, even if it is a weak 
> symbol.
> 
> This patch changes this by sorting the symbols with the weak symbols 
> last before feeding them to the kernel. This way the kernel runtime 
> isn't changed at all, only the kallsyms build system is changed.
> 

what user of this api is affected by this?


-- 
If you want to reach me at my work email, use arjan@linux.intel.com
For development, discussion and tips for power savings, 
visit http://www.lesswatts.org

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

* Re: [-mm PATCH] kallsyms should prefer non weak symbols
  2007-12-04 21:17 ` Andrew Morton
@ 2007-12-04 21:38   ` Mathieu Desnoyers
  0 siblings, 0 replies; 12+ messages in thread
From: Mathieu Desnoyers @ 2007-12-04 21:38 UTC (permalink / raw)
  To: Andrew Morton; +Cc: Paulo Marques, linux-kernel, rusty

* Andrew Morton (akpm@linux-foundation.org) wrote:
> On Tue, 04 Dec 2007 20:35:32 +0000
> Paulo Marques <pmarques@grupopie.com> wrote:
> 
> > When resolving symbol names from addresses with aliased symbol names, 
> > kallsyms_lookup always returns the first symbol, even if it is a weak 
> > symbol.
> > 
> > This patch changes this by sorting the symbols with the weak symbols 
> > last before feeding them to the kernel. This way the kernel runtime 
> > isn't changed at all, only the kallsyms build system is changed.
> > 
> > Another side effect is that the symbols get sorted by address, too. So, 
> > even if future binutils version have some bug in "nm" that makes it fail 
> > to correctly sort symbols by address, the kernel won't be affected by this.
> > 
> > 
> 
> I don't understand the reason for making this change.
> 

I created a module in LTTng that uses kallsyms to get the symbol
corresponding to a specific system call address. Unfortunately, all the
unimplemented syscalls were all referring to the (same) weak symbol
identifying an unrelated system call rather that sys_ni (or whatever
non-weak symbol would be expected). Kallsyms was dumbly returning the
first symbol that matched.

This patch makes sure kallsyms returns the non-weak symbol when there is
one, which seems to be the expected result.

Mathieu

-- 
Mathieu Desnoyers
Computer Engineering Ph.D. Student, Ecole Polytechnique de Montreal
OpenPGP key fingerprint: 8CD5 52C3 8E3C 4140 715F  BA06 3F25 A8FE 3BAE 9A68

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

* Re: [-mm PATCH] kallsyms should prefer non weak symbols
  2007-12-04 21:34 ` Arjan van de Ven
@ 2007-12-04 22:31   ` Mathieu Desnoyers
  2007-12-05  9:37     ` Rusty Russell
  0 siblings, 1 reply; 12+ messages in thread
From: Mathieu Desnoyers @ 2007-12-04 22:31 UTC (permalink / raw)
  To: Arjan van de Ven
  Cc: Paulo Marques, Andrew Morton, linux-kernel, Rusty Russell

* Arjan van de Ven (arjan@infradead.org) wrote:
> On Tue, 04 Dec 2007 20:35:32 +0000
> Paulo Marques <pmarques@grupopie.com> wrote:
> 
> > 
> > When resolving symbol names from addresses with aliased symbol names, 
> > kallsyms_lookup always returns the first symbol, even if it is a weak 
> > symbol.
> > 
> > This patch changes this by sorting the symbols with the weak symbols 
> > last before feeding them to the kernel. This way the kernel runtime 
> > isn't changed at all, only the kallsyms build system is changed.
> > 
> 
> what user of this api is affected by this?
> 

grep -r kallsyms_lookup * does a pretty good job at it ;)

kernel/kprobes.c
arch/x86/kernel/traps_64.c
blackfin/kernel/traps.c
parisc/kernel/unwind.c
powerpc/xmon/xmon.c
sh64/kernel/unwind.c
kernel/kallsyms.c : sprint_symbol()

Then, sprint_symbol users :

kernel/lockdep_proc.c
kernel/softirq.c
mm/slub.c
fs/gfs2/glock.c
arch/x86/kernel/traps_32.c
arch/x86/kernel/traps_64.c
x86/kernel/syscall_64.c

Mathieu

> 
> -- 
> If you want to reach me at my work email, use arjan@linux.intel.com
> For development, discussion and tips for power savings, 
> visit http://www.lesswatts.org
> 

-- 
Mathieu Desnoyers
Computer Engineering Ph.D. Student, Ecole Polytechnique de Montreal
OpenPGP key fingerprint: 8CD5 52C3 8E3C 4140 715F  BA06 3F25 A8FE 3BAE 9A68

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

* Re: [-mm PATCH] kallsyms should prefer non weak symbols
  2007-12-04 20:35 [-mm PATCH] kallsyms should prefer non weak symbols Paulo Marques
                   ` (2 preceding siblings ...)
  2007-12-04 21:34 ` Arjan van de Ven
@ 2007-12-05  2:05 ` Rusty Russell
  2007-12-05  3:09 ` Andrew Morton
  2007-12-05  3:14 ` Andrew Morton
  5 siblings, 0 replies; 12+ messages in thread
From: Rusty Russell @ 2007-12-05  2:05 UTC (permalink / raw)
  To: Paulo Marques; +Cc: Andrew Morton, linux-kernel, Mathieu Desnoyers

On Wednesday 05 December 2007 07:35:32 Paulo Marques wrote:
> When resolving symbol names from addresses with aliased symbol names,
> kallsyms_lookup always returns the first symbol, even if it is a weak
> symbol.

Thanks, this looks great.

Rusty.

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

* Re: [-mm PATCH] kallsyms should prefer non weak symbols
  2007-12-04 20:35 [-mm PATCH] kallsyms should prefer non weak symbols Paulo Marques
                   ` (3 preceding siblings ...)
  2007-12-05  2:05 ` Rusty Russell
@ 2007-12-05  3:09 ` Andrew Morton
  2007-12-05  3:14 ` Andrew Morton
  5 siblings, 0 replies; 12+ messages in thread
From: Andrew Morton @ 2007-12-05  3:09 UTC (permalink / raw)
  To: Paulo Marques; +Cc: linux-kernel, Mathieu Desnoyers, Rusty Russell

On Tue, 04 Dec 2007 20:35:32 +0000 Paulo Marques <pmarques@grupopie.com> wrote:

> When resolving symbol names from addresses with aliased symbol names, 
> kallsyms_lookup always returns the first symbol, even if it is a weak 
> symbol.
> 
> This patch changes this by sorting the symbols with the weak symbols 
> last before feeding them to the kernel. This way the kernel runtime 
> isn't changed at all, only the kallsyms build system is changed.
> 
> Another side effect is that the symbols get sorted by address, too. So, 
> even if future binutils version have some bug in "nm" that makes it fail 
> to correctly sort symbols by address, the kernel won't be affected by this.
> 
> 
> From: Paulo Marques <pmarques@grupopie.com>
> Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>

The signoffs don't make sense.

If you authored the patch then please put a From: at the top of the changelog
and include your signed-off-by:.

If Mathieu worked on or forwarded the patch then include his s-o-b.
If he wasn't in the delivery path but has tested/reviewed/approved the
patch then Acked-by: is more appropriate.  Documentation/SubmittingPatches
has details...

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

* Re: [-mm PATCH] kallsyms should prefer non weak symbols
  2007-12-04 20:35 [-mm PATCH] kallsyms should prefer non weak symbols Paulo Marques
                   ` (4 preceding siblings ...)
  2007-12-05  3:09 ` Andrew Morton
@ 2007-12-05  3:14 ` Andrew Morton
  2007-12-05  5:01   ` Mathieu Desnoyers
  5 siblings, 1 reply; 12+ messages in thread
From: Andrew Morton @ 2007-12-05  3:14 UTC (permalink / raw)
  To: Paulo Marques; +Cc: linux-kernel, Mathieu Desnoyers, Rusty Russell

On Tue, 04 Dec 2007 20:35:32 +0000 Paulo Marques <pmarques@grupopie.com> wrote:

> When resolving symbol names from addresses with aliased symbol names, 
> kallsyms_lookup always returns the first symbol, even if it is a weak 
> symbol.
> 
> This patch changes this by sorting the symbols with the weak symbols 
> last before feeding them to the kernel. This way the kernel runtime 
> isn't changed at all, only the kallsyms build system is changed.
> 
> Another side effect is that the symbols get sorted by address, too. So, 
> even if future binutils version have some bug in "nm" that makes it fail 
> to correctly sort symbols by address, the kernel won't be affected by this.

Incremental patch:




From: Andrew Morton <akpm@linux-foundation.org>

Fix checkpatch warnings:

ERROR: do not use C99 // comments
#72: FILE: scripts/kallsyms.c:516:
+	// sort by address first

ERROR: do not use C99 // comments
#78: FILE: scripts/kallsyms.c:522:
+	// sort by "weakness" type

ERROR: do not use C99 // comments
#84: FILE: scripts/kallsyms.c:528:
+	// sort by initial order, so that other symbols are left undisturbed

total: 3 errors, 0 warnings, 61 lines checked

Your patch has style problems, please review.  If any of these errors
are false positives report them to the maintainer, see
CHECKPATCH in MAINTAINERS.

Please run checkpatch prior to sending patches

And a few coding-style things which checkpatch missed.

And fix up constificiation to remove typecasting.

Cc: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Cc: Paulo Marques <pmarques@grupopie.com>
Cc: Sam Ravnborg <sam@ravnborg.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
---

 scripts/kallsyms.c |   19 +++++++++----------
 1 file changed, 9 insertions(+), 10 deletions(-)

diff -puN scripts/kallsyms.c~kallsyms-should-prefer-non-weak-symbols-checkpatch-fixes scripts/kallsyms.c
--- a/scripts/kallsyms.c~kallsyms-should-prefer-non-weak-symbols-checkpatch-fixes
+++ a/scripts/kallsyms.c
@@ -31,14 +31,13 @@
 
 #define KSYM_NAME_LEN		128
 
-
 struct sym_entry {
 	unsigned long long addr;
-	unsigned int len, start_pos;
+	unsigned int len;
+	unsigned int start_pos;
 	unsigned char *sym;
 };
 
-
 static struct sym_entry *table;
 static unsigned int table_size, table_cnt;
 static unsigned long long _text, _stext, _etext, _sinittext, _einittext;
@@ -504,28 +503,28 @@ static void optimize_token_table(void)
 	optimize_result();
 }
 
-
 static int compare_symbols(const void *a, const void *b)
 {
-	struct sym_entry *sa, *sb;
+	const struct sym_entry *sa;
+	const struct sym_entry *sb;
 	int wa, wb;
 
-	sa = (struct sym_entry *) a;
-	sb = (struct sym_entry *) b;
+	sa = a;
+	sb = b;
 
-	// sort by address first
+	/* sort by address first */
 	if (sa->addr > sb->addr)
 		return 1;
 	if (sa->addr < sb->addr)
 		return -1;
 
-	// sort by "weakness" type
+	/* sort by "weakness" type */
 	wa = (sa->sym[0] == 'w') || (sa->sym[0] == 'W');
 	wb = (sb->sym[0] == 'w') || (sb->sym[0] == 'W');
 	if (wa != wb)
 		return wa - wb;
 
-	// sort by initial order, so that other symbols are left undisturbed
+	/* sort by initial order, so that other symbols are left undisturbed */
 	return sa->start_pos - sb->start_pos;
 }
 
_


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

* Re: [-mm PATCH] kallsyms should prefer non weak symbols
  2007-12-05  3:14 ` Andrew Morton
@ 2007-12-05  5:01   ` Mathieu Desnoyers
  0 siblings, 0 replies; 12+ messages in thread
From: Mathieu Desnoyers @ 2007-12-05  5:01 UTC (permalink / raw)
  To: Andrew Morton; +Cc: Paulo Marques, linux-kernel, Rusty Russell

* Andrew Morton (akpm@linux-foundation.org) wrote:
> On Tue, 04 Dec 2007 20:35:32 +0000 Paulo Marques <pmarques@grupopie.com> wrote:
> 
> > When resolving symbol names from addresses with aliased symbol names, 
> > kallsyms_lookup always returns the first symbol, even if it is a weak 
> > symbol.
> > 
> > This patch changes this by sorting the symbols with the weak symbols 
> > last before feeding them to the kernel. This way the kernel runtime 
> > isn't changed at all, only the kallsyms build system is changed.
> > 
> > Another side effect is that the symbols get sorted by address, too. So, 
> > even if future binutils version have some bug in "nm" that makes it fail 
> > to correctly sort symbols by address, the kernel won't be affected by this.
> 
> Incremental patch:
> 
> 
> 
> 
> From: Andrew Morton <akpm@linux-foundation.org>
> 
> Fix checkpatch warnings:
> 
> ERROR: do not use C99 // comments
> #72: FILE: scripts/kallsyms.c:516:
> +	// sort by address first
> 
> ERROR: do not use C99 // comments
> #78: FILE: scripts/kallsyms.c:522:
> +	// sort by "weakness" type
> 
> ERROR: do not use C99 // comments
> #84: FILE: scripts/kallsyms.c:528:
> +	// sort by initial order, so that other symbols are left undisturbed
> 
> total: 3 errors, 0 warnings, 61 lines checked
> 
> Your patch has style problems, please review.  If any of these errors
> are false positives report them to the maintainer, see
> CHECKPATCH in MAINTAINERS.
> 
> Please run checkpatch prior to sending patches
> 
> And a few coding-style things which checkpatch missed.
> 
> And fix up constificiation to remove typecasting.
> 
> Cc: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
> Cc: Paulo Marques <pmarques@grupopie.com>
> Cc: Sam Ravnborg <sam@ravnborg.org>
> Signed-off-by: Andrew Morton <akpm@linux-foundation.org>

(if it's any useful at this point) The comments were the only problems I
found. I've tested it and it work fine for me in LTTng.

Acked-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>

> ---
> 
>  scripts/kallsyms.c |   19 +++++++++----------
>  1 file changed, 9 insertions(+), 10 deletions(-)
> 
> diff -puN scripts/kallsyms.c~kallsyms-should-prefer-non-weak-symbols-checkpatch-fixes scripts/kallsyms.c
> --- a/scripts/kallsyms.c~kallsyms-should-prefer-non-weak-symbols-checkpatch-fixes
> +++ a/scripts/kallsyms.c
> @@ -31,14 +31,13 @@
>  
>  #define KSYM_NAME_LEN		128
>  
> -
>  struct sym_entry {
>  	unsigned long long addr;
> -	unsigned int len, start_pos;
> +	unsigned int len;
> +	unsigned int start_pos;
>  	unsigned char *sym;
>  };
>  
> -
>  static struct sym_entry *table;
>  static unsigned int table_size, table_cnt;
>  static unsigned long long _text, _stext, _etext, _sinittext, _einittext;
> @@ -504,28 +503,28 @@ static void optimize_token_table(void)
>  	optimize_result();
>  }
>  
> -
>  static int compare_symbols(const void *a, const void *b)
>  {
> -	struct sym_entry *sa, *sb;
> +	const struct sym_entry *sa;
> +	const struct sym_entry *sb;
>  	int wa, wb;
>  
> -	sa = (struct sym_entry *) a;
> -	sb = (struct sym_entry *) b;
> +	sa = a;
> +	sb = b;
>  
> -	// sort by address first
> +	/* sort by address first */
>  	if (sa->addr > sb->addr)
>  		return 1;
>  	if (sa->addr < sb->addr)
>  		return -1;
>  
> -	// sort by "weakness" type
> +	/* sort by "weakness" type */
>  	wa = (sa->sym[0] == 'w') || (sa->sym[0] == 'W');
>  	wb = (sb->sym[0] == 'w') || (sb->sym[0] == 'W');
>  	if (wa != wb)
>  		return wa - wb;
>  
> -	// sort by initial order, so that other symbols are left undisturbed
> +	/* sort by initial order, so that other symbols are left undisturbed */
>  	return sa->start_pos - sb->start_pos;
>  }
>  
> _
> 

-- 
Mathieu Desnoyers
Computer Engineering Ph.D. Student, Ecole Polytechnique de Montreal
OpenPGP key fingerprint: 8CD5 52C3 8E3C 4140 715F  BA06 3F25 A8FE 3BAE 9A68

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

* Re: [-mm PATCH] kallsyms should prefer non weak symbols
  2007-12-04 22:31   ` Mathieu Desnoyers
@ 2007-12-05  9:37     ` Rusty Russell
  0 siblings, 0 replies; 12+ messages in thread
From: Rusty Russell @ 2007-12-05  9:37 UTC (permalink / raw)
  To: Mathieu Desnoyers
  Cc: Arjan van de Ven, Paulo Marques, Andrew Morton, linux-kernel

On Wednesday 05 December 2007 09:31:23 Mathieu Desnoyers wrote:
> * Arjan van de Ven (arjan@infradead.org) wrote:
> > On Tue, 04 Dec 2007 20:35:32 +0000
> >
> > Paulo Marques <pmarques@grupopie.com> wrote:
> > > When resolving symbol names from addresses with aliased symbol names,
> > > kallsyms_lookup always returns the first symbol, even if it is a weak
> > > symbol.
> > >
> > > This patch changes this by sorting the symbols with the weak symbols
> > > last before feeding them to the kernel. This way the kernel runtime
> > > isn't changed at all, only the kallsyms build system is changed.
> >
> > what user of this api is affected by this?
>
> grep -r kallsyms_lookup * does a pretty good job at it ;)

Yeah, we discussed this before and agreed it was best to show strong symbols 
before weak ones.

Cheers,
Rusty.

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

* Re: [-mm PATCH] kallsyms should prefer non weak symbols
  2007-12-04 21:14 ` Mathieu Desnoyers
@ 2007-12-05 12:07   ` Paulo Marques
  0 siblings, 0 replies; 12+ messages in thread
From: Paulo Marques @ 2007-12-05 12:07 UTC (permalink / raw)
  To: Mathieu Desnoyers; +Cc: Andrew Morton, linux-kernel, Rusty Russell

Mathieu Desnoyers wrote:
> * Paulo Marques (pmarques@grupopie.com) wrote:
>> When resolving symbol names from addresses with aliased symbol names, 
>> kallsyms_lookup always returns the first symbol, even if it is a weak 
>> symbol.
>>
>> [...]
>> From: Paulo Marques <pmarques@grupopie.com>
>> Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
> 
> Please wait for me to accept the changes before adding signed-off-by.

My mistake was that I didn't realized you'd already corrected the 
original patch when you posted this:

http://lkml.org/lkml/2007/11/13/292

Since I thought it was the same patch, it already had your 
"Signed-off-by". Sorry for the confusion... :(

-- 
Paulo Marques - www.grupopie.com

"I haven't lost my mind -- it's backed up on tape somewhere."

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

end of thread, other threads:[~2007-12-05 12:07 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2007-12-04 20:35 [-mm PATCH] kallsyms should prefer non weak symbols Paulo Marques
2007-12-04 21:14 ` Mathieu Desnoyers
2007-12-05 12:07   ` Paulo Marques
2007-12-04 21:17 ` Andrew Morton
2007-12-04 21:38   ` Mathieu Desnoyers
2007-12-04 21:34 ` Arjan van de Ven
2007-12-04 22:31   ` Mathieu Desnoyers
2007-12-05  9:37     ` Rusty Russell
2007-12-05  2:05 ` Rusty Russell
2007-12-05  3:09 ` Andrew Morton
2007-12-05  3:14 ` Andrew Morton
2007-12-05  5:01   ` Mathieu Desnoyers

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.