diff options
Diffstat (limited to 'unit/gdb')
-rwxr-xr-x | unit/gdb | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/unit/gdb b/unit/gdb new file mode 100755 index 0000000..0eedd63 --- /dev/null +++ b/unit/gdb @@ -0,0 +1,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}" |