#endif
static noinline_for_stack
-char *symbol_string(char *buf, char *end, void *ptr,
- struct printf_spec spec, const char *fmt)
+char *symbol_string(struct printf_state *ps, void *ptr)
{
unsigned long value;
#ifdef CONFIG_KALLSYMS
char sym[KSYM_SYMBOL_LEN];
#endif
- if (fmt[1] == 'R')
+ if (ps->fmt[1] == 'R')
ptr = __builtin_extract_return_addr(ptr);
value = (unsigned long)ptr;
#ifdef CONFIG_KALLSYMS
- if (*fmt == 'B')
+ if (*ps->fmt == 'B')
sprint_backtrace(sym, value);
- else if (*fmt != 'f' && *fmt != 's')
+ else if (*ps->fmt != 'f' && *ps->fmt != 's')
sprint_symbol(sym, value);
else
sprint_symbol_no_offset(sym, value);
- return string(buf, end, sym, spec);
+ printf_string(ps, sym);
+ return ps->buf;
#else
- return special_hex_number(buf, end, value, sizeof(void *));
+ return special_hex_number(ps->buf, ps->end, value, sizeof(void *));
#endif
}
ptr = dereference_symbol_descriptor(ptr);
/* Fallthrough */
case 'B':
- return symbol_string(buf, end, ptr, spec, fmt);
+ return symbol_string(ps, ptr);
case 'R':
case 'r':
return resource_string(buf, end, ptr, spec, fmt);