Training courses

Kernel and Embedded Linux

Bootlin training courses

Embedded Linux, kernel,
Yocto Project, Buildroot, real-time,
graphics, boot time, debugging...

Bootlin logo

Elixir Cross Referencer

#!/bin/sh

# Copyright (C) Internet Systems Consortium, Inc. ("ISC")
#
# SPDX-License-Identifier: MPL-2.0
#
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0.  If a copy of the MPL was not distributed with this
# file, you can obtain one at https://mozilla.org/MPL/2.0/.
#
# See the COPYRIGHT file distributed with this work for additional
# information regarding copyright ownership.

# `kyua debug` command does not work with libtool (see
# https://github.com/jmmv/kyua/issues/207).  On some distributions `kyua debug`
# runs the first `gdb` it finds in $PATH, but on Debian and Ubuntu it looks for
# `/usr/bin/gdb`.  This script expects `gdb` to be moved to `gdb.orig` and
# executed from there.
coredump="$6"
binary=$(gdb.orig --batch --core="${coredump}" 2>/dev/null | sed -ne "s/Core was generated by \`\(.*\)'./\1/p")
# GDB 6.3 from OpenBSD 6.6 does not tell the full path of the broken binary.
# We need to fix it. Either the binary or it's libtool script will do.
if [ ! -e "${binary}" ]; then
       binary="$(find "${TOP}" -name "${binary}" | head -n 1)"
fi

# $TOP points to BIND sources and should be set on `kyua debug` invocation.
"${TOP}/libtool" --mode=execute gdb.orig \
	--batch \
	--command="${TOP}/bin/tests/system/run.gdb" \
	--core="${coredump}" \
	-- \
	"${binary}"