On (01/05/18 21:01), Sergey Senozhatsky wrote: [..] > but, print_symbol() is compiled out on !CONFIG_KALLSYMS systems. so, > basically, we compile out some of errors print outs; even more, on ia64 > ia64_do_show_stack() does nothing when there is no CONFIG_KALLSYMS [all > ia64 defconfigs have KALLSYMS_ALL enabled]. printk(%pS), unlike > print_symbol(), is not compiled out and prints the function address > when symbolic name is not available. but, at a glance, print_symbol() > in most of the cases has printk(registers) next to it or before it, so > it doesn't look like we are introducing a regression here by switching > to printk(%pS). well, if this is a problem, then we can have static inline void print_symbol(const char *fmt, unsigned long addr) { printk(fmt, addr); } for CONFIG_KALLSYMS builds, and an empty print_symbol() for !CONFIG_KALLSYMS builds. but we still have tons printk(%pS) in the kernel and even print_ip_sym() (which is not compiled out on !CONFIG_KALLSYMS). so it seems to me that we can drop print_symbol()/__print_symbol() and switch to printk(%pS) after all. -ss