Commit 668533dc authored by Linus Torvalds's avatar Linus Torvalds

kallsyms: take advantage of the new '%px' format

The conditional kallsym hex printing used a special fixed-width '%lx'
output (KALLSYM_FMT) in preparation for the hashing of %p, but that
series ended up adding a %px specifier to help with the conversions.

Use it, and avoid the "print pointer as an unsigned long" code.
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent da6af54d
...@@ -14,12 +14,6 @@ ...@@ -14,12 +14,6 @@
#define KSYM_SYMBOL_LEN (sizeof("%s+%#lx/%#lx [%s]") + (KSYM_NAME_LEN - 1) + \ #define KSYM_SYMBOL_LEN (sizeof("%s+%#lx/%#lx [%s]") + (KSYM_NAME_LEN - 1) + \
2*(BITS_PER_LONG*3/10) + (MODULE_NAME_LEN - 1) + 1) 2*(BITS_PER_LONG*3/10) + (MODULE_NAME_LEN - 1) + 1)
#ifndef CONFIG_64BIT
# define KALLSYM_FMT "%08lx"
#else
# define KALLSYM_FMT "%016lx"
#endif
struct module; struct module;
#ifdef CONFIG_KALLSYMS #ifdef CONFIG_KALLSYMS
......
...@@ -614,14 +614,14 @@ static void s_stop(struct seq_file *m, void *p) ...@@ -614,14 +614,14 @@ static void s_stop(struct seq_file *m, void *p)
static int s_show(struct seq_file *m, void *p) static int s_show(struct seq_file *m, void *p)
{ {
unsigned long value; void *value;
struct kallsym_iter *iter = m->private; struct kallsym_iter *iter = m->private;
/* Some debugging symbols have no name. Ignore them. */ /* Some debugging symbols have no name. Ignore them. */
if (!iter->name[0]) if (!iter->name[0])
return 0; return 0;
value = iter->show_value ? iter->value : 0; value = iter->show_value ? (void *)iter->value : NULL;
if (iter->module_name[0]) { if (iter->module_name[0]) {
char type; char type;
...@@ -632,10 +632,10 @@ static int s_show(struct seq_file *m, void *p) ...@@ -632,10 +632,10 @@ static int s_show(struct seq_file *m, void *p)
*/ */
type = iter->exported ? toupper(iter->type) : type = iter->exported ? toupper(iter->type) :
tolower(iter->type); tolower(iter->type);
seq_printf(m, KALLSYM_FMT " %c %s\t[%s]\n", value, seq_printf(m, "%px %c %s\t[%s]\n", value,
type, iter->name, iter->module_name); type, iter->name, iter->module_name);
} else } else
seq_printf(m, KALLSYM_FMT " %c %s\n", value, seq_printf(m, "%px %c %s\n", value,
iter->type, iter->name); iter->type, iter->name);
return 0; return 0;
} }
......
...@@ -4157,7 +4157,7 @@ static int m_show(struct seq_file *m, void *p) ...@@ -4157,7 +4157,7 @@ static int m_show(struct seq_file *m, void *p)
{ {
struct module *mod = list_entry(p, struct module, list); struct module *mod = list_entry(p, struct module, list);
char buf[MODULE_FLAGS_BUF_SIZE]; char buf[MODULE_FLAGS_BUF_SIZE];
unsigned long value; void *value;
/* We always ignore unformed modules. */ /* We always ignore unformed modules. */
if (mod->state == MODULE_STATE_UNFORMED) if (mod->state == MODULE_STATE_UNFORMED)
...@@ -4173,8 +4173,8 @@ static int m_show(struct seq_file *m, void *p) ...@@ -4173,8 +4173,8 @@ static int m_show(struct seq_file *m, void *p)
mod->state == MODULE_STATE_COMING ? "Loading" : mod->state == MODULE_STATE_COMING ? "Loading" :
"Live"); "Live");
/* Used by oprofile and other similar tools. */ /* Used by oprofile and other similar tools. */
value = m->private ? 0 : (unsigned long)mod->core_layout.base; value = m->private ? NULL : mod->core_layout.base;
seq_printf(m, " 0x" KALLSYM_FMT, value); seq_printf(m, " 0x%px", value);
/* Taints info */ /* Taints info */
if (mod->taints) if (mod->taints)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment