mirror of
https://github.com/torvalds/linux.git
synced 2025-04-09 14:45:27 +00:00

When building with 'make W=1', the compiler warns about any function definition that does not come with a prototype in a header, to ensure it matches what the caller expects. This includes functions that are only ever caller from assembly code and don't technically need a declaration: arch/arm/kernel/ftrace.c:227:6: error: no previous prototype for 'prepare_ftrace_return' arch/arm/kernel/ptrace.c:850:16: error: no previous prototype for 'syscall_trace_enter' arch/arm/kernel/ptrace.c:878:17: error: no previous prototype for 'syscall_trace_exit' arch/arm/kernel/signal.c:601:1: error: no previous prototype for 'do_work_pending' arch/arm/kernel/signal.c:672:17: error: no previous prototype for 'do_rseq_syscall' arch/arm/kernel/suspend.c:75:6: error: no previous prototype for '__cpu_suspend_save' arch/arm/kernel/traps.c:451:17: error: no previous prototype for 'do_undefinstr' arch/arm/kernel/traps.c:516:39: error: no previous prototype for 'handle_fiq_as_nmi' arch/arm/kernel/traps.c:535:17: error: no previous prototype for 'bad_mode' arch/arm/kernel/traps.c:608:16: error: no previous prototype for 'arm_syscall' arch/arm/kernel/traps.c:734:1: error: no previous prototype for 'baddataabort' arch/arm/kernel/traps.c:774:17: error: no previous prototype for '__div0' arch/arm/kernel/traps.c:97:6: error: no previous prototype for 'dump_backtrace_stm' arch/arm/kernel/unwind.c:40:6: error: no previous prototype for '__aeabi_unwind_cpp_pr0' arch/arm/kernel/unwind.c:45:6: error: no previous prototype for '__aeabi_unwind_cpp_pr1' arch/arm/kernel/unwind.c:50:6: error: no previous prototype for '__aeabi_unwind_cpp_pr2' arch/arm/mm/fault.c:554:1: error: no previous prototype for 'do_DataAbort' arch/arm/mm/fault.c:584:1: error: no previous prototype for 'do_PrefetchAbort' arch/arm/mm/proc-v7-bugs.c:280:6: error: no previous prototype for 'cpu_v7_ca8_ibe' arch/arm/mm/proc-v7-bugs.c:293:6: error: no previous prototype for 'cpu_v7_bugs_init' arch/arm/vdso/vgettimeofday.c:36:6: error: no previous prototype for '__aeabi_unwind_cpp_pr0' arch/arm/vdso/vgettimeofday.c:40:6: error: no previous prototype for '__aeabi_unwind_cpp_pr1' arch/arm/vdso/vgettimeofday.c:44:6: error: no previous prototype for '__aeabi_unwind_cpp_pr2' arch/arm/vfp/vfpmodule.c:323:6: error: no previous prototype for 'VFP_bounce' Add the prototypes anyway, to allow enabling this warning by default in the future. Reviewed-by: Kees Cook <keescook@chromium.org> Signed-off-by: Arnd Bergmann <arnd@arndb.de> Signed-off-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
56 lines
1.3 KiB
C
56 lines
1.3 KiB
C
/* SPDX-License-Identifier: GPL-2.0-only */
|
|
/*
|
|
* arch/arm/include/asm/unwind.h
|
|
*
|
|
* Copyright (C) 2008 ARM Limited
|
|
*/
|
|
|
|
#ifndef __ASM_UNWIND_H
|
|
#define __ASM_UNWIND_H
|
|
|
|
#ifndef __ASSEMBLY__
|
|
|
|
/* Unwind reason code according the the ARM EABI documents */
|
|
enum unwind_reason_code {
|
|
URC_OK = 0, /* operation completed successfully */
|
|
URC_CONTINUE_UNWIND = 8,
|
|
URC_FAILURE = 9 /* unspecified failure of some kind */
|
|
};
|
|
|
|
struct unwind_idx {
|
|
unsigned long addr_offset;
|
|
unsigned long insn;
|
|
};
|
|
|
|
struct unwind_table {
|
|
struct list_head list;
|
|
struct list_head mod_list;
|
|
const struct unwind_idx *start;
|
|
const struct unwind_idx *origin;
|
|
const struct unwind_idx *stop;
|
|
unsigned long begin_addr;
|
|
unsigned long end_addr;
|
|
};
|
|
|
|
extern struct unwind_table *unwind_table_add(unsigned long start,
|
|
unsigned long size,
|
|
unsigned long text_addr,
|
|
unsigned long text_size);
|
|
extern void unwind_table_del(struct unwind_table *tab);
|
|
extern void unwind_backtrace(struct pt_regs *regs, struct task_struct *tsk,
|
|
const char *loglvl);
|
|
|
|
void __aeabi_unwind_cpp_pr0(void);
|
|
void __aeabi_unwind_cpp_pr1(void);
|
|
void __aeabi_unwind_cpp_pr2(void);
|
|
|
|
#endif /* !__ASSEMBLY__ */
|
|
|
|
#ifdef CONFIG_ARM_UNWIND
|
|
#define UNWIND(code...) code
|
|
#else
|
|
#define UNWIND(code...)
|
|
#endif
|
|
|
|
#endif /* __ASM_UNWIND_H */
|