mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/chenhuacai/linux-loongson
synced 2025-09-01 15:14:52 +00:00

Some libc's like musl libc don't provide execinfo.h since it's not part of POSIX. In order to fix compilation on musl, only include execinfo.h if available (HAVE_BACKTRACE_SUPPORT) This was discovered withc104c16073
("Kunit to check the longest symbol length") which starts to include linux/kallsyms.h with Alpine Linux' configs. Link: https://lkml.kernel.org/r/20250622014608.448718-1-fossdd@pwned.life Fixes:c104c16073
("Kunit to check the longest symbol length") Signed-off-by: Achill Gilgenast <fossdd@pwned.life> Cc: Luis Henriques <luis@igalia.com> Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org> Cc: <stable@vger.kernel.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
39 lines
762 B
C
39 lines
762 B
C
/* SPDX-License-Identifier: GPL-2.0 */
|
|
#ifndef _LIBLOCKDEP_LINUX_KALLSYMS_H_
|
|
#define _LIBLOCKDEP_LINUX_KALLSYMS_H_
|
|
|
|
#include <linux/kernel.h>
|
|
#include <stdio.h>
|
|
#include <unistd.h>
|
|
|
|
#define KSYM_NAME_LEN 512
|
|
|
|
struct module;
|
|
|
|
static inline const char *kallsyms_lookup(unsigned long addr,
|
|
unsigned long *symbolsize,
|
|
unsigned long *offset,
|
|
char **modname, char *namebuf)
|
|
{
|
|
return NULL;
|
|
}
|
|
|
|
#ifdef HAVE_BACKTRACE_SUPPORT
|
|
#include <execinfo.h>
|
|
#include <stdlib.h>
|
|
static inline void print_ip_sym(const char *loglvl, unsigned long ip)
|
|
{
|
|
char **name;
|
|
|
|
name = backtrace_symbols((void **)&ip, 1);
|
|
|
|
dprintf(STDOUT_FILENO, "%s\n", *name);
|
|
|
|
free(name);
|
|
}
|
|
#else
|
|
static inline void print_ip_sym(const char *loglvl, unsigned long ip) {}
|
|
#endif
|
|
|
|
#endif
|