summaryrefslogtreecommitdiffstats
path: root/unit/gdb
blob: 0eedd63e991bf5ed6498d51a71a352ea6da11b34 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#!/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}"