tree: https://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git WIP.core/stacktrace head: 9fe290aca53f59fd24187841dd4a8ff41ade91bd commit: 714f46ba649b163e80d3dd89e83b92f4ba5ac6af [4/32] stacktrace: Provide helpers for common stack trace operations config: sparc64-defconfig (attached as .config) compiler: sparc64-linux-gnu-gcc (Debian 7.2.0-11) 7.2.0 reproduce: wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross git checkout 714f46ba649b163e80d3dd89e83b92f4ba5ac6af # save the attached .config to linux build tree GCC_VERSION=7.2.0 make.cross ARCH=sparc64
All errors (new ones prefixed by >>):
In file included from include/linux/page_ext.h:6:0,
from include/linux/mm.h:24,
from include/linux/kallsyms.h:12,
from kernel/stacktrace.c:11:
include/linux/stacktrace.h:62:19: error: static declaration of
'save_stack_trace_tsk_reliable' follows non-static declaration
static inline int save_stack_trace_tsk_reliable(struct task_struct *tsk,
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/stacktrace.h:39:12: note: previous declaration of
'save_stack_trace_tsk_reliable' was here
extern int save_stack_trace_tsk_reliable(struct task_struct *tsk,
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>> kernel/stacktrace.c:99:1: error: redefinition of
>> 'save_stack_trace_tsk_reliable'
save_stack_trace_tsk_reliable(struct task_struct *tsk,
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from include/linux/page_ext.h:6:0,
from include/linux/mm.h:24,
from include/linux/kallsyms.h:12,
from kernel/stacktrace.c:11:
include/linux/stacktrace.h:62:19: note: previous definition of
'save_stack_trace_tsk_reliable' was here
static inline int save_stack_trace_tsk_reliable(struct task_struct *tsk,
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
vim +/save_stack_trace_tsk_reliable +99 kernel/stacktrace.c
8637c0990 Ingo Molnar 2006-07-03 @11 #include <linux/kallsyms.h>
8637c0990 Ingo Molnar 2006-07-03 12 #include <linux/stacktrace.h>
8637c0990 Ingo Molnar 2006-07-03 13
714f46ba6 Thomas Gleixner 2019-04-09 14 /**
714f46ba6 Thomas Gleixner 2019-04-09 15 * stack_trace_print - Print the
entries in the stack trace
714f46ba6 Thomas Gleixner 2019-04-09 16 * @entries: Pointer to
storage array
714f46ba6 Thomas Gleixner 2019-04-09 17 * @nr_entries: Number of
entries in the storage array
714f46ba6 Thomas Gleixner 2019-04-09 18 * @spaces: Number of leading
spaces to print
714f46ba6 Thomas Gleixner 2019-04-09 19 */
714f46ba6 Thomas Gleixner 2019-04-09 20 void stack_trace_print(unsigned
long *entries, unsigned int nr_entries,
714f46ba6 Thomas Gleixner 2019-04-09 21 int spaces)
8637c0990 Ingo Molnar 2006-07-03 22 {
714f46ba6 Thomas Gleixner 2019-04-09 23 unsigned int i;
8637c0990 Ingo Molnar 2006-07-03 24
714f46ba6 Thomas Gleixner 2019-04-09 25 if (WARN_ON(!entries))
bfeeeeb99 Johannes Berg 2008-05-12 26 return;
bfeeeeb99 Johannes Berg 2008-05-12 27
714f46ba6 Thomas Gleixner 2019-04-09 28 for (i = 0; i < nr_entries; i++)
714f46ba6 Thomas Gleixner 2019-04-09 29 printk("%*c%pS\n", 1 +
spaces, ' ', (void *)entries[i]);
714f46ba6 Thomas Gleixner 2019-04-09 30 }
714f46ba6 Thomas Gleixner 2019-04-09 31
EXPORT_SYMBOL_GPL(stack_trace_print);
714f46ba6 Thomas Gleixner 2019-04-09 32
714f46ba6 Thomas Gleixner 2019-04-09 33 void print_stack_trace(struct
stack_trace *trace, int spaces)
714f46ba6 Thomas Gleixner 2019-04-09 34 {
714f46ba6 Thomas Gleixner 2019-04-09 35
stack_trace_print(trace->entries, trace->nr_entries, spaces);
8637c0990 Ingo Molnar 2006-07-03 36 }
8594698eb Ingo Molnar 2008-06-27 37
EXPORT_SYMBOL_GPL(print_stack_trace);
8637c0990 Ingo Molnar 2006-07-03 38
714f46ba6 Thomas Gleixner 2019-04-09 39 /**
714f46ba6 Thomas Gleixner 2019-04-09 40 * stack_trace_snprint - Print the
entries in the stack trace into a buffer
714f46ba6 Thomas Gleixner 2019-04-09 41 * @buf: Pointer to the print
buffer
714f46ba6 Thomas Gleixner 2019-04-09 42 * @size: Size of the print buffer
714f46ba6 Thomas Gleixner 2019-04-09 43 * @entries: Pointer to
storage array
714f46ba6 Thomas Gleixner 2019-04-09 44 * @nr_entries: Number of
entries in the storage array
714f46ba6 Thomas Gleixner 2019-04-09 45 * @spaces: Number of leading
spaces to print
714f46ba6 Thomas Gleixner 2019-04-09 46 */
714f46ba6 Thomas Gleixner 2019-04-09 47 int stack_trace_snprint(char *buf,
size_t size, unsigned long *entries,
714f46ba6 Thomas Gleixner 2019-04-09 48 unsigned int
nr_entries, int spaces)
9a92a6ce6 Joonsoo Kim 2014-12-12 49 {
714f46ba6 Thomas Gleixner 2019-04-09 50 unsigned int generated, i,
total = 0;
9a92a6ce6 Joonsoo Kim 2014-12-12 51
714f46ba6 Thomas Gleixner 2019-04-09 52 if (WARN_ON(!entries))
9a92a6ce6 Joonsoo Kim 2014-12-12 53 return 0;
9a92a6ce6 Joonsoo Kim 2014-12-12 54
714f46ba6 Thomas Gleixner 2019-04-09 55 for (i = 0; i < nr_entries;
i++) {
bfeda41d0 Omar Sandoval 2017-02-07 56 generated =
snprintf(buf, size, "%*c%pS\n", 1 + spaces, ' ',
714f46ba6 Thomas Gleixner 2019-04-09 57
(void *)entries[i]);
9a92a6ce6 Joonsoo Kim 2014-12-12 58
9a92a6ce6 Joonsoo Kim 2014-12-12 59 total += generated;
9a92a6ce6 Joonsoo Kim 2014-12-12 60 if (generated >= size) {
9a92a6ce6 Joonsoo Kim 2014-12-12 61 buf += size;
9a92a6ce6 Joonsoo Kim 2014-12-12 62 size = 0;
9a92a6ce6 Joonsoo Kim 2014-12-12 63 } else {
9a92a6ce6 Joonsoo Kim 2014-12-12 64 buf +=
generated;
9a92a6ce6 Joonsoo Kim 2014-12-12 65 size -=
generated;
9a92a6ce6 Joonsoo Kim 2014-12-12 66 }
9a92a6ce6 Joonsoo Kim 2014-12-12 67 }
9a92a6ce6 Joonsoo Kim 2014-12-12 68
9a92a6ce6 Joonsoo Kim 2014-12-12 69 return total;
9a92a6ce6 Joonsoo Kim 2014-12-12 70 }
714f46ba6 Thomas Gleixner 2019-04-09 71
EXPORT_SYMBOL_GPL(stack_trace_snprint);
714f46ba6 Thomas Gleixner 2019-04-09 72
714f46ba6 Thomas Gleixner 2019-04-09 73 int snprint_stack_trace(char *buf,
size_t size,
714f46ba6 Thomas Gleixner 2019-04-09 74 struct
stack_trace *trace, int spaces)
714f46ba6 Thomas Gleixner 2019-04-09 75 {
714f46ba6 Thomas Gleixner 2019-04-09 76 return stack_trace_snprint(buf,
size, trace->entries,
714f46ba6 Thomas Gleixner 2019-04-09 77
trace->nr_entries, spaces);
714f46ba6 Thomas Gleixner 2019-04-09 78 }
9a92a6ce6 Joonsoo Kim 2014-12-12 79
EXPORT_SYMBOL_GPL(snprint_stack_trace);
9a92a6ce6 Joonsoo Kim 2014-12-12 80
9212ddb5e Ingo Molnar 2008-12-25 81 /*
af085d908 Josh Poimboeuf 2017-02-13 82 * Architectures that do not
implement save_stack_trace_*()
af085d908 Josh Poimboeuf 2017-02-13 83 * get these weak aliases and
once-per-bootup warnings
c624d33f6 Masami Hiramatsu 2011-06-08 84 * (whenever this facility is
utilized - for example by procfs):
9212ddb5e Ingo Molnar 2008-12-25 85 */
9212ddb5e Ingo Molnar 2008-12-25 86 __weak void
9212ddb5e Ingo Molnar 2008-12-25 87 save_stack_trace_tsk(struct
task_struct *tsk, struct stack_trace *trace)
9212ddb5e Ingo Molnar 2008-12-25 88 {
9212ddb5e Ingo Molnar 2008-12-25 89 WARN_ONCE(1, KERN_INFO
"save_stack_trace_tsk() not implemented yet.\n");
9212ddb5e Ingo Molnar 2008-12-25 90 }
c624d33f6 Masami Hiramatsu 2011-06-08 91
c624d33f6 Masami Hiramatsu 2011-06-08 92 __weak void
c624d33f6 Masami Hiramatsu 2011-06-08 93 save_stack_trace_regs(struct
pt_regs *regs, struct stack_trace *trace)
c624d33f6 Masami Hiramatsu 2011-06-08 94 {
c624d33f6 Masami Hiramatsu 2011-06-08 95 WARN_ONCE(1, KERN_INFO
"save_stack_trace_regs() not implemented yet.\n");
c624d33f6 Masami Hiramatsu 2011-06-08 96 }
af085d908 Josh Poimboeuf 2017-02-13 97
af085d908 Josh Poimboeuf 2017-02-13 98 __weak int
af085d908 Josh Poimboeuf 2017-02-13 @99
save_stack_trace_tsk_reliable(struct task_struct *tsk,
af085d908 Josh Poimboeuf 2017-02-13 100 struct
stack_trace *trace)
af085d908 Josh Poimboeuf 2017-02-13 101 {
af085d908 Josh Poimboeuf 2017-02-13 102 WARN_ONCE(1, KERN_INFO
"save_stack_tsk_reliable() not implemented yet.\n");
af085d908 Josh Poimboeuf 2017-02-13 103 return -ENOSYS;
af085d908 Josh Poimboeuf 2017-02-13 104 }
714f46ba6 Thomas Gleixner 2019-04-09 105
:::::: The code at line 99 was first introduced by commit
:::::: af085d9084b48530153f51e6cad19fd0b1a13ed7 stacktrace/x86: add function
for detecting reliable stack traces
:::::: TO: Josh Poimboeuf <[email protected]>
:::::: CC: Jiri Kosina <[email protected]>
---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all Intel Corporation
.config.gz
Description: application/gzip

