Add backtrace functions for sandbox, including: - os_backtrace() to collect addresses into a caller-supplied buffer - os_backtrace_symbols() to convert addresses to symbol strings - os_backtrace_symbols_free() to free the symbol array The libbacktrace library (bundled with GCC) reads DWARF debug information to provide detailed symbol resolution including function names (even for static functions), source file paths, and line numbers. The sandbox backtrace implementation wraps these OS functions to implement the generic backtrace API (backtrace_init, backtrace_get_syms, etc.). Enable it for just the 'sandbox' board. Add the library for the Rust example too. Co-developed-by: Claude <noreply@anthropic.com> Signed-off-by: Simon Glass <simon.glass@canonical.com>
33 lines
986 B
Makefile
33 lines
986 B
Makefile
# SPDX-License-Identifier: GPL-2.0+
|
|
#
|
|
# Copyright (c) 2011 The Chromium OS Authors.
|
|
#
|
|
# (C) Copyright 2000-2003
|
|
# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
|
|
|
|
obj-y := cache.o cpu.o mem.o state.o os.o tty.o
|
|
ifdef CONFIG_FUZZ
|
|
obj-y += fuzz.o
|
|
else
|
|
obj-y += main.o
|
|
endif
|
|
extra-y := start.o
|
|
extra-$(CONFIG_SANDBOX_SDL) += sdl.o
|
|
obj-$(CONFIG_XPL_BUILD) += spl.o
|
|
obj-$(CONFIG_ETH_SANDBOX_RAW) += eth-raw-os.o
|
|
obj-$(CONFIG_BACKTRACE) += backtrace.o
|
|
|
|
# Compile these files with system headers
|
|
CFLAGS_USE_SYSHDRS := backtrace.o eth-raw-os.o fuzz.o main.o os.o sdl.o tty.o
|
|
|
|
# backtrace.c needs libbacktrace header from GCC
|
|
LIBBT_INC := $(dir $(shell $(CC) -print-file-name=include/backtrace.h))
|
|
CFLAGS_backtrace.o += -isystem $(LIBBT_INC)
|
|
|
|
# sdl.c fails to build with -fshort-wchar using musl
|
|
cmd_cc_sdl.o = $(CC) $(filter-out -nostdinc -fshort-wchar, \
|
|
$(patsubst -I%,-idirafter%,$(c_flags))) -fno-lto -c -o $@ $<
|
|
|
|
$(obj)/sdl.o: $(src)/sdl.c FORCE
|
|
$(call if_changed_dep,cc_sdl.o)
|