mirror of
https://gitee.com/bianbu-linux/linux-6.6
synced 2025-04-26 14:17:26 -04:00
elfcore: fix building with clang
kernel/elfcore.c only contains weak symbols, which triggers a bug with clang in combination with recordmcount: Cannot find symbol for section 2: .text. kernel/elfcore.o: failed Move the empty stubs into linux/elfcore.h as inline functions. As only two architectures use these, just use the architecture specific Kconfig symbols to key off the declaration. Link: https://lkml.kernel.org/r/20201204165742.3815221-2-arnd@kernel.org Signed-off-by: Arnd Bergmann <arnd@arndb.de> Cc: Nathan Chancellor <natechancellor@gmail.com> Cc: Nick Desaulniers <ndesaulniers@google.com> Cc: Barret Rhoden <brho@google.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
55d5b7dd64
commit
6e7b64b9dd
3 changed files with 22 additions and 27 deletions
|
@ -104,6 +104,7 @@ static inline int elf_core_copy_task_fpregs(struct task_struct *t, struct pt_reg
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if defined(CONFIG_UM) || defined(CONFIG_IA64)
|
||||||
/*
|
/*
|
||||||
* These functions parameterize elf_core_dump in fs/binfmt_elf.c to write out
|
* These functions parameterize elf_core_dump in fs/binfmt_elf.c to write out
|
||||||
* extra segments containing the gate DSO contents. Dumping its
|
* extra segments containing the gate DSO contents. Dumping its
|
||||||
|
@ -118,5 +119,26 @@ elf_core_write_extra_phdrs(struct coredump_params *cprm, loff_t offset);
|
||||||
extern int
|
extern int
|
||||||
elf_core_write_extra_data(struct coredump_params *cprm);
|
elf_core_write_extra_data(struct coredump_params *cprm);
|
||||||
extern size_t elf_core_extra_data_size(void);
|
extern size_t elf_core_extra_data_size(void);
|
||||||
|
#else
|
||||||
|
static inline Elf_Half elf_core_extra_phdrs(void)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline int elf_core_write_extra_phdrs(struct coredump_params *cprm, loff_t offset)
|
||||||
|
{
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline int elf_core_write_extra_data(struct coredump_params *cprm)
|
||||||
|
{
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline size_t elf_core_extra_data_size(void)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
#endif /* _LINUX_ELFCORE_H */
|
#endif /* _LINUX_ELFCORE_H */
|
||||||
|
|
|
@ -97,7 +97,6 @@ obj-$(CONFIG_TASK_DELAY_ACCT) += delayacct.o
|
||||||
obj-$(CONFIG_TASKSTATS) += taskstats.o tsacct.o
|
obj-$(CONFIG_TASKSTATS) += taskstats.o tsacct.o
|
||||||
obj-$(CONFIG_TRACEPOINTS) += tracepoint.o
|
obj-$(CONFIG_TRACEPOINTS) += tracepoint.o
|
||||||
obj-$(CONFIG_LATENCYTOP) += latencytop.o
|
obj-$(CONFIG_LATENCYTOP) += latencytop.o
|
||||||
obj-$(CONFIG_ELFCORE) += elfcore.o
|
|
||||||
obj-$(CONFIG_FUNCTION_TRACER) += trace/
|
obj-$(CONFIG_FUNCTION_TRACER) += trace/
|
||||||
obj-$(CONFIG_TRACING) += trace/
|
obj-$(CONFIG_TRACING) += trace/
|
||||||
obj-$(CONFIG_TRACE_CLOCK) += trace/
|
obj-$(CONFIG_TRACE_CLOCK) += trace/
|
||||||
|
|
|
@ -1,26 +0,0 @@
|
||||||
// SPDX-License-Identifier: GPL-2.0
|
|
||||||
#include <linux/elf.h>
|
|
||||||
#include <linux/fs.h>
|
|
||||||
#include <linux/mm.h>
|
|
||||||
#include <linux/binfmts.h>
|
|
||||||
#include <linux/elfcore.h>
|
|
||||||
|
|
||||||
Elf_Half __weak elf_core_extra_phdrs(void)
|
|
||||||
{
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
int __weak elf_core_write_extra_phdrs(struct coredump_params *cprm, loff_t offset)
|
|
||||||
{
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
int __weak elf_core_write_extra_data(struct coredump_params *cprm)
|
|
||||||
{
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
size_t __weak elf_core_extra_data_size(void)
|
|
||||||
{
|
|
||||||
return 0;
|
|
||||||
}
|
|
Loading…
Add table
Add a link
Reference in a new issue